Пример #1
0
        public Equipment GenerateEquipmentFromTemplate(EquipmentSlotId equipmentType)
        {
            var itemDatabase = GameManager.Instance.ItemDatabase;

            EquipmentDefinition itemDef = null;

            switch (equipmentType)
            {
            case EquipmentSlotId.Weapon:
                itemDef = itemDatabase.GetRandomWeapon();
                break;

            case EquipmentSlotId.Head:
                itemDef = itemDatabase.GetRandomHelmet();
                break;

            case EquipmentSlotId.Torso:
                itemDef = itemDatabase.GetRandomChestplate();
                break;

            case EquipmentSlotId.Legs:
                itemDef = itemDatabase.GetRandomPlatelegs();
                break;
            }

            var rarity = GetRandomRarity();

            return(GenerateRandomBonuses(itemDef, rarity));
        }
Пример #2
0
        public void UpdateSlot(EquipmentSlotId slot)
        {
            var definition = m_PlayerManager.Equipment.GetEquipmentInSlot(slot);

            var matchingSlot = EquipmentSlots.Single(e => e.SlotId == slot);

            matchingSlot.UpdateItemSprite(definition);
        }
Пример #3
0
        public void ClickItem(BaseEventData eventData, EquipmentSlotId slotId)
        {
            var equipmentItem = m_PlayerManager.Equipment.GetEquipmentInSlot(slotId);

            if (equipmentItem == null)
            {
                return;
            }

            m_PlayerManager.UnequipItem(slotId);
        }
Пример #4
0
        private void AddCallbackToButton(EventTrigger eventTrigger, EquipmentSlotId slotId)
        {
            var eventEntry = new EventTrigger.Entry
            {
                eventID = EventTriggerType.PointerClick,
            };

            eventEntry.callback.AddListener(eventData => ClickItem(eventData, slotId));

            eventTrigger.triggers.Add(eventEntry);
        }
Пример #5
0
        private D3.Hero.VisualItem GetEquipmentItemForToon(EquipmentSlotId equipSlot)
        {
            if (_equipment[(int)equipSlot] == 0)
            {
                return(D3.Hero.VisualItem.CreateBuilder()
                       .SetGbid(-1)
                       .SetDyeType(0)
                       .SetEffectLevel(0)
                       .SetItemEffectType(-1)
                       .Build());
            }

            return(Items[(_equipment[(int)equipSlot])].GetVisualItem());
        }
Пример #6
0
        private VisualItem GetEquipmentItem(EquipmentSlotId equipSlot)
        {
            if (_equipment[(int)equipSlot] == 0)
            {
                return(new VisualItem()
                {
                    GbId = -1, // 0 causes error logs on the client  - angerwin
                    Field1 = 0,
                    Field2 = 0,
                    Field3 = 0,
                });
            }

            return(Items[(_equipment[(int)equipSlot])].CreateVisualItem());
        }
Пример #7
0
        public void UnequipItem(EquipmentSlotId slotId)
        {
            var equipment = Equipment.GetEquipmentInSlot(slotId);

            if (!Inventory.HasEmptySlots(1))
            {
                return;
            }

            Equipment.Unequip(slotId);
            Inventory.AddItem(equipment);

            EquipmentUI.UpdateSlot(equipment.EquipmentSlotId);
            InventoryUI.UpdateSlots();
        }
Пример #8
0
 private VisualItem GetEquipmentItem(EquipmentSlotId equipSlot)
 {
     if (_equipment[(int)equipSlot] == 0)
     {
         return new VisualItem()
         {
             GbId = -1, // 0 causes error logs on the client  - angerwin
             Field1 = 0,
             Field2 = 0,
             Field3 = 0,
         };
     }
     else
     {
         return _owner.World.GetItem(_equipment[(int)equipSlot]).CreateVisualItem();
     }
 }
Пример #9
0
 private VisualItem GetEquipmentItem(EquipmentSlotId equipSlot)
 {
     if (_equipment[(int)equipSlot] == 0)
     {
         return new VisualItem()
         {
             GbId = 0,
             Field1 = 0,
             Field2 = 0,
             Field3 = 0,
         };
     }
     else
     {
         return _owner.World.GetItem(_equipment[(int)equipSlot]).CreateVisualItem();
     }
 }
