mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-12 07:59:48 +12:00
cleanup dropped items code.
This commit is contained in:
parent
92c35eb4b9
commit
92aa2dd51a
4 changed files with 39 additions and 65 deletions
|
@ -1,35 +1,34 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using HISP.Server;
|
using HISP.Server;
|
||||||
using HISP.Game;
|
|
||||||
|
|
||||||
namespace HISP.Game.Items
|
namespace HISP.Game.Items
|
||||||
{
|
{
|
||||||
public class DroppedItems
|
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 X;
|
||||||
public int Y;
|
public int Y;
|
||||||
public int DespawnTimer;
|
public int DespawnTimer;
|
||||||
public ItemInstance instance;
|
public ItemInstance Instance;
|
||||||
}
|
}
|
||||||
private static int epoch = 0;
|
private static int epoch = 0;
|
||||||
private static List<DroppedItem> droppedItemsList = new List<DroppedItem>();
|
private static List<DroppedItem> droppedItemsList = new List<DroppedItem>();
|
||||||
public static int GetCountOfItem(Item.ItemInformation item)
|
public static int GetCountOfItem(Item.ItemInformation item)
|
||||||
{
|
{
|
||||||
|
|
||||||
DroppedItem[] dropedItems = droppedItemsList.ToArray();
|
DroppedItem[] droppedItems = droppedItemsList.ToArray();
|
||||||
int count = 0;
|
int count = 0;
|
||||||
foreach(DroppedItem droppedItem in dropedItems)
|
foreach(DroppedItem droppedItem in droppedItems)
|
||||||
{
|
{
|
||||||
if (droppedItem.instance == null)
|
if(droppedItem.Instance.ItemId == item.Id)
|
||||||
{
|
|
||||||
RemoveDroppedItem(droppedItem);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(droppedItem.instance.ItemId == item.Id)
|
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
@ -40,9 +39,9 @@ namespace HISP.Game.Items
|
||||||
public static DroppedItem[] GetItemsAt(int x, int y)
|
public static DroppedItem[] GetItemsAt(int x, int y)
|
||||||
{
|
{
|
||||||
|
|
||||||
DroppedItem[] dropedItems = droppedItemsList.ToArray();
|
DroppedItem[] droppedItems = droppedItemsList.ToArray();
|
||||||
List<DroppedItem> items = new List<DroppedItem>();
|
List<DroppedItem> items = new List<DroppedItem>();
|
||||||
foreach(DroppedItem droppedItem in dropedItems)
|
foreach(DroppedItem droppedItem in droppedItems)
|
||||||
{
|
{
|
||||||
if(droppedItem.X == x && droppedItem.Y == y)
|
if(droppedItem.X == x && droppedItem.Y == y)
|
||||||
{
|
{
|
||||||
|
@ -67,7 +66,7 @@ namespace HISP.Game.Items
|
||||||
}
|
}
|
||||||
public static void RemoveDroppedItem(DroppedItem item)
|
public static void RemoveDroppedItem(DroppedItem item)
|
||||||
{
|
{
|
||||||
int randomId = item.instance.RandomId;
|
int randomId = item.Instance.RandomId;
|
||||||
Database.RemoveDroppedItem(randomId);
|
Database.RemoveDroppedItem(randomId);
|
||||||
droppedItemsList.Remove(item);
|
droppedItemsList.Remove(item);
|
||||||
|
|
||||||
|
@ -89,11 +88,11 @@ namespace HISP.Game.Items
|
||||||
public static DroppedItem GetDroppedItemById(int randomId)
|
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;
|
return item;
|
||||||
}
|
}
|
||||||
|
@ -122,14 +121,14 @@ namespace HISP.Game.Items
|
||||||
epoch = new_epoch;
|
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.X = x;
|
||||||
droppedItem.Y = y;
|
droppedItem.Y = y;
|
||||||
droppedItem.DespawnTimer = 1500;
|
droppedItem.DespawnTimer = despawnTimer;
|
||||||
droppedItem.instance = item;
|
|
||||||
droppedItemsList.Add(droppedItem);
|
droppedItemsList.Add(droppedItem);
|
||||||
|
Database.AddDroppedItem(droppedItem);
|
||||||
}
|
}
|
||||||
public static void GenerateItems()
|
public static void GenerateItems()
|
||||||
{
|
{
|
||||||
|
@ -173,14 +172,8 @@ namespace HISP.Game.Items
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ItemInstance instance = new ItemInstance(item.Id);
|
ItemInstance instance = new ItemInstance(item.Id);
|
||||||
DroppedItem droppedItem = new DroppedItem();
|
AddItem(instance, tryX, tryY, despawnTimer);
|
||||||
droppedItem.X = tryX;
|
Logger.DebugPrint("Created Item ID: " + instance.ItemId + " in ZONE: " + spawnArea.Name + " at: X: " + tryX + " Y: " + tryY);
|
||||||
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);
|
|
||||||
newItems++;
|
newItems++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -210,14 +203,8 @@ namespace HISP.Game.Items
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ItemInstance instance = new ItemInstance(item.Id);
|
ItemInstance instance = new ItemInstance(item.Id);
|
||||||
DroppedItem droppedItem = new DroppedItem();
|
AddItem(instance, spawnOn.X, spawnOn.Y, despawnTimer);
|
||||||
droppedItem.X = spawnOn.X;
|
Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + spawnOn.X + " Y: " + spawnOn.Y);
|
||||||
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);
|
|
||||||
newItems++;
|
newItems++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -273,15 +260,9 @@ namespace HISP.Game.Items
|
||||||
if (GetItemsAt(tryX, tryY).Length > 25) // Max here
|
if (GetItemsAt(tryX, tryY).Length > 25) // Max here
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ItemInstance instance = new ItemInstance(item.Id);
|
ItemInstance instance = new ItemInstance(item.Id);
|
||||||
DroppedItem droppedItem = new DroppedItem();
|
AddItem(instance, tryX, tryY, despawnTimer);
|
||||||
droppedItem.X = tryX;
|
Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + tryX + " Y: " + tryY);
|
||||||
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);
|
|
||||||
newItems++;
|
newItems++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -315,14 +296,8 @@ namespace HISP.Game.Items
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ItemInstance instance = new ItemInstance(item.Id);
|
ItemInstance instance = new ItemInstance(item.Id);
|
||||||
DroppedItem droppedItem = new DroppedItem();
|
AddItem(instance, tryX, tryY, despawnTimer);
|
||||||
droppedItem.X = tryX;
|
Logger.DebugPrint("Created Item ID: " + instance.ItemId + " at: X: " + tryX + " Y: " + tryY);
|
||||||
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);
|
|
||||||
newItems++;
|
newItems++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -183,8 +183,8 @@ namespace HISP.Game
|
||||||
message += Messages.ItemsOnGroundMessage;
|
message += Messages.ItemsOnGroundMessage;
|
||||||
foreach(DroppedItems.DroppedItem item in Items)
|
foreach(DroppedItems.DroppedItem item in Items)
|
||||||
{
|
{
|
||||||
Item.ItemInformation itemInfo = item.instance.GetItemInfo();
|
Item.ItemInformation itemInfo = item.Instance.GetItemInfo();
|
||||||
message += Messages.FormatGrabItemMessage(itemInfo.Name, item.instance.RandomId, itemInfo.IconId);
|
message += Messages.FormatGrabItemMessage(itemInfo.Name, item.Instance.RandomId, itemInfo.IconId);
|
||||||
}
|
}
|
||||||
if(Items.Length > 1)
|
if(Items.Length > 1)
|
||||||
message += Messages.GrabAllItemsButton;
|
message += Messages.GrabAllItemsButton;
|
||||||
|
|
|
@ -2679,12 +2679,11 @@ namespace HISP.Server
|
||||||
MySqlDataReader reader = sqlCommand.ExecuteReader();
|
MySqlDataReader reader = sqlCommand.ExecuteReader();
|
||||||
while(reader.Read())
|
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.X = reader.GetInt32(0);
|
||||||
droppedItem.Y = reader.GetInt32(1);
|
droppedItem.Y = reader.GetInt32(1);
|
||||||
droppedItem.DespawnTimer = reader.GetInt32(4);
|
droppedItem.DespawnTimer = reader.GetInt32(4);
|
||||||
ItemInstance instance = new ItemInstance(reader.GetInt32(3),reader.GetInt32(2));
|
|
||||||
droppedItem.instance = instance;
|
|
||||||
itemList.Add(droppedItem);
|
itemList.Add(droppedItem);
|
||||||
}
|
}
|
||||||
sqlCommand.Dispose();
|
sqlCommand.Dispose();
|
||||||
|
@ -2704,8 +2703,8 @@ namespace HISP.Server
|
||||||
sqlCommand.CommandText = "INSERT INTO DroppedItems VALUES(@x, @y, @randomId, @itemId, @despawnTimer)";
|
sqlCommand.CommandText = "INSERT INTO DroppedItems VALUES(@x, @y, @randomId, @itemId, @despawnTimer)";
|
||||||
sqlCommand.Parameters.AddWithValue("@x", item.X);
|
sqlCommand.Parameters.AddWithValue("@x", item.X);
|
||||||
sqlCommand.Parameters.AddWithValue("@y", item.Y);
|
sqlCommand.Parameters.AddWithValue("@y", item.Y);
|
||||||
sqlCommand.Parameters.AddWithValue("@randomId", item.instance.RandomId);
|
sqlCommand.Parameters.AddWithValue("@randomId", item.Instance.RandomId);
|
||||||
sqlCommand.Parameters.AddWithValue("@itemId", item.instance.ItemId);
|
sqlCommand.Parameters.AddWithValue("@itemId", item.Instance.ItemId);
|
||||||
sqlCommand.Parameters.AddWithValue("@despawnTimer", item.DespawnTimer);
|
sqlCommand.Parameters.AddWithValue("@despawnTimer", item.DespawnTimer);
|
||||||
sqlCommand.Prepare();
|
sqlCommand.Prepare();
|
||||||
sqlCommand.ExecuteNonQuery();
|
sqlCommand.ExecuteNonQuery();
|
||||||
|
|
|
@ -2937,7 +2937,7 @@ namespace HISP.Server
|
||||||
{
|
{
|
||||||
foreach (DroppedItems.DroppedItem item in droppedItems)
|
foreach (DroppedItems.DroppedItem item in droppedItems)
|
||||||
{
|
{
|
||||||
sender.LoggedinUser.Inventory.Add(item.instance);
|
sender.LoggedinUser.Inventory.Add(item.Instance);
|
||||||
DroppedItems.RemoveDroppedItem(item);
|
DroppedItems.RemoveDroppedItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2973,7 +2973,7 @@ namespace HISP.Server
|
||||||
DroppedItems.DroppedItem item = DroppedItems.GetDroppedItemById(randomId);
|
DroppedItems.DroppedItem item = DroppedItems.GetDroppedItemById(randomId);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
sender.LoggedinUser.Inventory.Add(item.instance);
|
sender.LoggedinUser.Inventory.Add(item.Instance);
|
||||||
}
|
}
|
||||||
catch (InventoryException)
|
catch (InventoryException)
|
||||||
{
|
{
|
||||||
|
@ -3683,7 +3683,7 @@ namespace HISP.Server
|
||||||
if (sender.LoggedinUser.Inventory.HasItem(value))
|
if (sender.LoggedinUser.Inventory.HasItem(value))
|
||||||
itemId = sender.LoggedinUser.Inventory.GetItemByRandomid(value).ItemId;
|
itemId = sender.LoggedinUser.Inventory.GetItemByRandomid(value).ItemId;
|
||||||
else if (DroppedItems.IsDroppedItemExist(value))
|
else if (DroppedItems.IsDroppedItemExist(value))
|
||||||
itemId = DroppedItems.GetDroppedItemById(value).instance.ItemId;
|
itemId = DroppedItems.GetDroppedItemById(value).Instance.ItemId;
|
||||||
if (itemId == -1)
|
if (itemId == -1)
|
||||||
{
|
{
|
||||||
Logger.HackerPrint(sender.LoggedinUser.Username + " asked for details of non existiant item.");
|
Logger.HackerPrint(sender.LoggedinUser.Username + " asked for details of non existiant item.");
|
||||||
|
|
Loading…
Add table
Reference in a new issue