Replace ItemInstance List with ItemInstance array.

This commit is contained in:
Bluzume 2021-10-26 01:50:32 -04:00
parent 0cad1e0fac
commit c1df5292ec
11 changed files with 56 additions and 35 deletions

View file

@ -42,15 +42,21 @@ Global
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|x86.ActiveCfg = Linux|x86 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|x86.ActiveCfg = Linux|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|x86.Build.0 = Linux|x86 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|x86.Build.0 = Linux|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|ARM.ActiveCfg = MacOS|ARM {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|ARM.ActiveCfg = MacOS|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|ARM.Build.0 = MacOS|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|ARM64.ActiveCfg = MacOS|ARM64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|ARM64.ActiveCfg = MacOS|ARM64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|ARM64.Build.0 = MacOS|ARM64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x64.ActiveCfg = MacOS|x64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x64.ActiveCfg = MacOS|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x64.Build.0 = MacOS|x64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x64.Build.0 = MacOS|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.ActiveCfg = MacOS|x86 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.ActiveCfg = MacOS|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.Build.0 = MacOS|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM.ActiveCfg = Windows|ARM {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM.ActiveCfg = Windows|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM.Build.0 = Windows|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM64.ActiveCfg = Windows|ARM64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM64.ActiveCfg = Windows|ARM64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM64.Build.0 = Windows|ARM64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x64.ActiveCfg = Windows|x64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x64.ActiveCfg = Windows|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x64.Build.0 = Windows|x64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x64.Build.0 = Windows|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.ActiveCfg = Windows|x86 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.ActiveCfg = Windows|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.Build.0 = Windows|x86
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

@ -55,7 +55,7 @@ namespace HISP.Game.Events
foreach (int itemId in Item.TradingCards) foreach (int itemId in Item.TradingCards)
if (client.LoggedinUser.Inventory.HasItemId(itemId)) if (client.LoggedinUser.Inventory.HasItemId(itemId))
totalCards += client.LoggedinUser.Inventory.GetItemByItemId(itemId).ItemInstances.Count; totalCards += client.LoggedinUser.Inventory.GetItemByItemId(itemId).ItemInstances.Length;
if (client.LoggedinUser.Inventory.HasItemId(Item.ColtTradingCard)) if (client.LoggedinUser.Inventory.HasItemId(Item.ColtTradingCard))
totalTypes++; totalTypes++;

View file

@ -8,14 +8,29 @@ namespace HISP.Game.Inventory
{ {
public InventoryItem() public InventoryItem()
{ {
ItemInstances = new List<ItemInstance>(); itemInstances = new List<ItemInstance>();
Infinite = false; Infinite = false;
ItemId = 0; ItemId = 0;
} }
public int ItemId; public int ItemId;
public bool Infinite; public bool Infinite;
public List<ItemInstance> ItemInstances; private List<ItemInstance> itemInstances;
public void RemoveItem(ItemInstance itm)
{
itemInstances.Remove(itm);
}
public void AddItem(ItemInstance itm)
{
itemInstances.Add(itm);
}
public ItemInstance[] ItemInstances
{
get
{
return itemInstances.ToArray();
}
}
} }
} }

View file

