/// <summary>
 /// The main entry point for the application.
 /// </summary>
 static void Main(string[] args)
 {
     using (RNSEB game = new RNSEB())
     {
         game.Run();
     }
 }
        public void GrantUpgrade(RNSEB.HenryUpgrade up)
        {
            switch(up) {
                //zihao focused weapons
                case RNSEB.HenryUpgrade.PlayerPulsePhaser:
                    Zihao.FocusedWeapon = new PulsePhaser(Zihao);
                    ZihaoWepBar.ChangeWeapon(1, Zihao.FocusedWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerQuadLaser:
                    Zihao.FocusedWeapon = new QuadLaser(Zihao);
                    ZihaoWepBar.ChangeWeapon(1, Zihao.FocusedWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerIonBeam:
                    Zihao.FocusedWeapon = new IonBeam(Zihao);
                    ZihaoWepBar.ChangeWeapon(1, Zihao.FocusedWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerShockwave:
                    Zihao.FocusedWeapon = new Shockwave(Zihao);
                    ZihaoWepBar.ChangeWeapon(1, Zihao.FocusedWeapon);
                    break;

                //zihao diffuse weapons
                case RNSEB.HenryUpgrade.PlayerTwinRockets:
                    Zihao.DiffuseWeapon = new TwinRockets(Zihao);
                    ZihaoWepBar.AddWeapon(Zihao.DiffuseWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerSeekers:
                    Zihao.DiffuseWeapon = new SeekerMissles(Zihao);
                    ZihaoWepBar.ChangeWeapon(2, Zihao.DiffuseWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerSpiralRockets:
                    Zihao.DiffuseWeapon = new SpiralRockets(Zihao);
                    ZihaoWepBar.ChangeWeapon(2, Zihao.DiffuseWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerEnergyBomb:
                    Zihao.DiffuseWeapon = new EnergyBomb(Zihao);
                    ZihaoWepBar.ChangeWeapon(2, Zihao.DiffuseWeapon);
                    break;
                case RNSEB.HenryUpgrade.PlayerDrones:
                    Zihao.DiffuseWeapon = new DroneLauncher(Zihao);
                    ZihaoWepBar.ChangeWeapon(2, Zihao.DiffuseWeapon);
                    break;

                //zihao upgrades
                case RNSEB.HenryUpgrade.PlayerShieldCapacity1:
                    Zihao.ShieldMax += 2;
                    break;
                case RNSEB.HenryUpgrade.PlayerShieldRecharge1:
                    Zihao.ShieldRegenRate *= 1.25f;
                    break;
                case RNSEB.HenryUpgrade.PlayerShieldCapacity2:
                    Zihao.ShieldMax += 4;
                    break;
                case RNSEB.HenryUpgrade.PlayerShieldRecharge2:
                    Zihao.ShieldRegenRate *= 1.25f;
                    break;
                case RNSEB.HenryUpgrade.PlayerShieldRecovery:
                    Zihao.ShieldDownTime /= 3.0f;
                    break;

                //notus focused spawners
                case RNSEB.HenryUpgrade.BossPhotonTorpedo:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.3f, "PhotonTorpedo", 400));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count-1]);
                    break;
                case RNSEB.HenryUpgrade.BossPlasmaTorpedo:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.2f, "PlasmaTorpedo", 200));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count-1]);
                    break;
                case RNSEB.HenryUpgrade.BossQuantumMines:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.2f, "QuantumMines", 300));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;
                case RNSEB.HenryUpgrade.BossReplicator:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.1f, "Replicator", 250));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;

                //notus diffuse spawners
                case RNSEB.HenryUpgrade.BossRingOfFire:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.2f, "RingOfFire", 300));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;
                case RNSEB.HenryUpgrade.BossHorizontalPlasmaWall:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.2f, "HorizontalPlasmaWall", 250));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;
                case RNSEB.HenryUpgrade.BossVerticalPlasmaWall:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.2f, "VerticalPlasmaWall", 250));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;
                case RNSEB.HenryUpgrade.BossHulk:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.1f, "Hulk", 200));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;
                case RNSEB.HenryUpgrade.BossMagneto:
                    Notus.LaunchBays.Add(new LaunchBay(Notus, 0.2f, "Magneto", 300));
                    NotusWepBar.AddWeapon(Notus.LaunchBays[Notus.LaunchBays.Count - 1]);
                    break;

                //notus upgrades
                case RNSEB.HenryUpgrade.BossStaticField:
                    Notus.ExtraWeapons.Add(new ArseLightning(Notus));
                    Notus.StaticField = true;
                    break;
                case RNSEB.HenryUpgrade.BossKevlar:
                    Notus.DamageReceivedMultiplier = 0.75f;
                    break;
                case RNSEB.HenryUpgrade.BossNanoregenerativeSubsystems:
                    Notus.Regeneration = true;
                    break;
                case RNSEB.HenryUpgrade.BossTritaniumBulkheads:
                    Notus.DamageReceivedMultiplier = 0.5f;
                    break;
                case RNSEB.HenryUpgrade.BossAutoTurrets:
                    Notus.ExtraWeapons.Add(new AutoLaser(Notus));
                    break;

                default:
                    //unimplemented upgrade; do nothin'
                    break;
            }
        }