private void Window_KeyDown(object sender, KeyEventArgs e) { setarrowarr(e.Key); switch (e.Key) { case Key.Left: { leftpress = true; break; } case Key.Up: { uppress = true; break; } case Key.Right: { rightpress = true; break; } case Key.Down: { downpress = true; break; } case Key.Space: { if (ship.ShipAmmo > 0) { Sounds.PlaySoundOnce("laser_shoot.wav"); } else { Sounds.EmpLaserSoundPlay(); } spacepress = true; break; } case Key.Oem3: { bool has_console = false; foreach (Window item in Application.Current.Windows) { if (item is Console) { has_console = true; item.Close(); break; } } if (!has_console) { Console _console = new Console(); _console.Owner = this; _console.Show(); } break; } case Key.Escape: { Pause(); break; } } }
private void CollisionTimerTimerTick(object sender, EventArgs e) { BetterRandom random_for_some = new BetterRandom(); // check collision obsts and ship for (int i = 0; i < CurrentObsts.Count; i++) { if (ship.ShipHitBox.IntersectsWith(CurrentObsts[i].GetHitBoxObst())) { ser_hurt = true; ship.ShipSprite.Visual = (Visual)Application.Current.Resources["seryoja_hurt"]; ConsoleMethod.WriteToConsole("Obst number " + i + " hitted!", Brushes.White); ship.ShipHp = ship.ShipHp - CurrentObsts[i].ObstDamage <= 0 ? 0 : (int)(ship.ShipHp - CurrentObsts[i].ObstDamage); AnimationsRace.AnimationShipDamage(ship); Sounds.PlaySoundOnce("hurt_" + random_for_some.Between(1, 2) + ".wav"); if (ship.ShipHp == 0) { GameOver(); } } } // check collision bullets and obsts for (int i = ship.CurrentAmmos.Count - 1; i >= 0; i--) { // bullet on obsts for (int j = 0; j < CurrentObsts.Count; j++) { if (CurrentObsts[j].GetHitBoxObst().IntersectsWith( ship.GetHitBoxFire(ship.CurrentAmmos[i])) && !CurrentObsts[j].Hitted) { CurrentObsts[j].Hitted = true; ship.ShipScore += 10; ConsoleMethod.WriteToConsole("Obst number " + j + " fired by bullet number " + i + "!", Brushes.White); CurrentObsts[j].ObstacleFiredAnimation(); RemoveElementAfterAnimation(CurrentObsts[j].ObstToCanvas); CurrentObsts.Remove(CurrentObsts[j]); Sounds.ObstDamageSoundPlay(); } } // bullet on boss if (bossfight) { if (ship.CurrentAmmos.Count == 0) { return; } if (boss.GetBossHitBox().IntersectsWith(ship.GetHitBoxFire(ship.CurrentAmmos[i]))) { if (boss.BossHealthPoint >= 0) { MainCanvas.Children.Remove(ship.CurrentAmmos[i]); boss.BossHealthPoint -= ship.ShipFireDamage; progressBarHealthBoss.Value = boss.BossHealthPoint; ConsoleMethod.WriteToConsole("Boss hitted!", Brushes.GreenYellow); continue; } else { GameWin(); } } } } // collision boss fire with seryoja if (bossfight) { for (int i = 0; i < boss.CurrentBossAmmos.Count; i++) { try { Rect BossFireHitBox = new Rect(); BossFireHitBox.Width = boss.CurrentBossAmmos[i].Width; BossFireHitBox.Height = boss.CurrentBossAmmos[i].Height; BossFireHitBox.X = boss.CurrentBossAmmos[i].Margin.Left; BossFireHitBox.Y = boss.CurrentBossAmmos[i].Margin.Top; if (BossFireHitBox.IntersectsWith(ship.ShipHitBox)) { if (ship.ShipHp > 0) { ship.ShipHp = ship.ShipHp - boss.BossFireDamage <= 0 ? 0 : ship.ShipHp - boss.BossFireDamage; } else { GameOver(); } } } catch { } } } // check collision with bonuses for (int i = 0; i < CurrentBonuses.Count; i++) { if (ship.ShipHitBox.IntersectsWith(CurrentBonuses[i].GetHitBoxObst()) && !CurrentBonuses[i].Hitted) { CurrentBonuses[i].Hitted = true; if (CurrentBonuses[i] is AmmoBonus) { ser_hurt = true; ship.ShipSprite.Visual = (Visual)Application.Current.Resources["seryoja_happy"]; ConsoleMethod.WriteToConsole("Ammo Bonus obtained!", Brushes.White); ship.ShipAmmo += (CurrentBonuses[i] as AmmoBonus).ammo_count; Sounds.PlaySoundOnce("meh_" + random_for_some.Between(1, 2) + ".wav"); } else if (CurrentBonuses[i] is HealthBonus) { ConsoleMethod.WriteToConsole("HP Bonus obtained!", Brushes.White); if (ship.ShipHp < 100) { ser_hurt = true; ship.ShipSprite.Visual = (Visual)Application.Current.Resources["seryoja_happy"]; ship.ShipHp = ship.ShipHp + (CurrentBonuses[i] as HealthBonus).health_count >= 100 ? 100 : ship.ShipHp + (CurrentBonuses[i] as HealthBonus).health_count; Sounds.PlaySoundOnce("meh_" + random_for_some.Between(1, 2) + ".wav"); } else { continue; } } RemoveElementAfterAnimation(CurrentBonuses[i].bonus_rectangle); CurrentBonuses.Remove(CurrentBonuses[i]); } } }