@ -42,7 +42,7 @@ namespace HISP.Game.Inventory
{ {
if (invetoryItem.ItemId == item.ItemId) if (invetoryItem.ItemId == item.ItemId)
{ {
invetoryItem.ItemInstances.Add(item); invetoryItem.AddItem(item);
return; return;
} }
} }
@ -50,7 +50,7 @@ namespace HISP.Game.Inventory
InventoryItem inventoryItem = new InventoryItem(); InventoryItem inventoryItem = new InventoryItem();
inventoryItem.ItemId = item.ItemId; inventoryItem.ItemId = item.ItemId;
inventoryItem.ItemInstances.Add(item); inventoryItem.AddItem(item);
inventoryItems.Add(inventoryItem); inventoryItems.Add(inventoryItem);
} }
@ -77,9 +77,9 @@ namespace HISP.Game.Inventory
{ {
if(instance.RandomId == item.RandomId) if(instance.RandomId == item.RandomId)
{ {
inventoryItem.ItemInstances.Remove(instance); inventoryItem.RemoveItem(instance);
if (inventoryItem.ItemInstances.Count <= 0) if (inventoryItem.ItemInstances.Length <= 0)
inventoryItems.Remove(inventoryItem); inventoryItems.Remove(inventoryItem);
return; return;
@ -162,7 +162,7 @@ namespace HISP.Game.Inventory
if(HasItemId(item.ItemId)) if(HasItemId(item.ItemId))
{ {
InventoryItem items = GetItemByItemId(item.ItemId); InventoryItem items = GetItemByItemId(item.ItemId);
if (items.ItemInstances.Count >= ConfigReader.MAX_STACK) if (items.ItemInstances.Length >= ConfigReader.MAX_STACK)
{ {
throw new InventoryMaxStackException(); throw new InventoryMaxStackException();
} }

View file

@ -42,7 +42,7 @@ namespace HISP.Game.Inventory
if (invetoryItem.Infinite) // no need to add +1, theres allready infinite quanity. if (invetoryItem.Infinite) // no need to add +1, theres allready infinite quanity.
return; return;
invetoryItem.ItemInstances.Add(item); invetoryItem.AddItem(item);
goto retrn; goto retrn;
} }
@ -52,7 +52,7 @@ namespace HISP.Game.Inventory
inventoryItem.ItemId = item.ItemId; inventoryItem.ItemId = item.ItemId;
inventoryItem.Infinite = false; inventoryItem.Infinite = false;
inventoryItem.ItemInstances.Add(item); inventoryItem.AddItem(item);
inventoryItems.Add(inventoryItem); inventoryItems.Add(inventoryItem);
retrn: retrn:
@ -74,7 +74,7 @@ namespace HISP.Game.Inventory
inventoryItem.Infinite = true; inventoryItem.Infinite = true;
for(int i = 0; i < 25; i++) // add 25 for(int i = 0; i < 25; i++) // add 25
inventoryItem.ItemInstances.Add(new ItemInstance(inventoryItem.ItemId)); inventoryItem.AddItem(new ItemInstance(inventoryItem.ItemId));
inventoryItems.Add(inventoryItem); inventoryItems.Add(inventoryItem);
} }
@ -155,16 +155,16 @@ namespace HISP.Game.Inventory
{ {
if (instance.RandomId == item.RandomId) if (instance.RandomId == item.RandomId)
{ {
inventoryItem.ItemInstances.Remove(instance); inventoryItem.RemoveItem(instance);
if (inventoryItem.ItemInstances.Count <= 0) if (inventoryItem.ItemInstances.Length <= 0)
inventoryItems.Remove(inventoryItem); inventoryItems.Remove(inventoryItem);
if (!inventoryItem.Infinite) // no need to bug the database. if (!inventoryItem.Infinite) // no need to bug the database.
Database.RemoveItemFromShopInventory(baseShop.Id, item); Database.RemoveItemFromShopInventory(baseShop.Id, item);
else else
inventoryItem.ItemInstances.Add(new ItemInstance(inventoryItem.ItemId)); // Gen new item in inventory to replace it. inventoryItem.AddItem(new ItemInstance(inventoryItem.ItemId)); // Gen new item in inventory to replace it.
return; return;
} }
} }

View file

@ -156,7 +156,7 @@ namespace HISP.Game
message += Messages.R1; message += Messages.R1;
Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId); Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
int count = item.ItemInstances.Count; int count = item.ItemInstances.Length;
string countStr = count.ToString(); string countStr = count.ToString();
if (item.Infinite) if (item.Infinite)
countStr = Messages.InfinitySign; countStr = Messages.InfinitySign;
@ -187,7 +187,7 @@ namespace HISP.Game
continue; continue;
int count = shopperitem.ItemInstances.Count; int count = shopperitem.ItemInstances.Length;
string countStr = count.ToString(); string countStr = count.ToString();
@ -214,7 +214,7 @@ namespace HISP.Game
else else
{ {
InventoryItem wishingCoins = user.Inventory.GetItemByItemId(Item.WishingCoin); InventoryItem wishingCoins = user.Inventory.GetItemByItemId(Item.WishingCoin);
int totalCoins = wishingCoins.ItemInstances.Count; int totalCoins = wishingCoins.ItemInstances.Length;
message += Messages.FormatNumberOfWishingCoins(totalCoins); message += Messages.FormatNumberOfWishingCoins(totalCoins);
message += Messages.WishingWellMeta; message += Messages.WishingWellMeta;
} }
@ -536,7 +536,7 @@ namespace HISP.Game
Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId); Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
if (itemInfo.Type == "QUEST" || itemInfo.Type == "TEXT" || itemInfo.Id == Item.DorothyShoes) if (itemInfo.Type == "QUEST" || itemInfo.Type == "TEXT" || itemInfo.Id == Item.DorothyShoes)
continue; continue;
message += Messages.FormatTradeOfferItem(itemInfo.IconId, itemInfo.Name, item.ItemInstances.Count, item.ItemId); message += Messages.FormatTradeOfferItem(itemInfo.IconId, itemInfo.Name, item.ItemInstances.Length, item.ItemId);
} }
} }
@ -2170,11 +2170,11 @@ namespace HISP.Game
{ {
Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId); Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
string title = itemInfo.Name; string title = itemInfo.Name;
if (item.ItemInstances.Count > 1 && itemInfo.PluralName != "") if (item.ItemInstances.Length > 1 && itemInfo.PluralName != "")
title = itemInfo.PluralName; title = itemInfo.PluralName;
message += Messages.FormatPlayerInventoryItemMeta(itemInfo.IconId, item.ItemInstances.Count, title); message += Messages.FormatPlayerInventoryItemMeta(itemInfo.IconId, item.ItemInstances.Length, title);
int randomId = item.ItemInstances[0].RandomId; int randomId = item.ItemInstances[0].RandomId;
if (itemInfo.Type != "QUEST" && itemInfo.Type != "TEXT" && !(itemInfo.Id == Item.DorothyShoes || itemInfo.Id == Item.Telescope) && World.CanDropItems(inv.BaseUser.X, inv.BaseUser.Y)) if (itemInfo.Type != "QUEST" && itemInfo.Type != "TEXT" && !(itemInfo.Id == Item.DorothyShoes || itemInfo.Id == Item.Telescope) && World.CanDropItems(inv.BaseUser.X, inv.BaseUser.Y))
@ -2220,7 +2220,7 @@ namespace HISP.Game
isHorseFood = (itemInfo.Effects[1].EffectsWhat == "MOOD" && itemInfo.Effects[0].EffectsWhat == "HUNGER"); isHorseFood = (itemInfo.Effects[1].EffectsWhat == "MOOD" && itemInfo.Effects[0].EffectsWhat == "HUNGER");
if (itemInfo.Type == "HORSEFOOD" || isHorseFood) if (itemInfo.Type == "HORSEFOOD" || isHorseFood)
{ {
message += Messages.FormatHorseFeedEntry(itemInfo.IconId, item.ItemInstances.Count, itemInfo.Name, item.ItemInstances[0].RandomId); message += Messages.FormatHorseFeedEntry(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, item.ItemInstances[0].RandomId);
} }
} }
@ -2257,7 +2257,7 @@ namespace HISP.Game
Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo(); Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
if(itemInfo.Type == "COMPANION") if(itemInfo.Type == "COMPANION")
{ {
message += Messages.FormatHorseCompanionOption(itemInfo.IconId, item.ItemInstances.Count, itemInfo.Name, item.ItemId); message += Messages.FormatHorseCompanionOption(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, item.ItemId);
} }
} }
message += Messages.BackToHorse; message += Messages.BackToHorse;
@ -2519,7 +2519,7 @@ namespace HISP.Game
continue; continue;
else if (itemInfo.GetMiscFlag(2) != 0) else if (itemInfo.GetMiscFlag(2) != 0)
continue; continue;
message += Messages.FormatHorseEquip(itemInfo.IconId, item.ItemInstances.Count, itemInfo.Name, itemInfo.Id); message += Messages.FormatHorseEquip(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, itemInfo.Id);
} }
} }

