public void SetPlane(string name, ePlaneType planeType, string nameMaterial, double materialAngle, double thickness, bool incompatibleModes, int color = -1, string notes = "", string GUID = "") { }
public void GetPlane(string name, ref ePlaneType planeType, ref string nameMaterial, ref double materialAngle, ref double thickness, ref bool incompatibleModes, ref int color, ref string notes, ref string GUID) { }
/// <summary> /// Converts the type of to plane. /// </summary> /// <param name="value">The value.</param> /// <returns>ePlaneType.</returns> private static string convertFromPlaneType(ePlaneType value) { switch (value) { case ePlaneType.PlaneStress: return("Plane-Stress"); case ePlaneType.PlaneStrain: return("Plane-Strain"); default: return(string.Empty); } }
public Level(int startingWave, int dropRateModifier, int waveDelayInMS, int area, float scoreModifier, string music, ePlaneType planeType, string shipName) { // Music Music = music; MP3MusicMgr.Instance.PlayMusic(music); ScoreModifier = scoreModifier; WaveNr = startingWave; ItemEnemy.LastWaveSpawn = WaveNr; DropRateModifier = dropRateModifier; SpawnDelayTimer = new SimpleTimer(waveDelayInMS); ScrollBG = new ScrollBG("bg0" + area.ToString()); Shop.IsFirstVisit = true; if (area == 3 || area == 4) { MG1.MGDrawColor = Color.DarkRed; MG2.MGDrawColor = Color.DarkBlue; } else { MG1.MGDrawColor = MG2.MGDrawColor = Color.White; } WaveNrSB = new StringBuilder(startingWave.ToString(), 2); BroadPhase.Instance = new BroadPhase(128); BroadPhase.Instance.Init(); Level.Instance = this; #region Generic Pools MGPool = new Pool <MG1>(25, true, g => !g.IsDisposed, () => MG1.PoolConstructor()); MG2Pool = new Pool <MG2>(1, true, g => !g.IsDisposed, () => MG2.PoolConstructor()); AutoAimPool = new Pool <AutoAim>(100, true, g => !g.IsDisposed, () => AutoAim.PoolConstructor()); BoomPool = new Pool <Boom1>(100, true, g => !g.IsDisposed, () => Boom1.PoolConstructor()); MissilePool = new Pool <Missile>(80, true, g => !g.IsDisposed, () => Missile.PoolConstructor()); DualMissile45Pool = new Pool <DualMissile45>(80, true, g => !g.IsDisposed, () => DualMissile45.PoolConstructor()); // Enemies StraightEnemyPool = new Pool <StraightEnemy>(200, true, e => !e.IsDisposed, () => StraightEnemy.PoolConstructor()); SuiciderEnemyPool = new Pool <SuiciderEnemy>(60, true, e => !e.IsDisposed, () => SuiciderEnemy.PoolConstructor()); ItemEnemyPool = new Pool <ItemEnemy>(10, true, e => !e.IsDisposed, () => ItemEnemy.PoolConstructor()); ZigZagEnemyPool = new Pool <ZigZagEnemy>(130, true, e => !e.IsDisposed, () => ZigZagEnemy.PoolConstructor()); BombardEnemyPool = new Pool <BombardEnemy>(60, true, e => !e.IsDisposed, () => BombardEnemy.PoolConstructor()); Dual45EnemyPool = new Pool <Dual45Enemy>(60, true, e => !e.IsDisposed, () => Dual45Enemy.PoolConstructor()); SideEnemyPool = new Pool <SideEnemy>(10, true, e => !e.IsDisposed, () => SideEnemy.PoolConstructor()); // Explosions ExplosionPool = new Pool <Visual>(100, true, v => !v.IsDisposed, () => Visual.PoolConstructor()); // Scrap station ScrapStationPool = new Pool <ScrapStation>(2, true, s => !s.IsDisposed, () => ScrapStation.PoolConstructor()); #endregion Players.Add(new Player()); // Projectile pool for (int i = 0; i < PROJECTILE_POOL_MAX; i++) { ProjectilePool.Add(new BaseProjectile()); } // Pickup pool for (int i = 0; i < PICKUP_MAX; i++) { PickupPool.Add(new Pickup()); } // Increase the spawn delay every 5 waves int spawnDelayIncs = WaveNr / 5; for (int i = 0; i < spawnDelayIncs; i++) { SpawnDelayTimer.TimeInMS += SPAWN_DELAY_INCREASE; } // Add starting resources for (int i = 1; i <= startingWave; i++) { if (i < 5) { for (int j = 0; j < Players.Count; j++) { Players[j].Score += 150; } } else { for (int j = 0; j < Players.Count; j++) { Players[j].Score += 500; } } // Limit score to ~15000 if (Players[0].Score >= 15000) { break; } } // Spawn scrap station if starting wave # >=20 if (startingWave >= 20) { SpawnScrapStation(); } #region Player PlayerShip ps = new PlayerShip(PlayerIndex.One, new Vector2(500, 400), Players[0]); ps.SetPlaneType(planeType, shipName); // Bonus speed & shield regen int bonusSpeedUpgrades = startingWave / 10; for (int i = 0; i < bonusSpeedUpgrades; i++) { ps.UpgradeSpeed(); ps.UpgradeShieldRegen(); } // Add mg MG1 mg = MGPool.New(); mg.Initialize(new Vector2(5, ps.Height - 20), new Vector2(ps.Width - 5 - 8, ps.Height - 20), ps.Owner); ps.Guns.Add(mg); Entities.Add(ps); PlayerShips.Add(ps); #endregion // Pause PauseLocation = Common.CenterString(PausedFont, PAUSE_TEXT, Engine.Instance.Width, Engine.Instance.Height); // Collect Garbage System.GC.Collect(); }
public void SetPlaneType(ePlaneType planeType, string shipName) { PlaneType = planeType; ShipName = new StringBuilder(shipName); switch (planeType) { case ePlaneType.Normal: Animation = Common.str2Tex("Ships/player"); Shadow = Common.str2Tex("Shadows/player"); CollisionRects.Add(new Rectangle2(Location, new Rectangle(23, 0, 11, 20))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(8, 19, 41, 16))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(0, 35, 57, 9))); Owner.Score += 500; break; case ePlaneType.Dmg: Animation = Common.str2Tex("Ships/playerDmg"); Shadow = Common.str2Tex("Shadows/playerDmg"); CollisionRects.Add(new Rectangle2(Location, new Rectangle(5, 0, 47, 35))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(0, 17, 57, 18))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(14, 35, 30, 9))); Owner.DmgMod += 0.41f; MaxVelocity -= 4f; Velocity -= 0.7f; break; case ePlaneType.Speed: Animation = Common.str2Tex("Ships/playerVelocity"); Shadow = Common.str2Tex("Shadows/player"); CollisionRects.Add(new Rectangle2(Location, new Rectangle(23, 0, 11, 20))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(8, 19, 41, 16))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(0, 35, 57, 9))); Owner.DmgMod -= 0.05f; MaxVelocity += 3.0f; Velocity += 2.0f; HP.CurrentHP = HP.MaxHP -= 50; MaxShield += 15; Shield.MaxHP = MaxShield; Shield.HealFull(); Owner.Score += 1500; break; case ePlaneType.Regen: Animation = Common.str2Tex("Ships/playerRegen"); Shadow = Common.str2Tex("Shadows/player"); CollisionRects.Add(new Rectangle2(Location, new Rectangle(23, 0, 11, 20))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(8, 19, 41, 16))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(0, 35, 57, 9))); MaxShieldRegen += 0.4f; ShieldRegen += 0.3f; MaxShield += 15; Shield.MaxHP = MaxShield; Shield.HealFull(); HPRegen.MaxValue += 0.4f; HPRegen.CurrentValue += 0.25f; break; case ePlaneType.Tough: Animation = Common.str2Tex("Ships/playerDmg"); Shadow = Common.str2Tex("Shadows/playerDmg"); CollisionRects.Add(new Rectangle2(Location, new Rectangle(5, 0, 47, 35))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(0, 17, 57, 18))); CollisionRects.Add(new Rectangle2(Location, new Rectangle(14, 35, 30, 9))); Owner.DmgMod -= 0.1f; HP.MaxHP = 500; HP.HealFull(); MaxShield += 35; Shield.MaxHP += 10; Shield.HealFull(); MaxVelocity -= 3.5f; Velocity -= 0.6f; HPRegen.MaxValue += 0.15f; HPRegen.CurrentValue += 0.05f; GunLoseDamTakenLimit *= 3; break; default: throw new CaseStatementMissingException(); } }
private float GetScoreMod() { float scoreMod = 1f; int wDelayIdx = Choices.Find(c => c.Name == "waveDelay").SelectedValueIdx; switch (wDelayIdx) { case 0: scoreMod += 0.4f; break; case 1: scoreMod += 0.2f; break; case 2: // Do nothing break; case 3: scoreMod -= 0.2f; break; case 4: scoreMod -= 0.4f; break; default: throw new CaseStatementMissingException(); } ePlaneType planeType = (ePlaneType)GetChoiceByName("playerShip").SelectedValueIdx; switch (planeType) { case ePlaneType.Normal: // Do nothing scoreMod += 0.05f; break; case ePlaneType.Dmg: scoreMod -= 0.1f; break; case ePlaneType.Regen: scoreMod -= 0.1f; break; case ePlaneType.Speed: scoreMod -= 0.05f; break; case ePlaneType.Tough: scoreMod -= 0.1f; break; default: throw new CaseStatementMissingException(); } eDropRateMod dropRateMod = (eDropRateMod)Enum.Parse(typeof(eDropRateMod), GetChoiceValue("dropRate")); switch (dropRateMod) { case eDropRateMod.None: scoreMod += 0.4f; break; case eDropRateMod.Low: scoreMod += 0.2f; break; case eDropRateMod.Normal: // Do nothing break; case eDropRateMod.High: scoreMod -= 0.2f; break; default: throw new CaseStatementMissingException(); } if (scoreMod < 0.1f) { scoreMod = 0.1f; } return(scoreMod); }