/// <summary>
        /// Standard constructor for initializing default items and defining Gear Slots.
        /// </summary>
        /// <param name="gearSlots">Represent the slots in which items can be put.</param>
        /// <param name="defaultDefenseItem">The default item for defense items, defaults to null.</param>
        /// <param name="defaultAttackItem">The default item for attack items, defaults to null.</param>
        /// <param name="defaultMiscItem">The default item for miscellaneous items, defaults to null.</param>
        public GearLoadOut(GearSlots gearSlots, IDefenseItem defaultDefenseItem, IAttackItem defaultAttackItem = null, IWearable defaultMiscItem = null)
        {
            //Loading default items
            _defaultDefenseItem = defaultDefenseItem;
            _defaultAttackItem  = defaultAttackItem;
            _defaultMiscItem    = defaultMiscItem;


            //Instantiating the object for keeping track of worn items
            DefenseItems = new Dictionary <string, IDefenseItem>();
            AttackItems  = new Dictionary <string, IAttackItem>();
            MiscItems    = new Dictionary <string, IWearable>();


            //Adding worn item slots
            //Defense
            foreach (var slot in gearSlots.DefenseSlots)
            {
                DefenseItems.Add(slot, _defaultDefenseItem);
            }
            //Attack
            foreach (var slot in gearSlots.AttackSlots)
            {
                AttackItems.Add(slot, _defaultAttackItem);
            }
            //Miscellaneous
            foreach (var slot in gearSlots.MiscSlots)
            {
                MiscItems.Add(slot, _defaultMiscItem);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Constructor for setting the equipped item, the unequipped item and the slot, where the items are shifting.
        /// </summary>
        /// <param name="description">The description of the transaction.</param>
        /// <param name="equipped">The item to be equipped.</param>
        /// <param name="unEquipped">The item to be removed from it's slot.</param>
        /// <param name="slot">The slot in which the items are shifting position.</param>
        /// <param name="successValue">SuccessValue describes whether the operation was a success or not.</param>
        public EquipItemResponse(string description, IWearable equipped, IWearable unEquipped, string slot, bool successValue)
        {
            Description  = description;
            SuccessValue = successValue;
            Slot         = slot;
            Equipped     = equipped;
            UnEquipped   = unEquipped;

            TraceSourceSingleton.Ts().TraceEvent(TraceEventType.Information, 103, Description, new object[] { Equipped, UnEquipped, Slot });
        }
Esempio n. 3
0
        public void SwitchItems(IWearable old, IWearable new_, Backpack b)
        {
            b.Switch((Item)old, (Item)new_);

            int oldIndex = Wearables.FindIndex(y => y.GetSlot() == old.GetSlot());
            int newIndex = Wearables.FindIndex(y => y.GetSlot() == new_.GetSlot());

            var c = Wearables[oldIndex];

            Wearables[oldIndex] = Wearables[newIndex];
            Wearables[newIndex] = c;
        }
Esempio n. 4
0
        public void EquipItem(IWearable item)
        {
            var slot = item.Slot;

            if (!PlayerEquipment.ContainsKey(slot))
            {
                this.PlayerEquipment.Add(slot, item);
            }
            else
            {
                this.PlayerEquipment[slot] = item;
            }
        }
Esempio n. 5
0
        void UpdateCurrentClothing()
        {
            Item item = _player.GetItemBySlot(SlotEnum.Costume);

            if (item != null && item is IWearable)
            {
                _clothing = (IWearable)item;
            }
            else
            {
                _clothing = null;
            }
        }
Esempio n. 6
0
        public void Equip(IWearable iw, Backpack b)
        {
            IWearable item = null;

            item = Wearables.Find(i => iw.GetSlot() == i.GetSlot());
            if (item == null)
            {
                Wearables.Add(iw);
            }
            else
            {
                SwitchItems(item, iw, b);
            }
        }
        /// <summary>
        /// Unequips a given item, if it is equipped.
        /// </summary>
        /// <param name="item">item is the item that is to be unequipped</param>
        /// <returns>Returns a EquipItemResponse to describe the operation.</returns>
        public virtual EquipItemResponse DeEquipItem(IWearable item)
        {
            Type itemType = item.GetType();

            if (TypeComparer.IsSameOrVariant(typeof(IAttackItem), itemType).SuccessValue)
            {
                return(RemoveItem <IAttackItem>(AttackItems, (IAttackItem)item, _defaultAttackItem));
            }

            if (TypeComparer.IsSameOrVariant(typeof(IDefenseItem), itemType).SuccessValue)
            {
                return(RemoveItem <IDefenseItem>(DefenseItems, (IDefenseItem)item, _defaultDefenseItem));
            }
            return(RemoveItem <IWearable>(MiscItems, item, _defaultMiscItem));
        }
Esempio n. 8
0
        /// <summary> Returns the closest WearableUI to the PinchDetector, or null of they are all further than _pinchGrabDistance.</summary>
        private IWearable EvaluatePossiblePinch(PinchDetector pinchToTest)
        {
            IWearable closestWearable       = null;
            float     closestDistance       = 1000000F;
            float     pinchWearableDistance = 0F;

            for (int i = 0; i < _wearables.Count; i++)
            {
                if (_wearables[i].CanBeGrabbed())
                {
                    pinchWearableDistance = Vector3.Distance(_wearables[i].GetPosition(), pinchToTest.transform.position);
                    if (pinchWearableDistance < _pinchGrabDistance && pinchWearableDistance < closestDistance)
                    {
                        closestDistance = pinchWearableDistance;
                        closestWearable = _wearables[i];
                    }
                }
            }
            return(closestWearable);
        }
Esempio n. 9
0
        public void Use(int index)
        {
            if (inventory[index] is IUsable)
            {
                Usage item = inventory[index] as Usage;
                item.Use(this);

                inventory.RemoveAt(index);
            }

            else if (inventory[index] is IWearable)
            {
                IWearable item = inventory[index] as IWearable;
                item.Wear(this);

                inventory.RemoveAt(index);
            }

            else
            {
                Console.WriteLine("You can't use that!");
            }
        }
Esempio n. 10
0
 public BoarGearLoadOut(GearSlots gearSlots, IDefenseItem defaultDefenseItem = null, IAttackItem defaultAttackItem = null, IWearable defaultMiscItem = null) : base(gearSlots, defaultDefenseItem, defaultAttackItem, defaultMiscItem)
 {
 }
Esempio n. 11
0
 ///<inheritdoc/>
 public void AddToInventory(IWearable item)
 {
     _inventory.Add(item);
     NotifyObservers(this);
 }
Esempio n. 12
0
 public void EquipFromBackpack(IWearable i)
 {
     EquippedItems.Equip(i, Backpack);
 }
Esempio n. 13
0
        public bool Wear(IWearable wearable)
        {
            if (wearable == null)
            {
                return(false);
            }

            switch (wearable)
            {
            case IHeadWearable headWearable:
                if (Head.IsEmpty)
                {
                    Head.CurrentlyEquipped = headWearable;
                    return(true);
                }
                else
                {
                    _owner.Inventory.AddItem((Item)Head.CurrentlyEquipped);
                    Head.CurrentlyEquipped = headWearable;
                    return(true);
                }

            case IBodyWearable bodyWearable:
                if (Body.IsEmpty)
                {
                    Body.CurrentlyEquipped = bodyWearable;
                    return(true);
                }
                else
                {
                    _owner.Inventory.AddItem((Item)Body.CurrentlyEquipped);
                    Body.CurrentlyEquipped = bodyWearable;
                    return(true);
                }

            case ILegsWearable legsWearable:
                if (Legs.IsEmpty)
                {
                    Legs.CurrentlyEquipped = legsWearable;
                    return(true);
                }
                else
                {
                    _owner.Inventory.AddItem((Item)Legs.CurrentlyEquipped);
                    Legs.CurrentlyEquipped = legsWearable;
                    return(true);
                }

            case IFootsWearable footsWearable:
                if (Foots.IsEmpty)
                {
                    Foots.CurrentlyEquipped = footsWearable;
                    return(true);
                }
                else
                {
                    _owner.Inventory.AddItem((Item)Foots.CurrentlyEquipped);
                    Foots.CurrentlyEquipped = footsWearable;
                    return(true);
                }

            case IHandsWearable handsWearable:
                if (Hands.IsEmpty)
                {
                    Hands.CurrentlyEquipped = handsWearable;
                    return(true);
                }
                else
                {
                    _owner.Inventory.AddItem((Item)Hands.CurrentlyEquipped);
                    Hands.CurrentlyEquipped = handsWearable;
                    return(true);
                }

            case IMindWearable mindWearable:
                if (Mind.IsEmpty)
                {
                    Mind.CurrentlyEquipped = mindWearable;
                    return(true);
                }
                else
                {
                    _owner.Inventory.AddItem((Item)Mind.CurrentlyEquipped);
                    Mind.CurrentlyEquipped = mindWearable;
                    return(true);
                }

            default:
                return(false);
            }
        }
Esempio n. 14
0
 public int GetAttributeValue(IWearable i, AttributeType at)
 {
     return(((Item)Wearables.Find(y => i == y)).GetStatValue(at));
 }
Esempio n. 15
0
 public void AddToInventory(IWearable wearable)
 {
     _inventory.Add(wearable);
     NotifyObservers(this);
 }