Finish Inventory-Backend

This commit is contained in:
VegaZ
2018-12-10 21:27:16 +01:00
parent f783a889c7
commit e10f89ea69
3 changed files with 57 additions and 27 deletions

View File

@@ -1,4 +1,6 @@
using GTANetworkAPI;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using reallife_gamemode.Model;
using reallife_gamemode.Server.Commands;
using reallife_gamemode.Server.Entities;
@@ -100,46 +102,72 @@ namespace reallife_gamemode.Server.Managers
}
[RemoteEvent("saveInventory")]
public void SavePlayerInteroy(Client player, string[][] itemArray)
public void SavePlayerInventory(Client player, string itemArray)
{
var user = player.GetUser();
string[][] items = new string[itemArray.Length][];
List<UserItem> userItems = new List<UserItem>();
var user = player.GetUser();
var items = JsonConvert.DeserializeObject<string[][]>(itemArray);
//player.SendChatMessage(items);
using (var context = new DatabaseContext())
{
foreach (var item in items)
for (var i = 0; i < items.Length; i++)
{
UserItem cItem = new UserItem
{
Amount = int.Parse(item[3]),
ItemId = GetItemByName(item[0]).Id,
Amount = int.Parse(items[i][3]),
ItemId = GetItemByName(items[i][0]).Id,
UserId = user.Id,
Slot = int.Parse(item[4]),
Slot = int.Parse(items[i][4]),
};
if (item[5] == "-1")
if (int.Parse(items[i][5]) == -1)
{
player.SendChatMessage("Item hinzugefügt");
context.Add(cItem);
context.UserItems.Add(cItem);
}
else if(cItem.Slot == -1)
else if (cItem.Slot == -1)
{
player.SendChatMessage("Item gelöscht");
UserItem fItem = context.UserItems.FirstOrDefault(i => i.Id == int.Parse(item[5]));
userItems.Remove(fItem);
UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(items[i][5]));
context.UserItems.Remove(fItem);
}
else
{
player.SendChatMessage("Item geändert");
UserItem fItem = context.UserItems.FirstOrDefault(i => i.Id == int.Parse(item[5]));
UserItem fItem = context.UserItems.FirstOrDefault(j => j.Id == int.Parse(items[i][5]));
fItem.Amount = cItem.Amount;
fItem.Slot = cItem.Slot;
}
}
}
context.SaveChanges();
}
}
}
public static void AddItemToInventory(Client player, UserItem item)
{
var user = player.GetUser();
using (var context = new DatabaseContext())
{
List <UserItem> allItemsByUser = context.UserItems.ToList().FindAll(i => i.UserId == user.Id);
var slotArr = Enumerable.Range(1, 20).ToList();
allItemsByUser.ForEach(allItem =>
{
if (slotArr.Contains(allItem.Slot)) slotArr.Remove(allItem.Slot);
});
int newSlot = slotArr.Min();
item.Slot = newSlot;
context.UserItems.Add(item);
context.SaveChanges();
IItem iItem = GetItemById(item.ItemId);
string[] newItem = new string[] { iItem.Name, iItem.Description, iItem.Gewicht.ToString(), item.Amount.ToString(), newSlot.ToString(), item.Id.ToString()};
player.TriggerEvent("addItem", newItem);
}
}
}
}