diff --git a/Horse Isle Server/Horse Isle Server/Game/IInventory.cs b/Horse Isle Server/Horse Isle Server/Game/IInventory.cs deleted file mode 100644 index 2aa84ed..0000000 --- a/Horse Isle Server/Horse Isle Server/Game/IInventory.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; - - -namespace HISP.Game -{ - - interface IInventory - { - - void Add(ItemInstance item); - void Remove(ItemInstance item); - int Count - { - get; - } - - InventoryItem[] GetItemList(); - - - bool HasItem(int randomId); - bool HasItemId(int itemId); - - InventoryItem GetItemByItemId(int itemId); - - InventoryItem GetItemByRandomid(int randomId); - - - } -} diff --git a/Horse Isle Server/Horse Isle Server/Game/InventoryItem.cs b/Horse Isle Server/Horse Isle Server/Game/InventoryItem.cs deleted file mode 100644 index 2e7e132..0000000 --- a/Horse Isle Server/Horse Isle Server/Game/InventoryItem.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace HISP.Game -{ - class InventoryItem - { - public InventoryItem() - { - ItemInstances = new List(); - Infinite = false; - ItemId = 0; - } - - public int ItemId; - public bool Infinite; - public List ItemInstances; - } - -} diff --git a/Horse Isle Server/Horse Isle Server/Game/Messages.cs b/Horse Isle Server/Horse Isle Server/Game/Messages.cs index 043c7be..3cc1c45 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Messages.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Messages.cs @@ -172,7 +172,7 @@ namespace HISP.Game { return ShopBuy25Button.Replace("%ITEMID%", itemId.ToString()); } - public static string ForamtSellButton(int randomId) + public static string FormatSellButton(int randomId) { return SellButton.Replace("%RANDOMID%", randomId.ToString()); } diff --git a/Horse Isle Server/Horse Isle Server/Game/Meta.cs b/Horse Isle Server/Horse Isle Server/Game/Meta.cs index af319be..ed2372b 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Meta.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Meta.cs @@ -74,11 +74,12 @@ namespace HISP.Game return playersNearby; } - private static string buildShopInfo(Shop shop) + private static string buildShopInfo(Shop shop, IInventory shopperInventory) { string message = ""; InventoryItem[] itemList = shop.Inventory.GetItemList(); + // Get shops stock message += Messages.ThingsIAmSelling; foreach (InventoryItem item in itemList) { @@ -102,6 +103,32 @@ namespace HISP.Game message += Messages.FormatItemInformationByIdButton(itemInfo.Id); } + + // Check whats avalilble to be sold + message += "^R1" + Messages.ThingsYouSellMe; + InventoryItem[] shopperItemList = shopperInventory.GetItemList(); + + foreach(InventoryItem shopperitem in shopperItemList) + { + Item.ItemInformation itemInfo = Item.GetItemById(shopperitem.ItemId); + + // Prevent items that cannot be sold to this shopkeeper. + if (!shop.CanSell(itemInfo)) + continue; + + + int count = shopperitem.ItemInstances.Count; + string countStr = count.ToString(); + + + message += "^R1"; + message += Messages.FormatShopEntry(itemInfo.IconId, countStr, itemInfo.Name, shop.CalculateSellCost(itemInfo)); + message += Messages.FormatSellButton(shopperitem.ItemInstances[0].RandomId); + message += Messages.FormatSellAllButton(itemInfo.Id); + message += Messages.FormatItemInformationButton(shopperitem.ItemInstances[0].RandomId); + } + + message += "^R1" + Messages.ExitThisPlace; return message; } @@ -237,7 +264,7 @@ namespace HISP.Game int ShopID = int.Parse(TileArg); Shop shop = Shop.GetShopById(ShopID); user.LastShoppedAt = shop; - message += buildShopInfo(shop); + message += buildShopInfo(shop,user.Inventory); } } diff --git a/Horse Isle Server/Horse Isle Server/Game/Shop.cs b/Horse Isle Server/Horse Isle Server/Game/Shop.cs index 7eec1c7..7abd9df 100644 --- a/Horse Isle Server/Horse Isle Server/Game/Shop.cs +++ b/Horse Isle Server/Horse Isle Server/Game/Shop.cs @@ -31,11 +31,11 @@ namespace HISP.Game public int CalculateBuyCost(Item.ItemInformation item) { - return Math.Abs(item.SellPrice * (100 / BuyPricePercentage)); + return (int)Math.Floor((float)item.SellPrice * (100.0 / (float)BuyPricePercentage)); } public int CalculateSellCost(Item.ItemInformation item) { - return Math.Abs(item.SellPrice * (100 / SellPricePercentage)); + return (int)Math.Floor((float)item.SellPrice * (100.0 / (float)SellPricePercentage)); } public bool CanSell(Item.ItemInformation item) diff --git a/Horse Isle Server/Horse Isle Server/Game/ShopInventory.cs b/Horse Isle Server/Horse Isle Server/Game/ShopInventory.cs deleted file mode 100644 index ba04df7..0000000 --- a/Horse Isle Server/Horse Isle Server/Game/ShopInventory.cs +++ /dev/null @@ -1,161 +0,0 @@ -using HISP.Server; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace HISP.Game -{ - class ShopInventory : IInventory - { - private Shop baseShop; - private List inventoryItems; - public int Count - { - get - { - return inventoryItems.Count; - } - } - public ShopInventory(Shop shopkeeper) - { - baseShop = shopkeeper; - - ItemInstance[] instances = Database.GetShopInventory(baseShop.Id).ToArray(); - inventoryItems = new List(); - - foreach (ItemInstance instance in instances) - { - addItem(instance, false); - } - } - - private void addItem(ItemInstance item, bool addToDatabase) - { - if (addToDatabase) - Database.AddItemToInventory(baseShop.Id, item); - - foreach (InventoryItem invetoryItem in inventoryItems) - { - if (invetoryItem.ItemId == item.ItemId) - { - invetoryItem.ItemInstances.Add(item); - return; - } - } - - InventoryItem inventoryItem = new InventoryItem(); - - inventoryItem.ItemId = item.ItemId; - inventoryItem.Infinite = false; - inventoryItem.ItemInstances.Add(item); - inventoryItems.Add(inventoryItem); - } - - public void AddInfinity(Item.ItemInformation itemInfo) - { - InventoryItem inventoryItem = new InventoryItem(); - inventoryItem.ItemId = itemInfo.Id; - inventoryItem.Infinite = true; - - for(int i = 0; i < 25; i++) // add 25 - inventoryItem.ItemInstances.Add(new ItemInstance(inventoryItem.ItemId)); - - inventoryItems.Add(inventoryItem); - } - public void Add(ItemInstance item) - { - addItem(item, true); - } - - public InventoryItem GetItemByItemId(int itemId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - if (item.ItemId == itemId) - { - return item; - } - } - throw new KeyNotFoundException("id: " + itemId + " not found in shop inventory"); - } - - public InventoryItem GetItemByRandomid(int randomId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - ItemInstance[] instances = item.ItemInstances.ToArray(); - foreach (ItemInstance instance in instances) - { - if (instance.RandomId == randomId) - return item; - } - } - throw new KeyNotFoundException("random id: " + randomId + " not found in shop inventory"); - } - public InventoryItem[] GetItemList() - { - return inventoryItems.OrderBy(o => o.ItemInstances[0].GetItemInfo().SortBy).OrderBy(o => o.Infinite).ToArray(); - } - - public bool HasItem(int randomId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - ItemInstance[] instances = item.ItemInstances.ToArray(); - foreach (ItemInstance instance in instances) - { - if (instance.RandomId == randomId) - return true; - } - } - return false; - } - - public bool HasItemId(int itemId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - if (item.ItemId == itemId) - { - return true; - } - } - return false; - } - - - public void Remove(ItemInstance item) - { - - foreach (InventoryItem inventoryItem in inventoryItems) - { - if (item.ItemId == inventoryItem.ItemId) - { - foreach (ItemInstance instance in inventoryItem.ItemInstances) - { - if (instance.RandomId == item.RandomId) - { - inventoryItem.ItemInstances.Remove(instance); - - if (inventoryItem.ItemInstances.Count <= 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. - return; - } - } - } - } - - Logger.ErrorPrint("Tried to remove item : " + item.RandomId + " from inventory when it was not in it"); - } - } -} diff --git a/Horse Isle Server/Horse Isle Server/Horse Isle Server.csproj b/Horse Isle Server/Horse Isle Server/Horse Isle Server.csproj index 9313cdd..2be96f4 100644 --- a/Horse Isle Server/Horse Isle Server/Horse Isle Server.csproj +++ b/Horse Isle Server/Horse Isle Server/Horse Isle Server.csproj @@ -73,10 +73,10 @@ - + - + True True @@ -89,7 +89,7 @@ - + @@ -102,7 +102,7 @@ - + diff --git a/Horse Isle Server/Horse Isle Server/Player/PlayerInventory.cs b/Horse Isle Server/Horse Isle Server/Player/PlayerInventory.cs deleted file mode 100644 index 24f47ad..0000000 --- a/Horse Isle Server/Horse Isle Server/Player/PlayerInventory.cs +++ /dev/null @@ -1,173 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using HISP.Game; -using HISP.Server; - -namespace HISP.Player -{ - - class PlayerInventory : IInventory - { - - - public User BaseUser; - private List inventoryItems; - public PlayerInventory(User forUser) - { - inventoryItems = new List(); - - BaseUser = forUser; - ItemInstance[] instances = Database.GetPlayerInventory(BaseUser.Id).ToArray(); - foreach(ItemInstance instance in instances) - { - addItem(instance, false); - } - } - - public int Count - { - get - { - return inventoryItems.Count; - } - } - private void addItem(ItemInstance item, bool addToDatabase) - { - if (addToDatabase) - Database.AddItemToInventory(BaseUser.Id, item); - - foreach (InventoryItem invetoryItem in inventoryItems) - { - if (invetoryItem.ItemId == item.ItemId) - { - invetoryItem.ItemInstances.Add(item); - return; - } - } - - InventoryItem inventoryItem = new InventoryItem(); - - inventoryItem.ItemId = item.ItemId; - inventoryItem.ItemInstances.Add(item); - inventoryItems.Add(inventoryItem); - } - - - - - public InventoryItem[] GetItemList() - { - return inventoryItems.OrderBy(o => o.ItemInstances[0].GetItemInfo().SortBy).ToArray(); - } - - - - public void Remove(ItemInstance item) - { - - Database.RemoveItemFromInventory(BaseUser.Id, item); - - foreach (InventoryItem inventoryItem in inventoryItems) - { - if(item.ItemId == inventoryItem.ItemId) - { - foreach(ItemInstance instance in inventoryItem.ItemInstances) - { - if(instance.RandomId == item.RandomId) - { - inventoryItem.ItemInstances.Remove(instance); - - if (inventoryItem.ItemInstances.Count <= 0) - inventoryItems.Remove(inventoryItem); - - return; - } - } - } - } - - Logger.ErrorPrint("Tried to remove item : " + item.RandomId + " from inventory when it was not in it"); - } - - public bool HasItem(int randomId) - { - InventoryItem[] items = GetItemList(); - foreach(InventoryItem item in items) - { - ItemInstance[] instances = item.ItemInstances.ToArray(); - foreach(ItemInstance instance in instances) - { - if (instance.RandomId == randomId) - return true; - } - } - return false; - } - - public bool HasItemId(int itemId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - if (item.ItemId == itemId) - { - return true; - } - } - return false; - } - - - public InventoryItem GetItemByItemId(int itemId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - if (item.ItemId == itemId) - { - return item; - } - } - throw new KeyNotFoundException("id: " + itemId + " not found in inventory"); - } - - public InventoryItem GetItemByRandomid(int randomId) - { - InventoryItem[] items = GetItemList(); - foreach (InventoryItem item in items) - { - ItemInstance[] instances = item.ItemInstances.ToArray(); - foreach (ItemInstance instance in instances) - { - if (instance.RandomId == randomId) - return item; - } - } - throw new KeyNotFoundException("random id: " + randomId + " not found in inventory"); - } - - public void AddIgnoringFull(ItemInstance item) - { - addItem(item, true); - } - public void Add(ItemInstance item) - { - // Check if has max allready - if(HasItemId(item.ItemId)) - { - InventoryItem items = GetItemByItemId(item.ItemId); - if (items.ItemInstances.Count >= ConfigReader.MAX_STACK) - { - throw new InventoryMaxStackException(); - } - else if (Count >= Messages.DefaultInventoryMax) - { - throw new InventoryFullException(); - } - } - - - addItem(item, true); - } - } -}