/// <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); } }
/// <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 }); }
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; }
public void EquipItem(IWearable item) { var slot = item.Slot; if (!PlayerEquipment.ContainsKey(slot)) { this.PlayerEquipment.Add(slot, item); } else { this.PlayerEquipment[slot] = item; } }
void UpdateCurrentClothing() { Item item = _player.GetItemBySlot(SlotEnum.Costume); if (item != null && item is IWearable) { _clothing = (IWearable)item; } else { _clothing = null; } }
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)); }
/// <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); }
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!"); } }
public BoarGearLoadOut(GearSlots gearSlots, IDefenseItem defaultDefenseItem = null, IAttackItem defaultAttackItem = null, IWearable defaultMiscItem = null) : base(gearSlots, defaultDefenseItem, defaultAttackItem, defaultMiscItem) { }
///<inheritdoc/> public void AddToInventory(IWearable item) { _inventory.Add(item); NotifyObservers(this); }
public void EquipFromBackpack(IWearable i) { EquippedItems.Equip(i, Backpack); }
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); } }
public int GetAttributeValue(IWearable i, AttributeType at) { return(((Item)Wearables.Find(y => i == y)).GetStatValue(at)); }
public void AddToInventory(IWearable wearable) { _inventory.Add(wearable); NotifyObservers(this); }