public Form1() { InitializeComponent(); Init(); try { ToolStripMenuItem tsmiMagic = new ToolStripMenuItem("Magic"); foreach (BasicSpell spell in m_lstSpells) { ToolStripMenuItem tsmiSpell = spell.ToToolStripMenuItem(); if (spell.CanHitAllEnemies) { ToolStripItem tsiAll = tsmiSpell.DropDownItems.Add("All"); tsiAll.Click += (sender, arguments) => m_lstTargets.ForEach((target) => TryCastSpell(spell, target)); } else { } // This spell can not hit all enemies for (int i = 0; i < m_lstTargets.Count; i++) { BasicTarget target = m_lstTargets[i]; ToolStripItem tsiTarget = tsmiSpell.DropDownItems.Add($"Target {i}: {target.Name}"); tsiTarget.Image = target.StatusImage; tsiTarget.Click += (sender, arguments) => TryCastSpell(spell, target); } tsmiMagic.DropDownItems.Add(tsmiSpell); } m_tsCombatOptions.Items.Add(tsmiMagic); } catch (Exception ex) { MessageBox.Show($"{ex}"); } }
private void TryCastSpell(BasicSpell spell, BasicTarget target) { if (!spell.Cast(target)) { MessageBox.Show($"You can not cast this spell with your current mana!"); } }
public override bool Cast(BasicTarget target) { // TODO: Check if castable (maybe add caster as parameter) target.HP -= 500; return(true); }
public abstract bool Cast(BasicTarget target);