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;
        }
Exemple #2
0
 //РАЗДЕЛ ВИЗУАЛИЗАЦИИ МИРОВ
 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)
                                          //......................
                                          //......................}
     }
 }