示例#1
0
    /// <summary>
    /// Otherwise do the same thing as MoveItem in inventory Script.
    /// But we need to reconstruct the invetory to the player.
    /// </summary>
    /// <param name="clicked"></param>
    public override void MoveItem(GameObject clicked)
    {
        base.MoveItem(clicked);

        foreach (Slot slot in equipmentSlots)
        {
            Transform equipmentTransform = player.transform.FindChild(slot.name);
            if (equipmentTransform != null)
            {
                EquipmentSlot equipment = equipmentTransform.GetComponent <EquipmentSlot>();

                if (slot.isEmpty && !equipment.IsEmpty())
                {
                    equipment.RemoveItem();
                }
                else if (!slot.isEmpty)
                {
                    if (equipment.IsEmpty() || equipment.Item.Item != slot.CurrentItem.Item)
                    {
                        equipment.SetItem(slot.CurrentItem);
                    }
                }
            }
        }
    }
示例#2
0
    public void Equip(Item item)
    {
        //从物品栏直接点击装备物品
        Item exitItem = null;

        foreach (Slot slot in SlotList)
        {
            EquipmentSlot equipmentSlot = (EquipmentSlot)slot;
            if (equipmentSlot.IsRightItem(item))
            {
                if (equipmentSlot.transform.childCount > 0)
                {
                    ItemUI currentItem = equipmentSlot.transform.GetChild(0).GetComponent <ItemUI>();
                    exitItem = currentItem.Item;
                    currentItem.SetItemUI(item, 1);
                }
                else
                {
                    equipmentSlot.SetItem(item);
                }
                EquipItem(item, true);
                equipmentSlot.CheckEquipSlot();
                break;
            }
        }
        if (exitItem != null)
        {
            BackPack.Instance.SetItem(exitItem);
        }
    }
示例#3
0
    /// <summary>
    /// Reconstruct single slot's equipment stats.
    /// </summary>
    /// <param name="clothing"></param>
    private void SetClothing(string clothing)
    {
        EquipmentSlot equipment = player.transform.FindChild(clothing).GetComponent <EquipmentSlot>();
        Slot          slot      = GetSlot(clothing);

        if (slot.isEmpty && !equipment.IsEmpty())
        {
            equipment.RemoveItem();
        }
        else if (!slot.isEmpty)
        {
            if (equipment.Item == null || equipment.Item.Item != slot.CurrentItem.Item)
            {
                equipment.SetItem(slot.CurrentItem);
            }
        }
    }
示例#4
0
 public void SetEquipment(Item item)
 {
     foreach (Slot slot in SlotList)
     {
         if (slot is EquipmentSlot)
         {
             EquipmentSlot equipmentSlot = (EquipmentSlot)slot;
             if (equipmentSlot.IsRightItem(item))
             {
                 if (equipmentSlot.transform.childCount > 0)
                 {
                     ItemUI currentItem = equipmentSlot.transform.GetChild(0).GetComponent <ItemUI>();
                     currentItem.SetItemUI(item, 1);
                 }
                 else
                 {
                     equipmentSlot.SetItem(item);
                 }
                 equipmentSlot.CheckEquipSlot();
                 break;
             }
         }
     }
 }
    internal void Observe(PlayerController player)
    {
        if (!player)
        {
            return;
        }

        var amulet = player.Inventory.GetEquipmentOfCategory(ItemCategory.Amulet);

        amuletSlot.SetItem(amulet);

        var ring = player.Inventory.GetEquipmentOfCategory(ItemCategory.Ring);

        ringSlot.SetItem(ring);

        var pet = player.Inventory.GetEquipmentOfCategory(ItemCategory.Pet);

        petSlot.SetItem(pet);

        var helmet = player.Inventory.GetEquipmentOfType(ItemCategory.Armor, ItemType.Helm);

        helmetSlot.SetItem(helmet);

        var chest = player.Inventory.GetEquipmentOfType(ItemCategory.Armor, ItemType.Chest);

        chestSlot.SetItem(chest);

        var gloves = player.Inventory.GetEquipmentOfType(ItemCategory.Armor, ItemType.Gloves);

        glovesSlot.SetItem(gloves);

        var leggings = player.Inventory.GetEquipmentOfType(ItemCategory.Armor, ItemType.Leggings);

        leggingsSlot.SetItem(leggings);

        var boots = player.Inventory.GetEquipmentOfType(ItemCategory.Armor, ItemType.Boots);

        bootsSlot.SetItem(boots);

        var sword0 = player.Inventory.GetEquipmentOfType(ItemCategory.Weapon, ItemType.TwoHandedSword);
        var sword1 = player.Inventory.GetEquipmentOfType(ItemCategory.Weapon, ItemType.OneHandedSword);

        if (sword0 != null)
        {
            swordSlot.SetItem(sword0);
        }
        else
        {
            swordSlot.SetItem(sword1);
        }

        var shield = player.Inventory.GetEquipmentOfType(ItemCategory.Armor, ItemType.Shield);

        shieldSlot.SetItem(shield);

        var staff = player.Inventory.GetEquipmentOfType(ItemCategory.Weapon, ItemType.TwoHandedStaff);

        staffSlot.SetItem(staff);

        var bow = player.Inventory.GetEquipmentOfType(ItemCategory.Weapon, ItemType.TwoHandedBow);

        bowSlot.SetItem(bow);
    }