diff --git a/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs b/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs index e4bebcc..16d1e0b 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Items/DroppedItems.cs @@ -1,35 +1,34 @@ using System; using System.Collections.Generic; using HISP.Server; -using HISP.Game; namespace HISP.Game.Items { public class DroppedItems { - public struct DroppedItem + public class DroppedItem { + public DroppedItem(ItemInstance itmInstance) + { + if (itmInstance == null) + throw new NullReferenceException("How could this happen?"); + Instance = itmInstance; + } public int X; public int Y; public int DespawnTimer; - public ItemInstance instance; + public ItemInstance Instance; } private static int epoch = 0; private static List droppedItemsList = new List(); public static int GetCountOfItem(Item.ItemInformation item) { - DroppedItem[] dropedItems = droppedItemsList.ToArray(); + DroppedItem[] droppedItems = droppedItemsList.ToArray(); int count = 0; - foreach(DroppedItem droppedItem in dropedItems) + foreach(DroppedItem droppedItem in droppedItems) { - if (droppedItem.instance == null) - { - RemoveDroppedItem(droppedItem); - continue; - } - - if(droppedItem.instance.ItemId == item.Id) + if(droppedItem.Instance.ItemId == item.Id) { count++; } @@ -40,9 +39,9 @@ namespace HISP.Game.Items public static DroppedItem[] GetItemsAt(int x, int y) { - DroppedItem[] dropedItems = droppedItemsList.ToArray(); + DroppedItem[] droppedItems = droppedItemsList.ToArray(); List items = new List(); - foreach(DroppedItem droppedItem in dropedItems) + foreach(DroppedItem droppedItem in droppedItems) { if(droppedItem.X == x && droppedItem.Y == y) { @@ -67,7 +66,7 @@ namespace HISP.Game.Items } public static void RemoveDroppedItem(DroppedItem item) { - int randomId = item.instance.RandomId; + int randomId = item.Instance.RandomId; Database.RemoveDroppedItem(randomId); droppedItemsList.Remove(item); @@ -89,11 +88,11 @@ namespace HISP.Game.Items public static DroppedItem GetDroppedItemById(int randomId) { - DroppedItem[] dropedItems = droppedItemsList.ToArray(); + DroppedItem[] droppedItems = droppedItemsList.ToArray(); - foreach (DroppedItem item in dropedItems) + foreach (DroppedItem item in droppedItems) { - if(item.instance.RandomId == randomId) + if(item.Instance.RandomId == randomId) { return item; } @@ -122,14 +121,14 @@ namespace HISP.Game.Items epoch = new_epoch; } - public static void AddItem(ItemInstance item, int x, int y) + public static void AddItem(ItemInstance item, int x, int y, int despawnTimer=1500) { - DroppedItem droppedItem = new DroppedItem(); + DroppedItem droppedItem = new DroppedItem(item); droppedItem.X = x; droppedItem.Y = y; - droppedItem.DespawnTimer = 1500; - droppedItem.instance = item; + droppedItem.DespawnTimer = despawnTimer; droppedItemsList.Add(droppedItem); + Database.AddDroppedItem(droppedItem); } public static void GenerateItems() { @@ -173,14 +172,8 @@ namespace HISP.Game.Items continue; ItemInstance instance = new ItemInstance(item.Id); - DroppedItem droppedItem = new DroppedItem(); - droppedItem.X = tryX; - droppedItem.Y = tryY; - droppedItem.DespawnTimer = despawnTimer; - droppedItem.instance = instance; - droppedItemsList.Add(droppedItem); - Database.AddDroppedItem(droppedItem); - Logger.DebugPrint("Created Item ID: " + instance.ItemId + " in ZONE: " + spawnArea.Name + " at: X: " + droppedItem.X + " Y: " + droppedItem.Y); + AddItem(instance, tryX, tryY, despawnTimer); + Logger.DebugPrint("Created Item ID: " + instance.ItemId + " in ZONE: " + spawnArea.Name + " at: X: " + tryX + " Y: " + tryY); newItems++; break; } @@ -210,14 +203,8 @@ namespace HISP.Game.Items continue; ItemInstance instance = new ItemInstance(item.Id); - DroppedItem droppedItem = new DroppedItem(); - droppedItem.X = spawnOn.X; - droppedItem.Y = spawnOn.Y; - droppedItem.DespawnTimer = despawnTimer; - droppedItem.instance = instance; - droppedItemsList.Add(droppedItem); - Database.AddDroppedItem(droppedItem); - Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + droppedItem.X + " Y: " + droppedItem.Y); + AddItem(instance, spawnOn.X, spawnOn.Y, despawnTimer); + Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + spawnOn.X + " Y: " + spawnOn.Y); newItems++; break; } @@ -273,15 +260,9 @@ namespace HISP.Game.Items if (GetItemsAt(tryX, tryY).Length > 25) // Max here continue; - ItemInstance instance = new ItemInstance(item.Id); - DroppedItem droppedItem = new DroppedItem(); - droppedItem.X = tryX; - droppedItem.Y = tryY; - droppedItem.DespawnTimer = despawnTimer; - droppedItem.instance = instance; - droppedItemsList.Add(droppedItem); - Database.AddDroppedItem(droppedItem); - Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + droppedItem.X + " Y: " + droppedItem.Y); + ItemInstance instance = new ItemInstance(item.Id); + AddItem(instance, tryX, tryY, despawnTimer); + Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + tryX + " Y: " + tryY); newItems++; break; } @@ -315,14 +296,8 @@ namespace HISP.Game.Items continue; ItemInstance instance = new ItemInstance(item.Id); - DroppedItem droppedItem = new DroppedItem(); - droppedItem.X = tryX; - droppedItem.Y = tryY; - droppedItem.DespawnTimer = despawnTimer; - droppedItem.instance = instance; - droppedItemsList.Add(droppedItem); - Database.AddDroppedItem(droppedItem); - Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + droppedItem.X + " Y: " + droppedItem.Y); + AddItem(instance, tryX, tryY, despawnTimer); + Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + tryX + " Y: " + tryY); newItems++; break; diff --git a/Horse Isle Server/HorseIsleServer/Game/Meta.cs b/Horse Isle Server/HorseIsleServer/Game/Meta.cs index a2d63a1..8663cf9 100755 --- a/Horse Isle Server/HorseIsleServer/Game/Meta.cs +++ b/Horse Isle Server/HorseIsleServer/Game/Meta.cs @@ -183,8 +183,8 @@ namespace HISP.Game message += Messages.ItemsOnGroundMessage; foreach(DroppedItems.DroppedItem item in Items) { - Item.ItemInformation itemInfo = item.instance.GetItemInfo(); - message += Messages.FormatGrabItemMessage(itemInfo.Name, item.instance.RandomId, itemInfo.IconId); + Item.ItemInformation itemInfo = item.Instance.GetItemInfo(); + message += Messages.FormatGrabItemMessage(itemInfo.Name, item.Instance.RandomId, itemInfo.IconId); } if(Items.Length > 1) message += Messages.GrabAllItemsButton; diff --git a/Horse Isle Server/HorseIsleServer/Server/Database.cs b/Horse Isle Server/HorseIsleServer/Server/Database.cs index 81f8479..4ae4801 100755 --- a/Horse Isle Server/HorseIsleServer/Server/Database.cs +++ b/Horse Isle Server/HorseIsleServer/Server/Database.cs @@ -2679,12 +2679,11 @@ namespace HISP.Server MySqlDataReader reader = sqlCommand.ExecuteReader(); while(reader.Read()) { - DroppedItems.DroppedItem droppedItem = new DroppedItems.DroppedItem(); + ItemInstance instance = new ItemInstance(reader.GetInt32(3), reader.GetInt32(2)); + DroppedItems.DroppedItem droppedItem = new DroppedItems.DroppedItem(instance); droppedItem.X = reader.GetInt32(0); droppedItem.Y = reader.GetInt32(1); droppedItem.DespawnTimer = reader.GetInt32(4); - ItemInstance instance = new ItemInstance(reader.GetInt32(3),reader.GetInt32(2)); - droppedItem.instance = instance; itemList.Add(droppedItem); } sqlCommand.Dispose(); @@ -2704,8 +2703,8 @@ namespace HISP.Server sqlCommand.CommandText = "INSERT INTO DroppedItems VALUES(@x, @y, @randomId, @itemId, @despawnTimer)"; sqlCommand.Parameters.AddWithValue("@x", item.X); sqlCommand.Parameters.AddWithValue("@y", item.Y); - sqlCommand.Parameters.AddWithValue("@randomId", item.instance.RandomId); - sqlCommand.Parameters.AddWithValue("@itemId", item.instance.ItemId); + sqlCommand.Parameters.AddWithValue("@randomId", item.Instance.RandomId); + sqlCommand.Parameters.AddWithValue("@itemId", item.Instance.ItemId); sqlCommand.Parameters.AddWithValue("@despawnTimer", item.DespawnTimer); sqlCommand.Prepare(); sqlCommand.ExecuteNonQuery(); diff --git a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs index 0e83785..a5f0fe8 100755 --- a/Horse Isle Server/HorseIsleServer/Server/GameServer.cs +++ b/Horse Isle Server/HorseIsleServer/Server/GameServer.cs @@ -2937,7 +2937,7 @@ namespace HISP.Server { foreach (DroppedItems.DroppedItem item in droppedItems) { - sender.LoggedinUser.Inventory.Add(item.instance); + sender.LoggedinUser.Inventory.Add(item.Instance); DroppedItems.RemoveDroppedItem(item); } } @@ -2973,7 +2973,7 @@ namespace HISP.Server DroppedItems.DroppedItem item = DroppedItems.GetDroppedItemById(randomId); try { - sender.LoggedinUser.Inventory.Add(item.instance); + sender.LoggedinUser.Inventory.Add(item.Instance); } catch (InventoryException) { @@ -3683,7 +3683,7 @@ namespace HISP.Server if (sender.LoggedinUser.Inventory.HasItem(value)) itemId = sender.LoggedinUser.Inventory.GetItemByRandomid(value).ItemId; else if (DroppedItems.IsDroppedItemExist(value)) - itemId = DroppedItems.GetDroppedItemById(value).instance.ItemId; + itemId = DroppedItems.GetDroppedItemById(value).Instance.ItemId; if (itemId == -1) { Logger.HackerPrint(sender.LoggedinUser.Username + " asked for details of non existiant item.");