// on item drop or item trash public bool RemoveSpellCast(HotBarItem baseItem) { SpellBookItem key = null; if (ReferenceEquals(baseItem, null) || ReferenceEquals(key = baseItem as SpellBookItem, null)) { return(false); } return(existingSpellCasts.Remove(key)); }
private SpellCastBase CreateSpellCast(SpellBookItem baseItem) { var spellCasterClone = Instantiate(baseItem.SpellCastPrefab, Vector3.zero, Quaternion.identity, transform); var spellCircleClone = Instantiate(baseItem.SpellCirclePrefab, Vector3.zero, Quaternion.identity); spellCircleClone.gameObject.SetActive(false); spellCircleClone.Init(spellCasterClone); spellCasterClone.Init(gameObject, statsSystemBehaviour.StatsSystem, cooldownSys , baseItem.CooldownData.Id, castCirclePlacement, spellCircleClone, baseItem.SpellCastData , baseItem.SpellPrefab, movementScripts); existingSpellCasts.Add(baseItem, spellCasterClone); return(spellCasterClone); }
private void Equip(SpellBookItem baseItem) { SpellCastBase castToEquip = default; if (existingSpellCasts.ContainsKey(baseItem)) { castToEquip = existingSpellCasts[baseItem]; } if (castToEquip == null) { castToEquip = CreateSpellCast(baseItem); } castToEquip.gameObject.SetActive(true); equippedSpellCastBase = castToEquip; onSpellChange?.Invoke(); }
public void TryEquipSpell(HotBarItem hotBarItem) { if (!enabled) { return; } SpellBookItem spellItem = default; var isSpell = !ReferenceEquals(hotBarItem, null) && !ReferenceEquals(spellItem = hotBarItem as SpellBookItem, null); if (!isSpell) { return; } var equippedSpellExists = !ReferenceEquals(equippedSpellCastBase, null); if (equippedSpellExists && equippedSpellCastBase.IsCasting) { return; } if (!equippedSpellExists) { Equip(spellItem); } else { var dataIsEqual = ReferenceEquals(equippedSpellCastBase.Data, spellItem.SpellCastData) && ReferenceEquals(equippedSpellCastBase.Element, spellItem.SpellElement); if (dataIsEqual) { return; } UnEquip(); Equip(spellItem); } onSpellChange?.Invoke(); }