mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-07 13:45:42 +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.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<DroppedItem> droppedItemsList = new List<DroppedItem>();
|
||||
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<DroppedItem> items = new List<DroppedItem>();
|
||||
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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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.");
|
||||
|
|
Loading…
Add table
Reference in a new issue