View file

@ -163,7 +163,7 @@ namespace HISP.Game
InventoryItem[] items = user.Inventory.GetItemList(); InventoryItem[] items = user.Inventory.GetItemList();
foreach (InventoryItem item in items) foreach (InventoryItem item in items)
{ {
if (item.ItemId == itemInfo.ItemId && item.ItemInstances.Count >= itemInfo.Quantity) if (item.ItemId == itemInfo.ItemId && item.ItemInstances.Length >= itemInfo.Quantity)
{ {
hasThisItem = true; hasThisItem = true;
break; break;

View file

@ -96,7 +96,7 @@ namespace HISP.Game
User user = GameServer.GetUserById(Id); User user = GameServer.GetUserById(Id);
user.OwnedRanch = null; user.OwnedRanch = null;
InventoryItem items = user.Inventory.GetItemByItemId(Item.DorothyShoes); InventoryItem items = user.Inventory.GetItemByItemId(Item.DorothyShoes);
foreach (ItemInstance itm in items.ItemInstances.ToArray()) foreach (ItemInstance itm in items.ItemInstances)
{ {
user.Inventory.Remove(itm); user.Inventory.Remove(itm);
} }

View file

@ -135,7 +135,7 @@ namespace HISP.Player
if (Trader.Inventory.HasItemId(inst[0].ItemId)) if (Trader.Inventory.HasItemId(inst[0].ItemId))
{ {
InventoryItem items = Trader.Inventory.GetItemByItemId(inst[0].ItemId); InventoryItem items = Trader.Inventory.GetItemByItemId(inst[0].ItemId);
if (items.ItemInstances.Count + inst.Length >= ConfigReader.MAX_STACK) if (items.ItemInstances.Length + inst.Length >= ConfigReader.MAX_STACK)
{ {
itemYouFail = true; itemYouFail = true;
} }
@ -155,7 +155,7 @@ namespace HISP.Player
if (OtherTrade.Trader.Inventory.HasItemId(inst[0].ItemId)) if (OtherTrade.Trader.Inventory.HasItemId(inst[0].ItemId))
{ {
InventoryItem items = OtherTrade.Trader.Inventory.GetItemByItemId(inst[0].ItemId); InventoryItem items = OtherTrade.Trader.Inventory.GetItemByItemId(inst[0].ItemId);
if (items.ItemInstances.Count + inst.Length >= ConfigReader.MAX_STACK) if (items.ItemInstances.Length + inst.Length >= ConfigReader.MAX_STACK)
{ {
itemOtherFail = true; itemOtherFail = true;
} }

View file

@ -1 +1 @@
80b1cdea1957c5471347f46cf8bb541e2abf1ca1 0cad1e0fac960fe59b55444cf1f0fd423d2e4951

View file

@ -511,7 +511,7 @@ namespace HISP.Server
sender.LoggedinUser.TradeMenuPriority = true; sender.LoggedinUser.TradeMenuPriority = true;
sender.LoggedinUser.AttemptingToOfferItem = itemId; sender.LoggedinUser.AttemptingToOfferItem = itemId;
InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(itemId); InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
byte[] addItemPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAddItem(item.ItemInstances.Count)); byte[] addItemPacket = PacketBuilder.CreateMetaPacket(Meta.BuildTradeAddItem(item.ItemInstances.Length));
sender.SendPacket(addItemPacket); sender.SendPacket(addItemPacket);
break; break;
@ -2369,9 +2369,9 @@ namespace HISP.Server
sender.SendPacket(MustBeAtleast1); sender.SendPacket(MustBeAtleast1);
break; break;
} }
if(itemCount > item.ItemInstances.Count) if(itemCount > item.ItemInstances.Length)
{ {
byte[] TooMuchItems = PacketBuilder.CreateChat(Messages.FormatTradeItemOfferTooMuch(item.ItemInstances.Count, itemCount), PacketBuilder.CHAT_BOTTOM_RIGHT); byte[] TooMuchItems = PacketBuilder.CreateChat(Messages.FormatTradeItemOfferTooMuch(item.ItemInstances.Length, itemCount), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(TooMuchItems); sender.SendPacket(TooMuchItems);
break; break;
} }
@ -6650,7 +6650,7 @@ namespace HISP.Server
{ {
if (sender.LoggedinUser.Inventory.HasItemId(reqItem.RequiredItemId)) if (sender.LoggedinUser.Inventory.HasItemId(reqItem.RequiredItemId))
{ {
if (sender.LoggedinUser.Inventory.GetItemByItemId(reqItem.RequiredItemId).ItemInstances.Count < reqItem.RequiredItemCount) if (sender.LoggedinUser.Inventory.GetItemByItemId(reqItem.RequiredItemId).ItemInstances.Length < reqItem.RequiredItemCount)
goto failMissingItem; goto failMissingItem;
} }
else else
@ -6752,7 +6752,7 @@ namespace HISP.Server
} }
invItem = sender.LoggedinUser.Inventory.GetItemByItemId(itemId); invItem = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
totalSold = invItem.ItemInstances.Count; totalSold = invItem.ItemInstances.Length;
message = 2; message = 2;
goto doSell; goto doSell;
doSell:; doSell:;
@ -6926,7 +6926,7 @@ namespace HISP.Server
} }
if (shop.Inventory.HasItemId(itemId)) if (shop.Inventory.HasItemId(itemId))
{ {
if (shop.Inventory.GetItemByItemId(itemId).ItemInstances.Count < count) if (shop.Inventory.GetItemByItemId(itemId).ItemInstances.Length < count)
{ {
Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy more of an item than is in stock."); Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy more of an item than is in stock.");
break; break;
@ -6937,7 +6937,7 @@ namespace HISP.Server
if (sender.LoggedinUser.Inventory.HasItemId(itemId)) if (sender.LoggedinUser.Inventory.HasItemId(itemId))
{ {
InventoryItem items = sender.LoggedinUser.Inventory.GetItemByItemId(itemId); InventoryItem items = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
if (items.ItemInstances.Count + count > ConfigReader.MAX_STACK) if (items.ItemInstances.Length + count > ConfigReader.MAX_STACK)
{ {
goto showError; goto showError;
} }