Пример #10
0
        /// <summary>
        /// Equips an item in an equipment slot
        /// </summary>
        public void EquipItem(InventoryItem item, EquipmentSlotId slot)
        {
            ItemsEquiped.Add(item.DynamicID, item);
            item.Owner = _owner;
            //item.Attributes[GameAttributeStaticList.Item_Equipped] = true; // Probaly should be handled by Equipable class
            //item.Attributes.SendChangedMessage(_owner.GameClient);

            item.EquipmentSlot = slot;

            if (!itemsEquipedBySlot.ContainsKey(slot))
            {
                itemsEquipedBySlot.Add(slot, item);
            }
            else
            {
                itemsEquipedBySlot[slot] = item;
            }
        }
Пример #11
0
        private void SaveItemToDB(DBGameAccount dbGameAccount, DBToon dbToon, EquipmentSlotId slotId, Item item)
        {
            if (item == null)
            {
                return;
            }
            if (item.DBInventory == null)
            {
                item.DBInventory = new DBInventory();
            }

            item.DBInventory.DBGameAccount = dbGameAccount;
            item.DBInventory.DBToon        = dbToon;
            item.DBInventory.LocationX     = item.InventoryLocation.X;
            item.DBInventory.LocationY     = item.InventoryLocation.Y;
            item.DBInventory.EquipmentSlot = (int)slotId;
            item.DBInventory.ItemId        = item.GBHandle.GBID;
            DBSessions.AccountSession.SaveOrUpdate(item.DBInventory);
        }
Пример #12
0
 public void Unequip(EquipmentSlotId slotId)
 {
     m_EquipmentSlots[slotId] = null;
     m_EquipmentUI.UpdateLabels();
     m_PlayerStats.UpdateStats();
 }
Пример #13
0
 private void SaveGoldToDB(ulong toon_id, string inventory_type, EquipmentSlotId slotId, int amount)
 {
     var itemQuery = string.Format("INSERT INTO inventory (toon_id, inventory_type, equipment_slot, item_id) VALUES ({0}, '{1}', {2}, {3})", toon_id, inventory_type, (int)slotId, amount);
     var itemCmd = new SQLiteCommand(itemQuery, DBManager.Connection);
     var itemReader = itemCmd.ExecuteNonQuery();
 }
Пример #14
0
 internal Item GetEquipment(EquipmentSlotId targetEquipSlot)
 {
     return GetEquipment((int)targetEquipSlot);
 }
Пример #15
0
        private void SaveItemToDB(DBGameAccount dbGameAccount, DBToon dbToon, EquipmentSlotId slotId, Item item)
        {
            if (item == null)
                return;
            if (item.DBInventory == null)
                item.DBInventory = new DBInventory();

            item.DBInventory.DBGameAccount = dbGameAccount;
            item.DBInventory.DBToon = dbToon;
            item.DBInventory.LocationX = item.InventoryLocation.X;
            item.DBInventory.LocationY = item.InventoryLocation.Y;
            item.DBInventory.EquipmentSlot = (int)slotId;

            ItemGenerator.SaveToDB(item);
            item.DBInventory.DBItemInstance = item.DBItemInstance;
            DBSessions.AccountSession.SaveOrUpdate(item.DBInventory);
        }
Пример #16
0
 private void SaveItemToDB(ulong toon_id, string inventory_type, EquipmentSlotId slotId, Item item)
 {
     if (item == null)
         return;
     var itemQuery = string.Format("INSERT INTO inventory (toon_id, inventory_type, inventory_loc_x, inventory_loc_y, equipment_slot, item_id) VALUES ({0}, '{1}', {2}, {3}, {4}, {5})",
         toon_id, inventory_type, item.InventoryLocation.X, item.InventoryLocation.Y, (int)slotId, item.GBHandle.GBID);
     var itemCmd = new SQLiteCommand(itemQuery, DBManager.Connection);
     var itemReader = itemCmd.ExecuteNonQuery();
 }
