using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SOTF_Struct.Generic; namespace SOTF_Struct.Data { public class PlayerInventory_QuickSelect { public string Version { get; set; } public List Slots { get; set; } } public class PlayerInventory { public string Version { get; set; } public PlayerInventory_QuickSelect QuickSelect { get; set; } public List EquippedItems { get; set; } public ItemInstance ItemInstanceManagerData { get; set; } public bool HasItem(int ItemID) { if (ItemInstanceManagerData == null) return false; if (ItemInstanceManagerData.ItemBlocks == null) return false; if (ItemInstanceManagerData.ItemBlocks.Count == 0) return false; foreach (ItemBlock itm in ItemInstanceManagerData.ItemBlocks) if (itm.ItemId == ItemID) return itm.TotalCount > 0; return false; } public bool HasItem(int[] ItemID) { if (ItemID.Length == 0) return false; if (ItemInstanceManagerData == null) return false; if (ItemInstanceManagerData.ItemBlocks == null) return false; if (ItemInstanceManagerData.ItemBlocks.Count == 0) return false; foreach (ItemBlock itm in ItemInstanceManagerData.ItemBlocks) if (ItemID.Contains(itm.ItemId)) return itm.TotalCount > 0; return false; } public bool HasItem(List ItemID) { if (ItemID.Count == 0) return false; if (ItemInstanceManagerData == null) return false; if (ItemInstanceManagerData.ItemBlocks == null) return false; if (ItemInstanceManagerData.ItemBlocks.Count == 0) return false; foreach (ItemBlock itm in ItemInstanceManagerData.ItemBlocks) if (ItemID.Contains(itm.ItemId)) return itm.TotalCount > 0; return false; } public int GetItemCount(int ItemID) { if (ItemInstanceManagerData == null) return 0; if (ItemInstanceManagerData.ItemBlocks == null) return 0; if (ItemInstanceManagerData.ItemBlocks.Count == 0) return 0; foreach (ItemBlock itm in ItemInstanceManagerData.ItemBlocks) if (itm.ItemId == ItemID) return itm.TotalCount; return 0; } public void RemoveItem(int ItemID) { for (int i = ItemInstanceManagerData.ItemBlocks.Count()-1; i >= 0; i--) if (ItemInstanceManagerData.ItemBlocks[i].ItemId == ItemID) ItemInstanceManagerData.ItemBlocks.RemoveAt(i); } public void RemoveItem(int[] ItemID) { for (int i = ItemInstanceManagerData.ItemBlocks.Count() - 1; i >= 0; i--) if (ItemID.Contains(ItemInstanceManagerData.ItemBlocks[i].ItemId)) ItemInstanceManagerData.ItemBlocks.RemoveAt(i); } public void RemoveItem(List ItemID) { for (int i = ItemInstanceManagerData.ItemBlocks.Count() - 1; i >= 0; i--) if (ItemID.Contains(ItemInstanceManagerData.ItemBlocks[i].ItemId)) ItemInstanceManagerData.ItemBlocks.RemoveAt(i); } public void AddItem(int ItemID, Module[] Modules) { AddItem(ItemID, 1, Modules); } public void AddItem(int ItemID, int[] Modules) { AddItem(ItemID, 1, Modules); } public void AddItem(int ItemID, int Count, Module[] Modules) { System.Diagnostics.Debug.WriteLine("AddItem(" + ItemID.ToString() + ", " + Count.ToString() + ", Module[" + (Modules == null ? "null" : Modules.Length) + "])"); for (int i = 0, c = ItemInstanceManagerData.ItemBlocks.Count(); i < c; i++) if (ItemInstanceManagerData.ItemBlocks[i].ItemId == ItemID) { System.Diagnostics.Debug.WriteLine("- Item Found, Count: " + ItemInstanceManagerData.ItemBlocks[i].TotalCount); if (Modules != null && Modules.Length > 0) if (ItemInstanceManagerData.ItemBlocks[i].TotalCount > Count) { // remove some slots of this item System.Diagnostics.Debug.WriteLine("- Remove " + (ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count - Count).ToString() + " Items"); for (int j = Count; j < ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count; j++) if (ItemInstanceManagerData.ItemBlocks[i].UniqueItems[j] != null) ItemInstanceManagerData.ItemBlocks[i].UniqueItems.RemoveAt(j); } else if (ItemInstanceManagerData.ItemBlocks[i].TotalCount < Count) { // Add some items System.Diagnostics.Debug.WriteLine("- Add " + (Count - ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count).ToString() + " Items"); for (int j = ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count; j < Count; j++) { UniqueItem u = new UniqueItem(); u.Modules.AddRange(Modules); ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Add(u); } } ItemInstanceManagerData.ItemBlocks[i].TotalCount = Count; return; } System.Diagnostics.Debug.WriteLine("- Add New"); ItemBlock blk = new ItemBlock(); blk.ItemId = ItemID; blk.TotalCount = Count; blk.UniqueItems = new List(); if (Modules != null && Modules.Length > 0) for (int i = 0; i < blk.TotalCount; i++) { UniqueItem u = new UniqueItem(); u.Modules.AddRange(Modules); blk.UniqueItems.Add(u); } ItemInstanceManagerData.ItemBlocks.Add(blk); } public void AddItem(int ItemID, int Count, int[] Modules) { /*for (int i = 0, c = this.ItemInstanceManagerData.ItemBlocks.Count(); i < c; i++) { if (this.ItemInstanceManagerData.ItemBlocks[i].ItemId == ItemID) { return; } }*/ System.Diagnostics.Debug.WriteLine("AddItem(" + ItemID.ToString() + ", " + Count.ToString() + ", int[" + (Modules == null ? "null" : Modules.Length) + "])"); for (int i = 0, c = ItemInstanceManagerData.ItemBlocks.Count(); i < c; i++) if (ItemInstanceManagerData.ItemBlocks[i].ItemId == ItemID) { System.Diagnostics.Debug.WriteLine("- Item Found, Count: " + ItemInstanceManagerData.ItemBlocks[i].TotalCount); if (Modules != null && Modules.Length > 0) if (ItemInstanceManagerData.ItemBlocks[i].TotalCount > Count) { // remove some slots of this item System.Diagnostics.Debug.WriteLine("- Remove " + (ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count - Count).ToString() + " Items"); for (int j = Count; j < ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count; j++) if (ItemInstanceManagerData.ItemBlocks[i].UniqueItems[j] != null) ItemInstanceManagerData.ItemBlocks[i].UniqueItems.RemoveAt(j); } else if (ItemInstanceManagerData.ItemBlocks[i].TotalCount < Count) { // Add some items System.Diagnostics.Debug.WriteLine("- Add " + (Count - ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count).ToString() + " Items"); for (int j = ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Count; j < Count; j++) { UniqueItem u = new UniqueItem(); for (int k = 0; k < Modules.Length; k++) if (Modules[k] == 0) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_0)); else if (Modules[k] == 1) System.Diagnostics.Debug.WriteLine("Module_1 not defined for Item: " + ItemID); //u.Modules.Add(SOTFSave.Module.CreateModule(Module.eModuleType.Module_1)); else if (Modules[k] == 2) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_2)); else if (Modules[k] == 3) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_3)); else if (Modules[k] == 4) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_4)); else if (Modules[k] == 5) System.Diagnostics.Debug.WriteLine("Module_5 not defined for Item: " + ItemID); //u.Modules.Add(SOTFSave.Module.CreateModule(Module.eModuleType.Module_5)); else if (Modules[k] == 6) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_6)); else if (Modules[k] == 7) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_7)); ItemInstanceManagerData.ItemBlocks[i].UniqueItems.Add(u); } } ItemInstanceManagerData.ItemBlocks[i].TotalCount = Count; return; } System.Diagnostics.Debug.WriteLine("- Add New"); ItemBlock blk = new ItemBlock(); blk.ItemId = ItemID; blk.TotalCount = Count; blk.UniqueItems = new List(); if (Modules != null && Modules.Length > 0) for (int i = 0; i < blk.TotalCount; i++) { UniqueItem u = new UniqueItem(); for (int j = 0; j < Modules.Length; j++) if (Modules[j] == 0) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_0)); else if (Modules[j] == 1) System.Diagnostics.Debug.WriteLine("Module_1 not defined for Item: " + ItemID); //u.Modules.Add(SOTFSave.Module.CreateModule(Module.eModuleType.Module_1)); else if (Modules[j] == 2) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_2)); else if (Modules[j] == 3) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_3)); else if (Modules[j] == 4) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_4)); else if (Modules[j] == 5) System.Diagnostics.Debug.WriteLine("Module_5 not defined for Item: " + ItemID); //u.Modules.Add(SOTFSave.Module.CreateModule(Module.eModuleType.Module_5)); else if (Modules[j] == 6) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_6)); else if (Modules[j] == 7) u.Modules.Add(Module.CreateModule(Module.eModuleType.Module_7)); blk.UniqueItems.Add(u); } ItemInstanceManagerData.ItemBlocks.Add(blk); } } }