public static void Main() { string[] wizardZeroData = Console.ReadLine().Split(); Wizard zero = new Wizard(wizardZeroData[0], int.Parse(wizardZeroData[1])); WizardRepository.AddWizard(zero); string input = Console.ReadLine(); while (input != "END") { string[] data = input.Split(); int id = int.Parse(data[0]); string spellName = data[1]; if (spellName == "REFLECTION") { spellName = "ReflectionMagic"; } else { spellName = "FireBallMagic"; } Type typeOfSpell = Assembly .GetExecutingAssembly() .GetTypes() .First(t => t.Name == spellName); var spell = (IMagic)Activator.CreateInstance(typeOfSpell); Wizard wiz = WizardRepository.ReturnWizardByID(id); wiz.CastMagic(spell); input = Console.ReadLine(); } }
public void Cast(Wizard wiz) { Console.WriteLine($"{wiz.Name} {wiz.ID} casts Reflection"); if (wiz.LeftWiz == null && wiz.RightWiz == null) { Wizard leftWiz = new Wizard(wiz.Name, wiz.MagicalPower / 2); Wizard rightWiz = new Wizard(wiz.Name, wiz.MagicalPower / 2); wiz.LeftWiz = leftWiz; wiz.RightWiz = rightWiz; WizardRepository.AddWizard(leftWiz); WizardRepository.AddWizard(rightWiz); } else { wiz.LeftWiz.CastMagic(new ReflectionMagic()); wiz.RightWiz.CastMagic(new ReflectionMagic()); } }