public static void CheckCollision() { for (int i = 0; i < entities.Count; i++) { for (int j = i + 1; j < entities.Count; j++) { if (entities[i] is ClotSide || entities[j] is ClotSide) { if (entities[i] is ClotSide) { ClotSide cs = entities[i] as ClotSide; if (cs.SmallSphere.Intersects(entities[j].sphere) && !entities[i].isDead && !entities[j].isDead) { entities[i].Collision(entities[j]); } } else { ClotSide cs = entities[j] as ClotSide; if (cs.SmallSphere.Intersects(entities[i].sphere) && !entities[i].isDead && !entities[j].isDead) { entities[j].Collision(entities[i]); } } } if (entities[i] is Infector || entities[j] is Infector) { if (entities[i] is Infector) { Infector inf = entities[i] as Infector; if (inf.CellSphere.Intersects(entities[j].sphere) && !inf.isDead && !entities[j].isDead) { inf.inRange(entities[j]); } } else { Infector inf = entities[j] as Infector; if (inf.CellSphere.Intersects(entities[i].sphere) && !inf.isDead && !entities[i].isDead) { inf.inRange(entities[i]); } } } if (entities[i].sphere.Intersects(entities[j].sphere) && !entities[i].isDead && !entities[j].isDead) { entities[i].Collision(entities[j]); } } } }
public Level1(ContentManager content, SpriteBatch sb) { levelEnded = false; lastShot = false; lastCharge = false; this.content = content; spriteBatch = sb; geometry = this.content.Load <Model>(@"levels/level1"); levelTexture = this.content.Load <Texture2D>(@"textures/levelTexture"); position = new Vector3(-45, -755, 8200); timeToResume = TimeSpan.FromSeconds(timeToResumeSeconds); switchedToBoss = false; switchedToMiniBoss = false; switchedToStart = false; switchedToClot = false; startGameZ = 7645; infectorZ = 2800; clotZ = 2200; thirdPersonZ = 650; preBossZ = 1300; reachedClotZ = false; infectorAdded = false; reachedPreBossZ = false; infectorDestroyed = false; movePreInfector = false; endingMove1 = endingMove2 = endingMove3 = false; velocity = Vector3.Zero; firstMove = false; secondMove = false; thirdMove = false; fourthMove = false; rotatedBehind = false; fifthMove = false; beginDescentZ = -430; reachedBoss = false; enemySpawner = new EnemySpawner(1, content); bossAdded = false; clotsAdded = false; firstStart = false; introRot1 = false; introRot2 = false; introRot3 = false; introRot4 = false; thirdPersonRot = false; thirdPersonTrans = false; setRot = false; setTrans = false; returnedToTopDown = false; enemiesReenabled = false; miniBoss = new Infector(content, new Vector3(0, 0, 250)); rightClot = new ClotSide(content, new Vector3(-60, 0, 20), Side.Right); leftClot = new ClotSide(content, new Vector3(60, 0, 20), Side.Left); preloadedStraightCell = new StraightCell(content, new Vector3(0, 500, 0)); preloadedLatchingCell = new LatchingCell(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedChargingCell = new ChargingCell(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedMeleeBot = new MeleeBot(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedMissileBot = new MissileBot(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedTokenPickup = new TokenPickup(content, new Vector3(0, 500, 0)); preloadedMissile = new Missle(content, Vector3.Zero, Vector3.Zero); preloadedBotMissile = new BotMissile(content, Vector3.Zero, Vector3.Zero); preloadedNeedle = new Needle(content, Vector3.Zero, Vector3.Zero); preloadedLaser = new Laser(content, Vector3.Zero, Vector3.Zero); preloadedExplosion = new Explosion(0, 0, 0, Vector3.Zero, content, false); preloadedChargeBall = new ChargeBall(content, Vector3.Zero); clotsDestroyed = false; Camera.Instance.setPosition(new Vector3(-7, 7, 7)); }
public virtual void Update(GameTime gameTime) { Player p = entities[0] as Player; if (p.SwitchedFromShield) { for (int j = 0; j < entities.Count; j++) { if (entities[j] is Shield) { entities.Remove(entities[j]); j = 0; } } p.SwitchedFromShield = false; } for (int i = 0; i < entities.Count; i++) { if (!entities[i].isDead) { if (entities[i] is ChargeBall) { ChargeBall cb = entities[i] as ChargeBall; cb.Update(gameTime, p.Position, p.Rotation); } if (entities[i] is Laser) { Laser l = entities[i] as Laser; l.Update(gameTime, p.Position, p.Rotation); } if (entities[i] is Boss) { Boss b = entities[i] as Boss; b.Update(gameTime, p.Position); } if (entities[i] is ClotSide) { ClotSide cs = entities[i] as ClotSide; cs.Update(gameTime, velocity); } if (entities[i] is Infector) { Infector inf = entities[i] as Infector; inf.Update(gameTime, p.Position); } if (entities[i] is TokenPickup) { TokenPickup tp = entities[i] as TokenPickup; tp.Update(gameTime); } if (entities[i] is PlayerWeapon) { PlayerWeapon w = entities[i] as PlayerWeapon; w.Update(gameTime, p.Position, p.Rotation); } if (entities[i] is BotWeapon) { BotWeapon bw = entities[i] as BotWeapon; bw.Update(gameTime, p.Position, p.Rotation); } if (entities[i] is Shield) { Shield s = entities[i] as Shield; s.Update(gameTime, p.Velocity, p.controls.isPlayerFiring()); } if (entities[i] is LatchingCell || entities[i] is MeleeBot || entities[i] is MissileBot) { if (entities[i] is LatchingCell) { LatchingCell lc = entities[i] as LatchingCell; lc.Update(gameTime, p.Position); } else if (entities[i] is MeleeBot) { MeleeBot mb = entities[i] as MeleeBot; mb.Update(gameTime, p.Position); } else { MissileBot missBot = entities[i] as MissileBot; missBot.Update(gameTime, p.Position); } } entities[i].Update(gameTime); } else { if (entities[i] is EnemiesAndPlayer) { EnemiesAndPlayer ep = entities[i] as EnemiesAndPlayer; if (ep.killedBy()) { p.addScore(ep.Score); p.AddPowerup(15); if (ep is MeleeBot || ep is MissileBot) { if (random.Next(2) == 0) { Add(new TokenPickup(content, ep.Position)); } } } } entities.Remove(entities[i]); } } }
public Level1(ContentManager content, SpriteBatch sb) { levelEnded = false; lastShot = false; lastCharge = false; this.content = content; spriteBatch = sb; geometry = this.content.Load<Model>(@"levels/level1"); levelTexture = this.content.Load<Texture2D>(@"textures/levelTexture"); position = new Vector3(-45, -755, 8200); timeToResume = TimeSpan.FromSeconds(timeToResumeSeconds); switchedToBoss = false; switchedToMiniBoss = false; switchedToStart = false; switchedToClot = false; startGameZ = 7645; infectorZ = 2800; clotZ = 2200; thirdPersonZ = 650; preBossZ = 1300; reachedClotZ = false; infectorAdded = false; reachedPreBossZ = false; infectorDestroyed = false; movePreInfector = false; endingMove1 = endingMove2 = endingMove3 = false; velocity = Vector3.Zero; firstMove = false; secondMove = false; thirdMove = false; fourthMove = false; rotatedBehind = false; fifthMove = false; beginDescentZ = -430; reachedBoss = false; enemySpawner = new EnemySpawner(1, content); bossAdded = false; clotsAdded = false; firstStart = false; introRot1 = false; introRot2 = false; introRot3 = false; introRot4 = false; thirdPersonRot = false; thirdPersonTrans = false; setRot = false; setTrans = false; returnedToTopDown = false; enemiesReenabled = false; miniBoss = new Infector(content, new Vector3(0, 0, 250)); rightClot = new ClotSide(content, new Vector3(-60, 0, 20), Side.Right); leftClot = new ClotSide(content, new Vector3(60, 0, 20), Side.Left); preloadedStraightCell = new StraightCell(content, new Vector3(0, 500, 0)); preloadedLatchingCell = new LatchingCell(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedChargingCell = new ChargingCell(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedMeleeBot = new MeleeBot(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedMissileBot = new MissileBot(content, new Vector3(0, 500, 0), Vector3.Zero); preloadedTokenPickup = new TokenPickup(content, new Vector3(0, 500, 0)); preloadedMissile = new Missle(content, Vector3.Zero, Vector3.Zero); preloadedBotMissile = new BotMissile(content, Vector3.Zero, Vector3.Zero); preloadedNeedle = new Needle(content, Vector3.Zero, Vector3.Zero); preloadedLaser = new Laser(content, Vector3.Zero, Vector3.Zero); preloadedExplosion = new Explosion(0, 0, 0, Vector3.Zero, content, false); preloadedChargeBall = new ChargeBall(content, Vector3.Zero); clotsDestroyed = false; Camera.Instance.setPosition(new Vector3(-7, 7, 7)); }