Refactored inventory system
This commit is contained in:
@@ -58,7 +58,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
|
|
||||||
if(iItem is IUsableItem usableItemObj)
|
if(iItem is IUsableItem usableItemObj)
|
||||||
{
|
{
|
||||||
usableItemObj.Use(eatItem, player);
|
usableItemObj.Use(eatItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,5 +30,13 @@ namespace reallife_gamemode.Server.Entities
|
|||||||
|
|
||||||
public int Amount { get; set; }
|
public int Amount { get; set; }
|
||||||
public int Slot { get; set; }
|
public int Slot { get; set; }
|
||||||
|
|
||||||
|
public User GetUser()
|
||||||
|
{
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
return dbContext.Users.FirstOrDefault(u => u.Id == UserId);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,8 +12,8 @@ using System.Text;
|
|||||||
|
|
||||||
namespace reallife_gamemode.Server.Inventory.Interfaces
|
namespace reallife_gamemode.Server.Inventory.Interfaces
|
||||||
{
|
{
|
||||||
public interface IDroppableItem : IUsableItem
|
public interface IDroppableItem : IItem
|
||||||
{
|
{
|
||||||
void Drop(UserItem uItem, Client player, int amount);
|
uint Object { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,5 @@ namespace reallife_gamemode.Server.Inventory.Interfaces
|
|||||||
string Description { get; }
|
string Description { get; }
|
||||||
int Gewicht { get; }
|
int Gewicht { get; }
|
||||||
string Einheit { get; }
|
string Einheit { get; }
|
||||||
uint Object { get; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ namespace reallife_gamemode.Server.Inventory.Interfaces
|
|||||||
{
|
{
|
||||||
public interface IUsableItem : IItem
|
public interface IUsableItem : IItem
|
||||||
{
|
{
|
||||||
void Use(UserItem uItem, Client player);
|
void Use(UserItem uItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ using System.Text;
|
|||||||
|
|
||||||
namespace reallife_gamemode.Server.Inventory.Items
|
namespace reallife_gamemode.Server.Inventory.Items
|
||||||
{
|
{
|
||||||
public class Cheeseburger : DropItem
|
public class Cheeseburger : FoodItem
|
||||||
{
|
{
|
||||||
public override int Id => 2;
|
public override int Id => 2;
|
||||||
public override string Name => "Cheeseburger";
|
public override string Name => "Cheeseburger";
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ using System.Text;
|
|||||||
|
|
||||||
namespace reallife_gamemode.Server.Inventory.Items
|
namespace reallife_gamemode.Server.Inventory.Items
|
||||||
{
|
{
|
||||||
public class Chickenburger : DropItem, FoodItem
|
public class Chickenburger : FoodItem
|
||||||
{
|
{
|
||||||
public override int Id => 3;
|
public override int Id => 3;
|
||||||
public override string Name => "Chickenburger";
|
public override string Name => "Chickenburger";
|
||||||
|
|||||||
@@ -19,9 +19,17 @@ namespace reallife_gamemode.Server.Inventory.Items
|
|||||||
public abstract string Einheit { get; }
|
public abstract string Einheit { get; }
|
||||||
public abstract uint Object { get; }
|
public abstract uint Object { get; }
|
||||||
|
|
||||||
public void Use(UserItem uItem, Client player)
|
public void Use(UserItem uItem)
|
||||||
{
|
{
|
||||||
player.Health += HpAmount;
|
Client player = uItem.GetUser().GetClient();
|
||||||
|
|
||||||
|
int amountToAdd = HpAmount;
|
||||||
|
if(player.Health + amountToAdd > 100)
|
||||||
|
{
|
||||||
|
amountToAdd = 100 - player.Health;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.Health += amountToAdd;
|
||||||
player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false);
|
player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false);
|
||||||
InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1);
|
InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ using System.Text;
|
|||||||
|
|
||||||
namespace reallife_gamemode.Server.Inventory.Items
|
namespace reallife_gamemode.Server.Inventory.Items
|
||||||
{
|
{
|
||||||
public class Hamburger : DropItem
|
public class Hamburger : FoodItem
|
||||||
{
|
{
|
||||||
public override int Id => 1;
|
public override int Id => 1;
|
||||||
public override string Name => "Hamburger";
|
public override string Name => "Hamburger";
|
||||||
|
|||||||
@@ -11,14 +11,13 @@ using System.Text;
|
|||||||
|
|
||||||
namespace reallife_gamemode.Server.Inventory.Items
|
namespace reallife_gamemode.Server.Inventory.Items
|
||||||
{
|
{
|
||||||
public class Holz : DropItem
|
public class Holz : IDroppableItem
|
||||||
{
|
{
|
||||||
public override int Id => 4;
|
public int Id => 4;
|
||||||
public override string Name => "Holz";
|
public string Name => "Holz";
|
||||||
public override string Description => "Ich und mein Holz.";
|
public string Description => "Ich und mein Holz.";
|
||||||
public override int Gewicht => 1000;
|
public int Gewicht => 1000;
|
||||||
public override string Einheit => "g";
|
public string Einheit => "g";
|
||||||
public override int HpAmount => 20;
|
public uint Object => 1805779401;
|
||||||
public override uint Object => 1805779401;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,21 +226,19 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
using (var context = new DatabaseContext())
|
using (var context = new DatabaseContext())
|
||||||
{
|
{
|
||||||
UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(itemId));
|
UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(itemId));
|
||||||
IItem iItem = InventoryManager.GetItemById(fItem.ItemId);
|
IItem iItem = GetItemById(fItem.ItemId);
|
||||||
|
|
||||||
List<UserItem> itemList = player.GetUser().GetItems();
|
|
||||||
UserItem userItem = itemList.FirstOrDefault(i => i.ItemId == iItem.Id);
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case "use":
|
case "use":
|
||||||
|
player.SendChatMessage("use item: " + iItem.Name);
|
||||||
if (iItem == null)
|
if (iItem == null)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("Dieses Essen existiert nicht.");
|
player.SendChatMessage("Dieses Essen existiert nicht.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userItem == null)
|
if (fItem == null)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("Du hast dieses Item nicht");
|
player.SendChatMessage("Du hast dieses Item nicht");
|
||||||
return;
|
return;
|
||||||
@@ -248,9 +246,10 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
|
|
||||||
if (iItem is IUsableItem usableItemObj)
|
if (iItem is IUsableItem usableItemObj)
|
||||||
{
|
{
|
||||||
usableItemObj.Use(userItem, player);
|
usableItemObj.Use(fItem);
|
||||||
player.TriggerEvent("removeItem", itemId, amount);
|
player.TriggerEvent("removeItem", itemId, amount);
|
||||||
}
|
}
|
||||||
|
else player.SendChatMessage("not useable");
|
||||||
break;
|
break;
|
||||||
case "drop":
|
case "drop":
|
||||||
|
|
||||||
@@ -260,17 +259,18 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userItem == null)
|
if (fItem == null)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("Du hast dieses Item nicht");
|
player.SendChatMessage("Du hast dieses Item nicht");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iItem is IUsableItem usableItemObj2)
|
if (iItem is IDroppableItem usableItemObj2)
|
||||||
{
|
{
|
||||||
Random r = new Random();
|
Random r = new Random();
|
||||||
//fItem.Amount -= amount;
|
NAPI.Object.CreateObject(3777723516, new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8), new Vector3(0, 0, r.Next(0, 360)), 0);
|
||||||
usableItemObj2.Drop(userItem, player);
|
NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.6), 5, 0.5f, 4, new Color(255, 255, 255), false, 0);
|
||||||
|
fItem.Amount -= amount;
|
||||||
player.TriggerEvent("removeItem", itemId, amount);
|
player.TriggerEvent("removeItem", itemId, amount);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user