void CastAbility(Power CastedPower) { if (CastedPower.GetType() == typeof(Buff)) { CastedPower.Action(BaseCharacter, TargetableAllies.ToArray()); return; } if (CastedPower.NeededMana < BaseCharacter.get_Mana) { if (CastedPower.NeededAP < BaseCharacter.get_ActionPoints) { if (CastedPower.isAoe == false) { if (CastedPower.GetType() == typeof(Taunt)) { CastedPower.Action(BaseCharacter, TargetableAllies.ToArray()); return; } Message.text = " ChooseTarget "; Message.GetComponent <Animator>().Play("Idle", -1, 0f); isTargeting = true; CurentAbility = CastedPower; // CastedPower.Action(BaseCharacter, targetedEnemy); } } else { Message.text = "Not enough Action Points"; Message.GetComponent <Animator>().Play("FadeOut", -1, 0f); } } else { Message.text = "Not enough Mana"; Message.GetComponent <Animator>().Play("FadeOut", -1, 0f); } //private delegate void skill1(){CastAbility(Power A)}; }
void Update() { ///<summary> ///First i tried founding the object by using the RayCast /// </summary> if (Input.GetMouseButtonDown(0) == true && isTargeting == false) { RaycastHit[] hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); hit = Physics.RaycastAll(ray); foreach (RaycastHit hitObject in hit) { if (hitObject.transform.tag == "Hero") { character = hitObject.transform.gameObject; BaseCharacter = character.GetComponent <Base>(); for (int i = 0; i < Abilities.Length; i++) { Abilities[i].onClick.RemoveAllListeners(); } for (int i = 0; i < Abilities.Length; i++) { Power ability = BaseCharacter.abilities[i]; Abilities[i].onClick.AddListener(delegate { CastAbility(ability); }); } break; } } } if (Input.GetMouseButtonDown(0) == true && isTargeting == true) { ChooseTarger(); if (targetedEnemy) { Base[] a = new Base[] { targetedEnemy.GetComponent <Base>() }; CurentAbility.Action(BaseCharacter, a); Message.text = ""; } isTargeting = false; } ///<summary> ///Here i set the fill amount for each bar based on the stats of character gameObject /// </summary> if (character != null) { HPbar.enabled = true; APbar.enabled = true; ManaBar.enabled = true; HeroName.text = BaseCharacter.ClassName; HPbar.fillAmount = BaseCharacter.get_Hp / (BaseCharacter.Stamina * Base.STAMINAMODIFIER); APbar.fillAmount = BaseCharacter.get_ActionPoints / (Base.MAXACTIONPOINTS); ManaBar.fillAmount = BaseCharacter.get_Mana / (BaseCharacter.Endurance * Base.ENDURANCEMODIFIER); } else { HeroName.text = ""; HPbar.enabled = false; APbar.enabled = false; ManaBar.enabled = false; } }