Пример #17
0
 public bool IsSlotEmpty(EquipmentSlotId slot)
 {
     return(this.itemsEquipedBySlot[slot] == null);
 }
Пример #18
0
 internal Item GetEquipment(EquipmentSlotId targetEquipSlot)
 {
     return(GetEquipment((int)targetEquipSlot));
 }
Пример #19
0
 private void SaveValueToDB(ulong account_id, long toon_id, EquipmentSlotId slotId, int value)
 {
     var itemQuery = string.Format("INSERT INTO inventory (account_id, toon_id, inventory_loc_x, inventory_loc_y, equipment_slot, item_id) VALUES ({0}, {1}, {2}, {3}, {4}, {5})",
         account_id, toon_id, -1, -1, (int)slotId, value);
     var itemCmd = new SQLiteCommand(itemQuery, DBManager.Connection);
     var itemReader = itemCmd.ExecuteNonQuery();
 }
Пример #20
0
        private D3.Hero.VisualItem GetEquipmentItemForToon(EquipmentSlotId equipSlot)
        {
            if (_equipment[(int)equipSlot] == 0)
            {
                return D3.Hero.VisualItem.CreateBuilder()
                    .SetGbid(-1)
                    .SetDyeType(0)
                    .SetEffectLevel(0)
                    .SetItemEffectType(-1)
                    .Build();
            }

            return Items[(_equipment[(int)equipSlot])].GetVisualItem();
            
        }
