public void MakeSpellObjects() { m_PlayerSpellDamage = new SpellDamage(); m_PlayerSpellHeal = new SpellHeal(); m_AISpellDamage = new SpellDamage(); m_AISpellHeal = new SpellHeal(); m_AmountOfSpells = 4; m_Spells = new SpellHolder[4]; for (int i = 0; i < m_AmountOfSpells; i++) { GameObject spell = GameObject.CreatePrimitive(PrimitiveType.Cube);; spell.AddComponent <SpellHolder>(); BoxCollider collider = spell.GetComponent <BoxCollider>(); collider.isTrigger = true; collider.size = new Vector2(2f, collider.size.y); spell.gameObject.SetActive(false); m_Spells[i] = (spell.GetComponent <SpellHolder>()); } m_Spells[0].SetSpell(m_PlayerSpellDamage, m_SpellsValue); m_Spells[0].gameObject.name = "PlayerSpellDamage"; m_Spells[1].SetSpell(m_PlayerSpellHeal, m_SpellsValue); m_Spells[1].gameObject.name = "PlayerSpellHeal"; m_Spells[2].SetSpell(m_AISpellDamage, m_SpellsValue); m_Spells[2].gameObject.name = "AISpellDamage"; m_Spells[3].SetSpell(m_AISpellHeal, m_SpellsValue); m_Spells[3].gameObject.name = "AISpellHeal"; }
//static getter public static Spell GetSpell(string type, int targets, bool team, int power, object[] specialEffects) { switch (type) { case "heal": { Spell s = new SpellHeal(targets, team, power); return(s); } case "damage": { Spell s = new SpellDamage(targets, team, power); return(s); } case "periodic": { Spell s = new PeriodicDamageSpell(targets, team, power, specialEffects); return(s); } case "physical damage": { Spell s = new PhysicalSpell(targets, team, power); return(s); } default: { return(null); } } }