public void OnAfterSlotUpdate(InventorySlot2 _slot) { if (_slot.ItemObject == null) { return; } switch (_slot.parent.inventory.type) { case InterfaceType.Inventory: Debug.Log("interacting with inventory : after"); break; case InterfaceType.Equipment: break; case InterfaceType.Chest: break; case InterfaceType.Enchantress: Debug.Log("interacting with enchantress : after"); GenerateModifierList(_slot); break; default: break; } }
// Start is called before the first frame update void Start() { inventory = Inventory.instance; inventory.onItemChangedCallback += UpdateUI; slots = itemsParent.GetComponent <InventorySlot2>(); }
public void OnBeforeSlotUpdate(InventorySlot2 _slot) { if (_slot.ItemObject == null) { return; } switch (_slot.parent.inventory.type) { case InterfaceType.Inventory: Debug.Log("interacting with inventory : before"); break; case InterfaceType.Equipment: break; case InterfaceType.Chest: break; case InterfaceType.Enchantress: Debug.Log("interacting with enchantress : before"); var btns = statContainer.GetComponentsInChildren <EnchantressModButton>(); foreach (var btn in btns) { Destroy(btn.gameObject); } break; default: break; } }
public void SwapItems(InventorySlot2 item1, InventorySlot2 item2) { if (item2.CanPlaceInSlot(item1.ItemObject) && item1.CanPlaceInSlot(item2.ItemObject)) { InventorySlot2 temp = new InventorySlot2(item2.item, item2.amount); item2.UpdateSlot(item1.item, item1.amount); item1.UpdateSlot(temp.item, temp.amount); } }
//Generate a modifier list when an Item is dropped on enchanteress UI public void GenerateModifierList(InventorySlot2 _slot) { foreach (var buff in _slot.item.buffs) { var go = Instantiate(ModTextPrefab, statContainer); EnchantressModButton modButton = go.GetComponent <EnchantressModButton>(); modButton.TextModButton.text = buff.attribute + " : " + buff.value; modButton.buff = buff; } }
public void SetAnimatorPlayer(InventorySlot2 _slot) { if ((weaponRightTransform != null || weaponLeftTransform != null) && _slot.ItemObject.AnimatorOverride != null) { _animator.runtimeAnimatorController = _slot.ItemObject.AnimatorOverride; } else { _animator.runtimeAnimatorController = animatorOverrideDefault; } }
private void OnSlotUpdate(InventorySlot2 _slot) { if (_slot.item.Id >= 0) { _slot.slotDisplay.transform.GetChild(0).GetComponentInChildren <Image>().sprite = _slot.ItemObject.uiDisplay; _slot.slotDisplay.transform.GetChild(0).GetComponentInChildren <Image>().color = new Color(1, 1, 1, 1); _slot.slotDisplay.GetComponentInChildren <TextMeshProUGUI>().text = _slot.amount == 1 ? "" : _slot.amount.ToString("n0"); } else { _slot.slotDisplay.transform.GetChild(0).GetComponentInChildren <Image>().sprite = null; _slot.slotDisplay.transform.GetChild(0).GetComponentInChildren <Image>().color = new Color(1, 1, 1, 0); _slot.slotDisplay.GetComponentInChildren <TextMeshProUGUI>().text = ""; } }
// Mouse drag end public void OnDragEnd(GameObject obj) { Destroy(MouseData.tempItemBeingDragged); if (MouseData.interfaceMouseIsOver == null) { slotsOnInterface[obj].RemoveItem(); return; } if (MouseData.slotHoveredOver) { InventorySlot2 mouseHoverSlotData = MouseData.interfaceMouseIsOver.slotsOnInterface[MouseData.slotHoveredOver]; inventory.SwapItems(slotsOnInterface[obj], mouseHoverSlotData); } }
public bool AddItem(Item2 _item, int _amount) { if (EmptySlotCount <= 0) { return(false); } InventorySlot2 slot = FindItemOnInventory(_item); if (!database.ItemObjects[_item.Id].stackable || slot == null) { SetEmptySlot(_item, _amount); return(true); } slot.AddAmount(_amount); return(true); }
public void OnAddItem(InventorySlot2 _slot) { if (_slot.ItemObject == null) { return; } switch (_slot.parent.inventory.type) { case InterfaceType.Inventory: break; case InterfaceType.Equipment: print(string.Concat("Placed ", _slot.ItemObject, " on ", _slot.parent.inventory.type, ", Allowed Items: ", string.Join(", ", _slot.AllowedItems))); for (int i = 0; i < _slot.item.buffs.Length; i++) { for (int j = 0; j < attributes.Length; j++) { if (attributes[j].type == _slot.item.buffs[i].attribute) { attributes[j].value.AddModifier(_slot.item.buffs[i]); } } if (_slot.item.buffs[i].attribute == StatTypes.Stamina) { Debug.Log("oof v'la la stamina"); GetComponent <Health>().addHealthPlayer(BONUS_HEATH_PER_POINT * _slot.item.buffs[i].value); GameObject.Find("EnergyGlobe").GetComponentInChildren <EnergyGlobeControl>().addEnergyPlayer((int)BONUS_HEATH_PER_POINT * _slot.item.buffs[i].value); } } StatTextUpdate(); if (_slot.ItemObject.characterDisplay != null || _slot.ItemObject.characterDisplayRight != null || _slot.ItemObject.characterDisplayLeft != null) { switch (_slot.AllowedItems[0]) { case ItemType.Helmet: //helmetTransform = boneCombiner.AddLimb(_slot.ItemObject.characterDisplay,_slot.ItemObject.boneNames); GameManager.Instance.player.GetComponent <FighterSpell>().UpdateSpell(_slot.ItemObject.Spell, CastSource.Pet); break; case ItemType.Weapon: GameManager.Instance.player.GetComponent <FighterSpell>().UpdateSpell(_slot.ItemObject.Spell, CastSource.Weapon); switch (_slot.ItemObject.type[1]) { case ItemType.UniqueWeapon: weaponRightTransform = Instantiate(_slot.ItemObject.characterDisplay, HandTransformRight).transform; SetAnimatorPlayer(_slot); break; case ItemType.DualWeapon: weaponRightTransform = Instantiate(_slot.ItemObject.characterDisplayRight, HandTransformRight).transform; weaponLeftTransform = Instantiate(_slot.ItemObject.characterDisplayLeft, HandTransformLeft).transform; SetAnimatorPlayer(_slot); break; case ItemType.DoubleHandWeapon: weaponRightTransform = Instantiate(_slot.ItemObject.characterDisplay, HandTransformRight).transform; SetAnimatorPlayer(_slot); break; default: Debug.Log("erreur"); break; } break; case ItemType.Legs: //bootsTransform = boneCombiner.AddLimb(_slot.ItemObject.characterDisplay, _slot.ItemObject.boneNames); break; case ItemType.Chest: GameManager.Instance.player.GetComponent <FighterSpell>().UpdateSpell(_slot.ItemObject.Spell, CastSource.Armor); //chestTransform = boneCombiner.AddLimb(_slot.ItemObject.characterDisplay, _slot.ItemObject.boneNames); break; } } break; case InterfaceType.Chest: break; case InterfaceType.Enchantress: break; default: break; } }
public void OnRemoveItem(InventorySlot2 _slot) { if (_slot.ItemObject == null) { return; } switch (_slot.parent.inventory.type) { case InterfaceType.Inventory: break; case InterfaceType.Equipment: print(string.Concat("Removed ", _slot.ItemObject, " on ", _slot.parent.inventory.type, ", Allowed Items: ", string.Join(", ", _slot.AllowedItems))); for (int i = 0; i < _slot.item.buffs.Length; i++) { for (int j = 0; j < attributes.Length; j++) { if (attributes[j].type == _slot.item.buffs[i].attribute) { attributes[j].value.RemoveModifier(_slot.item.buffs[i]); } } if (_slot.item.buffs[i].attribute == StatTypes.Stamina) { GetComponent <Health>().addHealthPlayer(-(BONUS_HEATH_PER_POINT * _slot.item.buffs[i].value)); GameObject.Find("EnergyGlobe").GetComponentInChildren <EnergyGlobeControl>().addEnergyPlayer((int)-(BONUS_HEATH_PER_POINT * _slot.item.buffs[i].value)); } } StatTextUpdate(); if (_slot.ItemObject.characterDisplay != null || _slot.ItemObject.characterDisplayRight != null || _slot.ItemObject.characterDisplayLeft != null) { switch (_slot.AllowedItems[0]) { case ItemType.Helmet: GameManager.Instance.player.GetComponent <FighterSpell>().UpdateSpell(null, CastSource.Pet); //Destroy(helmet.gameObject); break; case ItemType.Weapon: GameManager.Instance.player.GetComponent <FighterSpell>().UpdateSpell(null, CastSource.Weapon); switch (_slot.ItemObject.type[1]) { case ItemType.UniqueWeapon: Destroy(weaponRightTransform.gameObject); weaponRightTransform = null; weaponLeftTransform = null; SetAnimatorPlayer(_slot); break; case ItemType.DualWeapon: Destroy(weaponRightTransform.gameObject); Destroy(weaponLeftTransform.gameObject); weaponRightTransform = null; weaponLeftTransform = null; SetAnimatorPlayer(_slot); break; case ItemType.DoubleHandWeapon: Destroy(weaponRightTransform.gameObject); weaponRightTransform = null; weaponLeftTransform = null; SetAnimatorPlayer(_slot); break; default: Debug.Log("erreur"); break; } break; case ItemType.Legs: // ajouter spell si ajout slot dans ui //Destroy(boots.gameObject); break; case ItemType.Chest: GameManager.Instance.player.GetComponent <FighterSpell>().UpdateSpell(null, CastSource.Armor); //Destroy(chest.gameObject); break; } } break; case InterfaceType.Chest: break; default: break; } }
private void Start() { inventory.GetSlots[0].OnBeforeUpdate += OnBeforeSlotUpdate; inventory.GetSlots[0].OnAfterUpdate += OnAfterSlotUpdate; enchantressSlot = inventory.GetSlots[0]; }