Пример #21
0
        /// <summary>
        /// Handles a request to move an item within the inventory.
        /// This covers moving items within the backpack, from equipment
        /// slot to backpack and from backpack to equipment slot
        /// </summary>
        public void OnInventoryRequestMoveMessage(InventoryRequestMoveMessage request)
        {
            InventoryWindowsID sourceWindow = InventoryWindowsID.PlayerInventory;

            InventoryItem inv_item;

            if (!this.Contains(request.ItemID))
            {
                if (this._equipment.ItemsEquiped.ContainsKey(request.ItemID))
                {
                    inv_item = (InventoryItem)this._equipment.ItemsEquiped[request.ItemID];
                }
                else
                {
                    if (this.Vault.Contains(request.ItemID))
                    {
                        sourceWindow = InventoryWindowsID.Vault;
                        inv_item     = (InventoryItem)this.Vault.Items[request.ItemID];
                    }
                    else
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to move an item that is not in inventory or equipment!");
                        return;
                    }
                }
            }
            else
            {
                inv_item = (InventoryItem)this.Items[request.ItemID];
            }

            EquipmentSlotId sourceEquip = inv_item.EquipmentSlot;
            EquipmentSlotId destEquip   = (EquipmentSlotId)request.EquipmentSlot;

            if (sourceWindow == InventoryWindowsID.PlayerInventory)
            {
                if ((sourceEquip == EquipmentSlotId.Inventory) && (destEquip == EquipmentSlotId.Inventory))
                {
                    //inventory to inventory
                    if (!this.Contains(inv_item.DynamicID))
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to move an item that is not in inventory");
                        return;
                    }

                    if (!this.canPutitemThere_checking_self_item(inv_item, request.Row, request.Column))
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to put an item on a ocupped place (saltea el cliente check?)");
                        return;
                    }

                    if (!this.removeItem(inv_item))
                    {
                        Logging.LogManager.DefaultLogger.Error("could not remove item!, inventory to inventory operation");
                        return;
                    }

                    InventorySlot _slot = new InventorySlot(request.Row, request.Column);
                    if (!this.addItemAtPosition(inv_item, _slot))
                    {
                        Logging.LogManager.DefaultLogger.Error("could not add item at position, from");
                        return;
                    }
                    this.sendAcceptMoveRequest(inv_item, sourceWindow, InventoryWindowsID.PlayerInventory);
                    //this.sendVisualInventory(this._owner);
                }

                if ((sourceEquip == EquipmentSlotId.Inventory) && (destEquip != EquipmentSlotId.Inventory))
                {
                    //inventory to equipment!
                    if (!this.Contains(inv_item.DynamicID))
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to move an item from inventory to equipment but it is not in the inventory!");
                        return;
                    }

                    if (!this._equipment.IsSlotEmpty(destEquip))
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to move an item from inventory to equipment but equipment is occupied!");
                        return;
                    }

                    if (!this.removeItem(inv_item))
                    {
                        Logging.LogManager.DefaultLogger.Error("could not remove item!, inventory to equipment operation");
                        return;
                    }

                    this._equipment.EquipItem(inv_item, destEquip);
                    this.sendAcceptMoveRequest(inv_item, sourceWindow, InventoryWindowsID.PlayerInventory);
                    this.broadcastVisualEquipment();
                }

                if ((sourceEquip != EquipmentSlotId.Inventory) && (destEquip == EquipmentSlotId.Inventory))
                {
                    //equipment to inventory!

                    if (!this._equipment.IsItemEquipped(inv_item))
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to unequip an item (equipment to inventory) that is not in equipment");
                    }

                    if (!this.canPutitemThere_checking_self_item(inv_item, request.Row, request.Column))
                    {
                        Logging.LogManager.DefaultLogger.Error("Trying to put an item on a ocupped place (saltea el cliente check?)");
                        return;
                    }

                    this._equipment.UnequipItem(inv_item);

                    InventorySlot _slot = new InventorySlot(request.Row, request.Column);
                    if (!this.addItemAtPosition(inv_item, _slot))
                    {
                        Logging.LogManager.DefaultLogger.Error("could not add item at position, from");
                        return;
                    }
                    this.sendAcceptMoveRequest(inv_item, sourceWindow, InventoryWindowsID.PlayerInventory);
                    this.broadcastVisualEquipment();
                }

                if ((sourceEquip != EquipmentSlotId.Inventory) && (destEquip != EquipmentSlotId.Inventory))
                {
                    //equipment to equipment!
                }
            }

            if (sourceWindow == InventoryWindowsID.Vault)
            {
                //Vault to inventory
                if (!this.Vault.Contains(inv_item.DynamicID))
                {
                    Logging.LogManager.DefaultLogger.Error("Trying to move an item that is not in Vault!");
                    return;
                }

                if (!this.canPutitemThere_checking_self_item(inv_item, request.Row, request.Column))
                {
                    Logging.LogManager.DefaultLogger.Error("Trying to put an item on a ocupped place (saltea el cliente check?)");
                    return;
                }

                if (!this.Vault.removeItem(inv_item))
                {
                    Logging.LogManager.DefaultLogger.Error("could not remove item!, vault to inventory operation");
                    return;
                }

                InventorySlot _slot = new InventorySlot(request.Row, request.Column);
                if (!this.addItemAtPosition(inv_item, _slot))
                {
                    Logging.LogManager.DefaultLogger.Error("could not add item at position, from");
                    return;
                }
                this.sendAcceptMoveRequest(inv_item, sourceWindow, InventoryWindowsID.PlayerInventory);
            }
        }
Пример #22
0
        private void SaveItemToDB(DBGameAccount dbGameAccount, DBToon dbToon, bool hardcore, EquipmentSlotId slotId, Item item)
        {
            if (item == null)
            {
                return;
            }
            if (item.DBInventory == null)
            {
                item.DBInventory = new DBInventory();
            }

            item.DBInventory.DBGameAccount = dbGameAccount;
            item.DBInventory.DBToon        = dbToon;
            item.DBInventory.Hardcore      = hardcore;
            item.DBInventory.LocationX     = item.InventoryLocation.X;
            item.DBInventory.LocationY     = item.InventoryLocation.Y;
            item.DBInventory.EquipmentSlot = (int)slotId;

            ItemGenerator.SaveToDB(item);
            item.DBInventory.DBItemInstance = item.DBItemInstance;
            DBSessions.AccountSession.SaveOrUpdate(item.DBInventory);
        }
Пример #23
0
 /// <summary>
 /// Returns the item in the slotId or null
 /// </summary>
 public Equipment GetEquipmentInSlot(EquipmentSlotId slotId)
 {
     return(m_EquipmentSlots[slotId]);
 }