public void Render(IWords Iworld, IForms IfieldForm) //мир и формы должны через интерфейсную ссылку передаваться { this.Iworld = Iworld; //или перегружать класс будем(хуже) if (IfieldForm is FieldForm1) { fieldForm = IfieldForm as FieldForm1; } //РАЗВИЛКА!!!!!! if (Iworld is World_1) { world = Iworld as World_1; verwolfHeight = world.verwolfHeight; verwolfWight = world.verwolfWight; subjectPanelGame = world.subjectsPanel; hero = world.hero; fieldForm.renderer = this; //ПОДПИСКИ НА СОБЫТИЯ ФОРМЫ---> ****вервольфа нужно обобщать через интерфейс или абстрактный класс //this.fieldForm.eTruck += new FieldForm.Truck(DrawTrucks); fieldForm.eFieldMouseClick += new FieldMouseClick(DrawCaptureObjects); //ПОДПИСКА ЧЕРЕЗ АНОНИМНЫЙ МЕТОД--->снимаем управление с Hero fieldForm.eFieldMouseUp += delegate(object sender, MouseEventArgs e){ if (hero.CurrentState == stateHero.Control && Math.Abs(hero.Location.X - e.Location.X) < hero.rangeHero && Math.Abs(hero.Location.Y - e.Location.Y) < hero.rangeHero) { if (e.Button == MouseButtons.Right) { hero.CurrentState = stateHero.Stay; } } }; //ПОДПИСКА ЧЕРЕЗ ЛЯМБДА fieldForm.eFieldMouseMove += (sender, e) => { Point verwolfBeginLocation = world.verfolfBeginLocation; int rateX = verwolfBeginLocation.X + world.verwolfWight; int rateY = verwolfBeginLocation.Y + world.verwolfHeight; if (e.Location.X > verwolfBeginLocation.X && e.Location.X < rateX && e.Location.Y > verwolfBeginLocation.Y && e.Location.Y < rateY && world.verwolf.CurrentState == WolfState.Stay) { DrawTrucks(true); } else { DrawTrucks(false); } }; } InitializeImages(); hero = world.hero; }
//РАЗДЕЛ ВИЗУАЛИЗАЦИИ МИРОВ void StartWorld(IWords Iworld) { if (Iworld is World_1) { fieldForm = IForm1 as FieldForm1; fieldForm.Show(); renderer.Render(Iworld, IForm1); //запуск мира №1 //else if(Iworld is World2) //...................... //......................} } }