/// <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; } } }
/// <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); } }
/// <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; }
/// <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); } }
/// <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; } }
/// <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; } } } }
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; } } } } }
/// <summary> /// Вызывается при попадании снаряда в обьект /// </summary> /// <param name="shellObj">Ссылка на снаряд</param> public virtual void Response(ShellObj shellObj) { }
/// <summary> /// Вызывается при попадании пули в обьект /// </summary> /// <param name="shellObj">Ссылка на пулю</param> public override void Response(ShellObj shellObj) { // Удаление со списка обьектов игры Level.DictionaryObjGame[KeyObjGame.BrickWall].Remove(this); }
/// <summary> /// Вызывается при попадании пули в обьект /// </summary> /// <param name="shellObj">Ссылка на пулю</param> public void Response(ShellObj shellObj) { shellObj.Detonation = true; // Удаление со списка обьектов игры Level.DictionaryObjGame[KeyObjGame.Wall].Remove(this); }