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.Build.0 = Linux|x86
{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.Build.0 = MacOS|ARM64
{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|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.Build.0 = Windows|ARM
{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.Build.0 = Windows|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.ActiveCfg = Windows|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.Build.0 = Windows|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View file

@ -55,7 +55,7 @@ namespace HISP.Game.Events
foreach (int itemId in Item.TradingCards)
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))
totalTypes++;

View file

@ -8,14 +8,29 @@ namespace HISP.Game.Inventory
{
public InventoryItem()
{
ItemInstances = new List<ItemInstance>();
itemInstances = new List<ItemInstance>();
Infinite = false;
ItemId = 0;
}
public int ItemId;
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)
{
invetoryItem.ItemInstances.Add(item);
invetoryItem.AddItem(item);
return;
}
}
@ -50,7 +50,7 @@ namespace HISP.Game.Inventory
InventoryItem inventoryItem = new InventoryItem();
inventoryItem.ItemId = item.ItemId;
inventoryItem.ItemInstances.Add(item);
inventoryItem.AddItem(item);
inventoryItems.Add(inventoryItem);
}
@ -77,9 +77,9 @@ namespace HISP.Game.Inventory
{
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);
return;
@ -162,7 +162,7 @@ namespace HISP.Game.Inventory
if(HasItemId(item.ItemId))
{
InventoryItem items = GetItemByItemId(item.ItemId);
if (items.ItemInstances.Count >= ConfigReader.MAX_STACK)
if (items.ItemInstances.Length >= ConfigReader.MAX_STACK)
{
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.
return;
invetoryItem.ItemInstances.Add(item);
invetoryItem.AddItem(item);
goto retrn;
}
@ -52,7 +52,7 @@ namespace HISP.Game.Inventory
inventoryItem.ItemId = item.ItemId;
inventoryItem.Infinite = false;
inventoryItem.ItemInstances.Add(item);
inventoryItem.AddItem(item);
inventoryItems.Add(inventoryItem);
retrn:
@ -74,7 +74,7 @@ namespace HISP.Game.Inventory
inventoryItem.Infinite = true;
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);
}
@ -155,16 +155,16 @@ namespace HISP.Game.Inventory
{
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);
if (!inventoryItem.Infinite) // no need to bug the database.
Database.RemoveItemFromShopInventory(baseShop.Id, item);
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;
}
}

View file

@ -156,7 +156,7 @@ namespace HISP.Game
message += Messages.R1;
Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
int count = item.ItemInstances.Count;
int count = item.ItemInstances.Length;
string countStr = count.ToString();
if (item.Infinite)
countStr = Messages.InfinitySign;
@ -187,7 +187,7 @@ namespace HISP.Game
continue;
int count = shopperitem.ItemInstances.Count;
int count = shopperitem.ItemInstances.Length;
string countStr = count.ToString();
@ -214,7 +214,7 @@ namespace HISP.Game
else
{
InventoryItem wishingCoins = user.Inventory.GetItemByItemId(Item.WishingCoin);
int totalCoins = wishingCoins.ItemInstances.Count;
int totalCoins = wishingCoins.ItemInstances.Length;
message += Messages.FormatNumberOfWishingCoins(totalCoins);
message += Messages.WishingWellMeta;
}
@ -536,7 +536,7 @@ namespace HISP.Game
Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
if (itemInfo.Type == "QUEST" || itemInfo.Type == "TEXT" || itemInfo.Id == Item.DorothyShoes)
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);
string title = itemInfo.Name;
if (item.ItemInstances.Count > 1 && itemInfo.PluralName != "")
if (item.ItemInstances.Length > 1 && 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;
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");
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();
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;
@ -2519,7 +2519,7 @@ namespace HISP.Game
continue;
else if (itemInfo.GetMiscFlag(2) != 0)
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();
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;
break;

View file

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

View file

@ -135,7 +135,7 @@ namespace HISP.Player
if (Trader.Inventory.HasItemId(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;
}
@ -155,7 +155,7 @@ namespace HISP.Player
if (OtherTrade.Trader.Inventory.HasItemId(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;
}

View file

@ -1 +1 @@
80b1cdea1957c5471347f46cf8bb541e2abf1ca1
0cad1e0fac960fe59b55444cf1f0fd423d2e4951

View file

@ -511,7 +511,7 @@ namespace HISP.Server
sender.LoggedinUser.TradeMenuPriority = true;
sender.LoggedinUser.AttemptingToOfferItem = 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);
break;
@ -2369,9 +2369,9 @@ namespace HISP.Server
sender.SendPacket(MustBeAtleast1);
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);
break;
}
@ -6650,7 +6650,7 @@ namespace HISP.Server
{
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;
}
else
@ -6752,7 +6752,7 @@ namespace HISP.Server
}
invItem = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
totalSold = invItem.ItemInstances.Count;
totalSold = invItem.ItemInstances.Length;
message = 2;
goto doSell;
doSell:;
@ -6926,7 +6926,7 @@ namespace HISP.Server
}
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.");
break;
@ -6937,7 +6937,7 @@ namespace HISP.Server
if (sender.LoggedinUser.Inventory.HasItemId(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;
}