示例#1
0
        public StoredRetainerInventory(IntPtr pointer)
        {
            IntPtr position = pointer;

            EquippedItems = new List <uint>(Core.Memory.ReadArray <uint>(position, 14).Where(i => i != 0));
            position      = position + (14 * sizeof(uint));
            var itemIds = Core.Memory.ReadArray <uint>(position, 175);

            position = position + (175 * sizeof(uint));
            var qtys = Core.Memory.ReadArray <ushort>(position, 175);

            position = position + (175 * sizeof(ushort));
            var crystalQtys = Core.Memory.ReadArray <ushort>(position, 18);

            for (int i = 0; i < 18; i++)
            {
                if (crystalQtys[i] == 0)
                {
                    continue;
                }

                Inventory.Add((uint)(i + 2), crystalQtys[i]);
                SlotCount.Add((uint)(i + 2), 1);
            }

            for (int i = 0; i < 175; i++)
            {
                if (itemIds[i] == 0)
                {
                    FreeSlots++;
                    continue;
                }

                if (Inventory.ContainsKey(itemIds[i]))
                {
                    Inventory[itemIds[i]] += qtys[i];
                    SlotCount[itemIds[i]]++;
                }
                else
                {
                    Inventory.Add(itemIds[i], qtys[i]);
                    SlotCount.Add(itemIds[i], 1);
                }
            }
        }
        public StoredSaddleBagInventory(uint[] itemIds, ushort[] itemQuantities)
        {
            // Assumes a non-expanded saddlebag, but who has expanded saddlebags...?
            for (var i = 0; i < 70; i++)
            {
                if (itemIds[i] == 0)
                {
                    FreeSlots++;
                    continue;
                }

                if (Inventory.ContainsKey(itemIds[i]))
                {
                    Inventory[itemIds[i]] += itemQuantities[i];
                    SlotCount[itemIds[i]]++;
                }
                else
                {
                    Inventory.Add(itemIds[i], itemQuantities[i]);
                    SlotCount.Add(itemIds[i], 1);
                }
            }
        }