Exemplo n.º 1
0
        /// <summary>
        /// 添加备忘录
        /// </summary>
        public void AddItem(string content)
        {
            AddItemContent = content;

            if (_model != null)
            {
                _model.memoContentList.Add(content);
            }

            OnAddItemEvent?.Invoke();
        }
 public bool AddItem(ItemSlot item, out List <Item> PreviousItems)
 {
     PreviousItems = new List <Item>();
     for (int i = 0; i < EquipmentSlots.Length; i++)
     {
         if (EquipmentSlots[i].CanRecieveItem(item.Item))
         {
             PreviousItems.Add((EquipableItem)EquipmentSlots[i].Item);
             RemoveItem(PreviousItems);
             EquipmentSlots[i].Item   = item.Item;
             EquipmentSlots[i].Amount = item.Amount;
             OnAddItemEvent?.Invoke((EquipableItem)EquipmentSlots[i].Item);
             return(true);
         }
     }
     return(false);
 }
    //public bool AddItem(EquipableItem item, int amount, out List<Item> PreviousItems)
    //{
    //    PreviousItems = new List<Item>();
    //    var target = EquipmentSlots.FirstOrDefault(s => s.EquipmentType == item.EquipmentType);
    //    if (target != null)
    //    {
    //        PreviousItems.Add((EquipableItem)target.Item);
    //        RemoveItem(PreviousItems);
    //        target.Item = item;
    //        target.Amount = amount;
    //        OnAddItemEvent?.Invoke((EquipableItem)target.Item);
    //        return true;
    //    }
    //    return false;
    //}
    public Item AddItem(EquipableItem item, int amount, out List <Item> PreviousItems)
    {
        EquipmentSlot shieldSlot   = EquipmentSlots.FirstOrDefault(s => s.EquipmentType == EquipmentType.Shield);
        EquipmentSlot MainHandSlot = EquipmentSlots.FirstOrDefault(s => s.EquipmentType == EquipmentType.MainHand);

        PreviousItems = new List <Item>();
        Item                 MainPreviousItem = null;
        EquipmentSlot        MainTarget;
        List <EquipmentSlot> targets = new List <EquipmentSlot>();

        if (item as Weapon != null)
        {
            switch (((Weapon)item).weaponType)
            {
            case Weapon.WeaponType.MainHand:
                MainTarget = MainHandSlot;
                if (shieldSlot.Item as Weapon != null && ((Weapon)shieldSlot.Item).weaponType == Weapon.WeaponType.Bow)
                {
                    targets.Add(shieldSlot);
                    PreviousItems.Add(shieldSlot.Item);
                }
                break;

            case Weapon.WeaponType.OffHand:
                MainTarget = shieldSlot;
                if (MainHandSlot.Item != null)
                {
                    if (((Weapon)MainHandSlot.Item).weaponType == Weapon.WeaponType.TwoHand ||
                        ((Weapon)MainHandSlot.Item).weaponType == Weapon.WeaponType.Staff)
                    {
                        targets.Add(MainHandSlot);
                        PreviousItems.Add(MainHandSlot.Item);
                    }
                }
                break;

            case Weapon.WeaponType.TwoHand:
                MainTarget = MainHandSlot;
                if (shieldSlot.Item != null)
                {
                    targets.Add(shieldSlot);
                    PreviousItems.Add(shieldSlot.Item);
                }
                break;

            case Weapon.WeaponType.Bow:
                MainTarget = shieldSlot;
                if (MainHandSlot.Item != null)
                {
                    targets.Add(MainHandSlot);
                    PreviousItems.Add(MainHandSlot.Item);
                }
                break;

            case Weapon.WeaponType.Staff:
                MainTarget = MainHandSlot;
                if (shieldSlot.Item != null)
                {
                    targets.Add(shieldSlot);
                    PreviousItems.Add(shieldSlot.Item);
                }
                break;

            default:
                MainTarget = EquipmentSlots.FirstOrDefault(s => s.EquipmentType == item.EquipmentType);
                break;
            }
        }
        else
        {
            MainTarget = EquipmentSlots.FirstOrDefault(s => s.EquipmentType == item.EquipmentType);
        }
        if (MainTarget != null)
        {
            MainPreviousItem = MainTarget.Item;
            RemoveItem(MainTarget);
            MainTarget.Item   = item;
            MainTarget.Amount = amount;
        }
        RemoveItem(targets);
        OnAddItemEvent?.Invoke((EquipableItem)MainTarget.Item);
        return(MainPreviousItem);
    }