Renamed the "Item" object to InventoryItem. Began writing the Item object that will be used to store game data items.

This commit is contained in:
Filip Maj
2016-02-21 14:06:23 -05:00
parent c2f0b9d999
commit d2ac603efa
17 changed files with 400 additions and 142 deletions

View File

@@ -1,4 +1,5 @@
using FFXIVClassic_Map_Server.Actors;
using FFXIVClassic_Lobby_Server;
using FFXIVClassic_Map_Server.Actors;
using FFXIVClassic_Map_Server.dataobjects;
using FFXIVClassic_Map_Server.packets.send.actor.inventory;
using FFXIVClassic_Map_Server.packets.send.Actor.inventory;
@@ -34,7 +35,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
private Player owner;
private ushort inventoryCapacity;
private ushort inventoryCode;
private Item[] list;
private InventoryItem[] list;
private Inventory normalInventory;
public Equipment(Player ownerPlayer, Inventory normalInventory, ushort capacity, ushort code)
@@ -42,11 +43,11 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
owner = ownerPlayer;
inventoryCapacity = capacity;
inventoryCode = code;
list = new Item[inventoryCapacity];
list = new InventoryItem[inventoryCapacity];
this.normalInventory = normalInventory;
}
public Item GetItemAtSlot(ushort slot)
public InventoryItem GetItemAtSlot(ushort slot)
{
if (slot < list.Length)
return list[slot];
@@ -65,25 +66,27 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
slotsToUpdate.Add(i);
}
SendEquipmentPackets(slotsToUpdate);
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
SendEquipmentPackets(slotsToUpdate);
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
}
public void SetEquipment(List<Tuple<ushort, Item>> toEquip)
public void SetEquipment(List<Tuple<ushort, InventoryItem>> toEquip)
{
List<ushort> slotsToUpdate = new List<ushort>();
for (int i = 0; i < toEquip.Count; i++)
{
slotsToUpdate.Add(toEquip[i].Item1);
list[toEquip[i].Item1] = toEquip[i].Item2;
}
SendEquipmentPackets(slotsToUpdate);
}
}
public void Equip(ushort slot, Item item)
public void Equip(ushort slot, InventoryItem item)
{
if (slot >= list.Length)
return;
return;
Database.equipItem(owner, slot, item.slot);
owner.queuePacket(InventoryBeginChangePacket.buildPacket(owner.actorId));
@@ -106,6 +109,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
if (slot >= list.Length)
return;
Database.unequipItem(owner, slot);
owner.queuePacket(InventoryBeginChangePacket.buildPacket(owner.actorId));
normalInventory.RefreshItem(list[slot]);
@@ -119,7 +124,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
list[slot] = null;
}
private void SendEquipmentPackets(ushort equipSlot, Item item)
private void SendEquipmentPackets(ushort equipSlot, InventoryItem item)
{
if (item == null)
owner.queuePacket(InventoryRemoveX01Packet.buildPacket(owner.actorId, equipSlot));
@@ -129,7 +134,6 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
private void SendEquipmentPackets(List<ushort> slotsToUpdate)
{
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
int currentIndex = 0;
@@ -145,14 +149,13 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
owner.queuePacket(EquipmentListX08Packet.buildPacket(owner.actorId, list, slotsToUpdate, ref currentIndex));
else if (slotsToUpdate.Count - currentIndex == 1)
{
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, slotsToUpdate[currentIndex], list[currentIndex].slot));
owner.queuePacket(EquipmentListX01Packet.buildPacket(owner.actorId, slotsToUpdate[currentIndex], list[slotsToUpdate[currentIndex]].slot));
currentIndex++;
}
else
break;
}
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
}
}

View File

