Esempio n. 1
0
        /// <summary>
        /// Стрильба
        /// </summary>
        /// <param name="nameTank">Имя типа танка</param>
        /// <param name="velocity">Скорость снаряда</param>
        protected void Fire(KeyObjGame nameTank)
        {
            // Если пуля еще летит
            if (shell == null || !shell.IsAlive)
            {
                if (nameTank == KeyObjGame.Player)
                {
                    SoundGame.SoundFire();
                }
                // Создание снаряда в зависимости от направления танка
                switch (direction)
                {
                case Direction.Up:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Left + (spriteRectangle.Width / 2 - SettingsGame.WidtchShell / 2), spriteRectangle.Top - SettingsGame.HeighShell, SettingsGame.WidtchShell, SettingsGame.HeighShell), this.velosityShel, this.direction, nameTank);
                    break;

                case Direction.Right:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Right + 1, spriteRectangle.Top + (spriteRectangle.Height / 2 - SettingsGame.HeighShell / 2), SettingsGame.HeighShell, SettingsGame.WidtchShell), this.velosityShel, this.direction, nameTank);
                    break;

                case Direction.Down:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Left + (spriteRectangle.Width / 2 - SettingsGame.WidtchShell / 2), spriteRectangle.Bottom, SettingsGame.WidtchShell, SettingsGame.HeighShell), this.velosityShel, this.direction, nameTank);
                    break;

                case Direction.Left:
                    shell = new CollisionShell(new Rectangle(spriteRectangle.Left - SettingsGame.WidtchShell, spriteRectangle.Top + (spriteRectangle.Height / 2 - SettingsGame.HeighShell / 2), SettingsGame.HeighShell, SettingsGame.WidtchShell), this.velosityShel, this.direction, nameTank);
                    break;
                }
            }
        }
        /// <summary>
        /// Стрильба
        /// </summary>
        /// <param name="nameTank">Имя типа танка</param>
        /// <param name="velocity">Скорость снаряда</param>
        protected void Fire(KeyObjGame nameTank, int velocity)
        {
            // Если пуля еще летит
            if (shell == null || !shell.IsAlive)
            {
                // Создание снаряда в зависимости от направления танка
                switch (direction)
                {
                case Direction.Up:
                    shell = new AnimationDetonationShell(new Rectangle(spriteRectangle.Left + (spriteRectangle.Width / 2 - SizeGame.WidtchShell / 2), spriteRectangle.Top - SizeGame.HeighShell, SizeGame.WidtchShell, SizeGame.HeighShell), velocity, this.direction, nameTank);
                    break;

                case Direction.Right:
                    shell = new AnimationDetonationShell(new Rectangle(spriteRectangle.Right + 1, spriteRectangle.Top + (spriteRectangle.Height / 2 - SizeGame.HeighShell / 2), SizeGame.HeighShell, SizeGame.WidtchShell), velocity, this.direction, nameTank);
                    break;

                case Direction.Down:
                    shell = new AnimationDetonationShell(new Rectangle(spriteRectangle.Left + (spriteRectangle.Width / 2 - SizeGame.WidtchShell / 2), spriteRectangle.Bottom, SizeGame.WidtchShell, SizeGame.HeighShell), velocity, this.direction, nameTank);
                    break;

                case Direction.Left:
                    shell = new AnimationDetonationShell(new Rectangle(spriteRectangle.Left - SizeGame.WidtchShell, spriteRectangle.Top + (spriteRectangle.Height / 2 - SizeGame.HeighShell / 2), SizeGame.HeighShell, SizeGame.WidtchShell), velocity, this.direction, nameTank);
                    break;
                }
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public override void Response(ShellObj shellObj)
 {
     // Устанавливаем картинку убитого орла
     spriteImage = Properties.Resources.Eagle2; // todo
     // Миняем состояние Level
     Level.StateOfLevel = StateOfLevel.GameOver;
 }
 public void Response(ShellObj shellObj)
 {
     shellObj.Detonation = true;
     if (shellObj.NameTank == KeyObjGame.Player)
     {
         SoundGame.SoundDetonation();
     }
 }
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public override void Response(ShellObj sp)
 {
     // Помичаем обьект как умерший
     isAlive = false;
     // Удаляем из списка снарядов
     Level.DictionaryObjGame[KeyObjGame.ShellObj].Remove(this);
     // Помичаем обьект как умерший
     sp.IsAlive = false;
     // Удаляем из списка снарядов
     Level.DictionaryObjGame[KeyObjGame.ShellObj].Remove(sp);
 }
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public virtual void Response(ShellObj shellObj)
 {
     // Если снаряд выпущен не етим танком
     if (shellObj.NameTank != KeyObjGame.TankEnemy)
     {
         // Удаление из списка обьектов игры
         Level.DictionaryObjGame[KeyObjGame.TankEnemy].Remove(this);
         shellObj.Detonation = true;
         new DetonationShellBig(shellObj.Rect.Location, shellObj.Direction, countPoints);
     }
 }
Esempio n. 7
0
        /// <summary>
        /// Вызывается при попадании снаряда в обьект
        /// </summary>
        /// <param name="shellObj">Ссылка на снаряд</param>
        public override void Response(ShellObj shellObj)
        {
            // Если снаряд выпущен не етим танком
            if (shellObj != this.shell)
            {
                // Удаление со списка обектов игры
                Level.DictionaryObjGame[KeyObjGame.TankPlayer].Remove(this);
            }

            // Миняем статус Level yf game over
            Level.StateOfLevel = StateOfLevel.GameOver;
        }
Esempio n. 8
0
        /// <summary>
        /// Вызывается при попадании снаряда в обьект
        /// </summary>
        /// <param name="shellObj">Ссылка на снаряд</param>
        public override void Response(ShellObj shellObj)
        {
            // Если снаряд выпущен не етим танком
            if (shellObj != this.shell)
            {
                // Удаление из списка обьектов игры
                Level.DictionaryObjGame[KeyObjGame.TankEnemy].Remove(this);

                // Удаление из списка одново танка для информационной боковой панели
                var list = Level.DictionaryObjGame[KeyObjGame.InformationTank];
                list.RemoveAt(list.Count - 1);
            }
        }
Esempio n. 9
0
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public void Response(ShellObj shellObj)
 {
     if (this.isAlive)
     {
         this.isAlive = false;
         // Устанавливаем картинку убитого орла
         spriteImage         = Properties.Resources.Eagle2;
         shellObj.Detonation = true;
         new DetonationShellBig(shellObj.Rect.Location, shellObj.Direction, 0);
         // Миняем состояние Level
         Level.StateOfLevel = StateOfLevel.GameOver;
     }
 }
Esempio n. 10
0
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public void Response(ShellObj shellObj)
 {
     // Если снаряд выпущен не етим танком
     if (shellObj.NameTank == KeyObjGame.TankEnemy)
     {
         // Удаление со списка обектов игры
         Level.DictionaryObjGame[KeyObjGame.Player].Remove(this);//todo
         shellObj.Detonation = true;
         // Миняем статус Level на game over
         Level.StateOfLevel = StateOfLevel.GameOver;//todo
         new DetonationShellBig(shellObj.Rect.Location, shellObj.Direction, 0);
         SoundGame.Stop();
     }
 }
        /// <summary>
        /// Столкновение с обектами игры
        /// </summary>
        protected virtual void CollisionObjLevel()
        {
            foreach (var KeyValue in Level.DictionaryObjGame)
            {
                // Исключаем из проверки танки Playera если снаряд выпущеный ево танком
                if (KeyValue.Key == KeyObjGame.TankPlayer && this.nameTank == KeyObjGame.TankPlayer)
                {
                    continue;
                }
                // Исключаем из проверки танки противника если снаряд выпущеный ево танком
                if (KeyValue.Key == KeyObjGame.TankEnemy && this.nameTank == KeyObjGame.TankEnemy)
                {
                    continue;
                }
                // Исключаем из проверки танки для боковой информационной панели
                if (KeyValue.Key == KeyObjGame.InformationTank)
                {
                    continue;
                }

                for (int i = 0; i < KeyValue.Value.Count; i++)
                {
                    // Исключаем из проверки картинку Game Over
                    if (KeyValue.Value[i] is ImgGameOver)
                    {
                        continue;
                    }

                    // Проверка если обьект снаряд
                    if (KeyValue.Value[i] is ShellObj)
                    {
                        ShellObj bj = (ShellObj)KeyValue.Value[i];
                        // Исключаем из проверки если пуля принадлежит томуже типу танков
                        if (bj.NameTank == this.nameTank)
                        {
                            continue;
                        }
                    }
                    // Проверка столкновения
                    if (spriteRectangle.IntersectsWith(KeyValue.Value[i].Rect))
                    {
                        // Записуем ссылку на обьект с которым произошло столкновение
                        objResponse = KeyValue.Value[i];
                        // Помичаем обьект как сдетонировавший
                        this.detonation = true;
                    }
                }
            }
        }
Esempio n. 12
0
 public override void Response(ShellObj shellObj)
 {
     // Если снаряд выпущен не етим танком
     if (shellObj.NameTank != KeyObjGame.TankEnemy)
     {
         if (numberOfHits == 0)
         {
             SoundGame.SoundDetonation();
             moweLeft            = moweLeftGren;
             moweRight           = moweRightGren;
             moweUp              = moweUpGren;
             moweDown            = moweDownGren;
             shellObj.Detonation = true;
             numberOfHits++;
         }
         else if (numberOfHits == 1)
         {
             SoundGame.SoundDetonation();
             moweLeft            = moweLeftYellow;
             moweRight           = moweRightYellow;
             moweUp              = moweUpYellow;
             moweDown            = moweDownYellow;
             shellObj.Detonation = true;
             numberOfHits++;
         }
         else if (numberOfHits == 2)
         {
             SoundGame.SoundDetonation();
             moweLeft            = moweLeftGray;
             moweRight           = moweRightGray;
             moweUp              = moweUpGray;
             moweDown            = moweDownGray;
             shellObj.Detonation = true;
             numberOfHits++;
         }
         else if (numberOfHits == 3)
         {
             base.Response(shellObj);
         }
     }
 }
        /// <summary>
        /// Столкновение с обектами игры
        /// </summary>
        protected virtual void CollisionObjLevel()
        {
            foreach (var KeyValue in Level.DictionaryObjGame)
            {
                for (int i = 0; i < KeyValue.Value.Count; i++)
                {
                    // Проверка если обьект снаряд
                    if (KeyValue.Value[i] is ShellObj)
                    {
                        ShellObj bj = (ShellObj)KeyValue.Value[i];
                        if (bj == this)
                        {
                            continue;
                        }

                        //// Исключаем из проверки если пуля принадлежит томуже типу танков
                        if (bj.NameTank == this.nameTank)
                        {
                            continue;
                        }
                    }

                    IResponse iResponse = KeyValue.Value[i] as IResponse;
                    if (iResponse != null)
                    {
                        // Проверка столкновения
                        if (spriteRectangle.IntersectsWith(KeyValue.Value[i].Rect))
                        {
                            // Записуем ссылку на обьект с которым произошло столкновение
                            iResponse.Response(this);
                            return;
                        }
                    }
                }
            }
        }
Esempio n. 14
0
 /// <summary>
 /// Вызывается при попадании снаряда в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на снаряд</param>
 public virtual void Response(ShellObj shellObj)
 {
 }
Esempio n. 15
0
 /// <summary>
 /// Вызывается при попадании пули в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на пулю</param>
 public override void Response(ShellObj shellObj)
 {
     // Удаление со списка обьектов игры
     Level.DictionaryObjGame[KeyObjGame.BrickWall].Remove(this);
 }
Esempio n. 16
0
 /// <summary>
 /// Вызывается при попадании пули в обьект
 /// </summary>
 /// <param name="shellObj">Ссылка на пулю</param>
 public void Response(ShellObj shellObj)
 {
     shellObj.Detonation = true;
     // Удаление со списка обьектов игры
     Level.DictionaryObjGame[KeyObjGame.Wall].Remove(this);
 }