public void Unequip(OnItemUnequipEventData e) { EquipmentCollection equipment = e.Equipper .GetComponentInChildren <EquipmentCollection>(); if (equipment.IsItemInSlot(e.EquipmentSlot)) { equipment.RemoveItemInSlot(e.EquipmentSlot); } }
public void UIAttemptEquip(OnUIItemAttemptEquipEventData e) { EquipmentCollection equipment = e.Equipper.GetComponentInChildren <EquipmentCollection>(); e.Item.UIEmitter.Emit( new OnUIItemEquipEventData( e.Equipper, e.EquipmentPanel.GetSelectedSlot() ) ); if (equipment.IsItemInSlot(e.EquipmentSlot)) { Item SelectedSlotItem = equipment.GetItemInSlot(e.EquipmentSlot); e.EquipmentPanel.SetCurrentItem(SelectedSlotItem); } }
public void AttemptEquip(OnItemAttemptEquipEventData e) { EquipmentCollection equipment = e.Equipper.GetComponentInChildren <EquipmentCollection>(); //only equip item if there is no item currently in slot if (EquipableTo.ContainsSlot(e.EquipmentSlot) && !equipment.IsItemInSlot(e.EquipmentSlot) && !equipment.IsEquipped(e.Item) ) { e.Item.Emitter.Emit( new OnItemEquipEventData( e.Equipper, e.Item, e.EquipmentSlot ) ); } }
public void UICompareTo(OnUIItemEquipmentCompareEventData e) { e.StatChangesCollection.ClearAll(); StatCollection playerStats = e.Player.GetComponentInChildren <StatCollection>(); List <PlayerUIStatModifier> playerUIStats = new List <PlayerUIStatModifier>(playerStats.GetComponentsInChildren <PlayerUIStatModifier>()); Dictionary <string, float> originalStatValues = new Dictionary <string, float>(); Dictionary <string, float> bonusStatValues = new Dictionary <string, float>(); Dictionary <string, PlayerUIStatModifier> renderables = new Dictionary <string, PlayerUIStatModifier>(); foreach (PlayerUIStatModifier UIStat in playerUIStats) { foreach (KeyValuePair <string, float> stat in UIStat.BasedOnStats.GetAllStats()) { if (!originalStatValues.ContainsKey(stat.Key)) { originalStatValues[stat.Key] = stat.Value; } else { originalStatValues[stat.Key] += stat.Value; } if (!renderables.ContainsKey(stat.Key)) { renderables[stat.Key] = UIStat; } } } foreach (PlayerUIStatModifier UIStat in StatBonuses) { foreach (KeyValuePair <string, float> stat in UIStat.BasedOnStats.GetAllStats()) { if (!bonusStatValues.ContainsKey(stat.Key)) { bonusStatValues[stat.Key] = stat.Value; } else { bonusStatValues[stat.Key] += stat.Value; } if (!renderables.ContainsKey(stat.Key)) { renderables[stat.Key] = UIStat; } } } EquipmentCollection playerEquipment = e.Player.GetComponentInChildren <EquipmentCollection>(); Item thisItem = GetComponent <Item>(); //remove bonus values based on currently equipped item if (playerEquipment.IsItemInSlot(e.ForSlot)) { Item i = playerEquipment.GetItemInSlot(e.ForSlot); PlayerUIStatModifier[] UIStats = i.GetComponentsInChildren <PlayerUIStatModifier>(); if (!playerEquipment.IsEquipped(thisItem)) { foreach (PlayerUIStatModifier UIStat in UIStats) { foreach (KeyValuePair <string, float> stat in UIStat.BasedOnStats.GetAllStats()) { if (!bonusStatValues.ContainsKey(stat.Key)) { bonusStatValues[stat.Key] = -stat.Value; } else { bonusStatValues[stat.Key] -= stat.Value; } if (!renderables.ContainsKey(stat.Key)) { renderables[stat.Key] = UIStat; } } } } } //remove bonus values based on if item is being re-equiped to another slot if (playerEquipment.IsEquipped(thisItem)) { PlayerUIStatModifier[] UIStats = thisItem.GetComponentsInChildren <PlayerUIStatModifier>(); foreach (PlayerUIStatModifier UIStat in UIStats) { foreach (KeyValuePair <string, float> stat in UIStat.BasedOnStats.GetAllStats()) { if (!bonusStatValues.ContainsKey(stat.Key)) { bonusStatValues[stat.Key] = -stat.Value; } else { bonusStatValues[stat.Key] -= stat.Value; } if (!renderables.ContainsKey(stat.Key)) { renderables[stat.Key] = UIStat; } } } } foreach (KeyValuePair <string, PlayerUIStatModifier> UIStat in renderables) { if (originalStatValues.ContainsKey(UIStat.Key) && bonusStatValues.ContainsKey(UIStat.Key) && EquippableTo.ContainsSlot(e.ForSlot) ) { e.StatChangesCollection.AddStatChange( originalStatValues[UIStat.Key], bonusStatValues[UIStat.Key], UIStat.Value.Icon ); } else if (originalStatValues.ContainsKey(UIStat.Key) && EquippableTo.ContainsSlot(e.ForSlot)) { e.StatChangesCollection.AddStatChange( originalStatValues[UIStat.Key], 0, UIStat.Value.Icon ); } else if (bonusStatValues.ContainsKey(UIStat.Key) && EquippableTo.ContainsSlot(e.ForSlot)) { e.StatChangesCollection.AddStatChange( 0, bonusStatValues[UIStat.Key], UIStat.Value.Icon ); } } }
public void UseItemOnKey(OnKeyDownEventData e) { if (isMoving) { return; } switch (e.Key) { case KeyCode.L: if (CurrentPanel == Panels.Category) { if (VerticalIndex < 0 || VerticalIndex > CategryUIControl.Lines.GetSize() - 1) { return; } VerticalIndexStack.Push(VerticalIndex); CategryUIControl.Lines.Get(VerticalIndex).GetComponent <Animator>().enabled = false; VerticalIndex = 0; CurrentPanel = Panels.Item; StartCoroutine(Move(new Vector3(-183.1666f, 0f, 0f), 0.5f)); } else if (CurrentPanel == Panels.Item) { if (VerticalIndex < 0 || VerticalIndex > ItemUIControl.Lines.GetSize() - 1) { return; } Item i = PlayerInventory.GetItemAtIndexAndCategory(VerticalIndex, CurrentCategory); i.Emitter.Emit( new OnItemUseEventData(Owner) ); if (CurrentCategory == Item.ItemTag.Armour || CurrentCategory == Item.ItemTag.Weapon ) { CurrentPanelStack.Push(CurrentPanel); VerticalIndexStack.Push(VerticalIndex); EquipmentPanel.gameObject.SetActive(true); EquipmentPanel.Show(); EquipmentPanel.SetNewItem(i); foreach (PlayerEquipmentPanelSlot slot in EquipmentPanel.GetAllSlots()) { if (PlayerEquipment.IsItemInSlot(slot.EquipmentSlot)) { Item uii = PlayerEquipment.GetItemInSlot(slot.EquipmentSlot); uii.UIEmitter.Emit(new OnUIItemEquipEventData( Owner, slot )); EquipmentPanel.SetCurrentItem(uii); } } CurrentPanel = Panels.Equipment; RefreshComparedItems(); } } else if (CurrentPanel == Panels.Equipment) { Item i = EquipmentPanel.GetNewItem(); i.Emitter.Emit(new OnItemAttemptEquipEventData( Owner, i, EquipmentPanel.GetSelectedSlot().EquipmentSlot )); i.UIEmitter.Emit(new OnUIItemAttemptEquipEventData( Owner, i, EquipmentPanel, EquipmentPanel.GetSelectedSlot().EquipmentSlot )); RefreshComparedItems(); } RefreshRenderedItems(); break; case KeyCode.H: if (CurrentPanel == Panels.Item) { if (VerticalIndex >= 0 && VerticalIndex < ItemUIControl.Lines.GetSize()) { ItemUIControl.Lines.Get(VerticalIndex).Selector.GetComponent <Image>().enabled = false; } VerticalIndex = VerticalIndexStack.Pop(); CategryUIControl.Lines.Get(VerticalIndex).GetComponent <Animator>().enabled = true; CurrentPanel = Panels.Category; StartCoroutine(Move(new Vector3(183.1666f, 0f, 0f), 0.5f)); } else if (CurrentPanel == Panels.Equipment) { EquipmentPanel.Close(); CurrentPanel = CurrentPanelStack.Pop(); VerticalIndex = VerticalIndexStack.Pop(); } break; case KeyCode.X: if (CurrentPanel == Panels.Equipment && PlayerEquipment.IsItemInSlot(EquipmentPanel.GetSelectedSlot().EquipmentSlot) ) { Item uii = PlayerEquipment.GetItemInSlot(EquipmentPanel.GetSelectedSlot().EquipmentSlot); uii.Emitter.Emit(new OnItemUnequipEventData( Owner, uii, EquipmentPanel.GetSelectedSlot().EquipmentSlot )); uii.UIEmitter.Emit(new OnUIItemUnequipEventData(Owner, EquipmentPanel.GetSelectedSlot())); RefreshComparedItems(); } break; } }