@@ -21,11 +21,12 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
public const ushort CURRANCY = 0x0063; //Max 0x140
public const ushort KEYITEMS = 0x0064; //Max 0x500
public const ushort EQUIPMENT = 0x00FE; //Max 0x23
public const ushort EQUIPMENT_OTHERPLAYER = 0x00F9; //Max 0x23
private Player owner;
private ushort inventoryCapacity;
private ushort inventoryCode;
private List<Item> list;
private List<InventoryItem> list;
public Inventory(Player ownerPlayer, ushort capacity, ushort code)
{
@@ -35,12 +36,12 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
}
#region Inventory Management
public void initList(List<Item> itemsFromDB)
public void initList(List<InventoryItem> itemsFromDB)
{
list = itemsFromDB;
}
public Item getItem(ushort slot)
public InventoryItem getItem(ushort slot)
{
if (slot < list.Count)
return list[slot];
@@ -48,21 +49,21 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
return null;
}
public void RefreshItem(Item item)
public void RefreshItem(InventoryItem item)
{
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
sendInventoryPackets(item);
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
}
public void RefreshItem(params Item[] items)
public void RefreshItem(params InventoryItem[] items)
{
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
sendInventoryPackets(items.ToList());
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
}
public void RefreshItem(List<Item> items)
public void RefreshItem(List<InventoryItem> items)
{
owner.queuePacket(InventorySetBeginPacket.buildPacket(owner.actorId, inventoryCapacity, inventoryCode));
sendInventoryPackets(items);
@@ -81,7 +82,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
int quantityCount = quantity;
for (int i = 0; i < list.Count; i++)
{
Item item = list[i];
InventoryItem item = list[i];
if (item.itemId == itemId && item.quantity < item.maxStack)
{
slotsToUpdate.Add(item.slot);
@@ -117,7 +118,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
//New item that spilled over
while (quantityCount > 0)
{
Item addedItem = Database.addItem(owner, itemId, Math.Min(quantityCount, 5), quality, false, 100, inventoryCode);
InventoryItem addedItem = Database.addItem(owner, itemId, Math.Min(quantityCount, 5), quality, false, 100, inventoryCode);
list.Add(addedItem);
if (inventoryCode != CURRANCY && inventoryCode != KEYITEMS)
@@ -139,7 +140,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
return;
List<ushort> slotsToUpdate = new List<ushort>();
List<Item> itemsToRemove = new List<Item>();
List<InventoryItem> itemsToRemove = new List<InventoryItem>();
List<ushort> slotsToRemove = new List<ushort>();
List<SubPacket> addItemPackets = new List<SubPacket>();
@@ -148,7 +149,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
ushort lowestSlot = 0;
for (int i = list.Count - 1; i >= 0; i--)
{
Item item = list[i];
InventoryItem item = list[i];
if (item.itemId == itemId)
{
int oldQuantity = item.quantity;
@@ -212,8 +213,8 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
public void removeItem(ulong itemDBId)
{
ushort slot = 0;
Item toDelete = null;
foreach (Item item in list)
InventoryItem toDelete = null;
foreach (InventoryItem item in list)
{
if (item.uniqueId == itemDBId)
{
@@ -304,12 +305,12 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
owner.queuePacket(InventorySetEndPacket.buildPacket(owner.actorId));
}
private void sendInventoryPackets(Item item)
private void sendInventoryPackets(InventoryItem item)
{
owner.queuePacket(InventoryListX01Packet.buildPacket(owner.actorId, item));
}
private void sendInventoryPackets(List<Item> items)
private void sendInventoryPackets(List<InventoryItem> items)
{
int currentIndex = 0;
@@ -403,7 +404,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
int quantityCount = quantity;
for (int i = 0; i < list.Count; i++)
{
Item item = list[i];
InventoryItem item = list[i];
if (item.itemId == itemId && item.quantity < item.maxStack)
{
quantityCount -= (item.maxStack - item.quantity);
@@ -424,7 +425,7 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
{
int count = 0;
foreach (Item item in list)
foreach (InventoryItem item in list)
{
if (item.itemId == itemId)
count += item.quantity;