//TODO: actual parallaxing public void parallaxBackground(Gameworld gameWorld) { for (int i = 0; i < gameWorld.Backgrounds.Count; i++ ) { if (gameWorld.Backgrounds[i].Position.X < (-gameWorld.Backgrounds[i].TextureWidth)) { gameWorld.Backgrounds[i].Position = new Vector2(gameWorld.Backgrounds[i].Position.X + gameWorld.Backgrounds[i].TextureWidth, 0); //gameWorld.Backgrounds[i+1].Position = new Vector2(gameWorld.Backgrounds[i+1].Position.X + gameWorld.Backgrounds[i+1].TextureWidth, 0); } gameWorld.Backgrounds[i].update(); } }
public void buttonClicked(string action) { switch (action) { case "Start Spill": gameWorld = new Gameworld(contentHolder); gameState = GameState.Grandma; break; case "Start paa nytt": //F*****G UPDATE THE F*****G F**K, F**K gameWorld.resetToCheckpoint(); gameState = GameState.InGame; break; case "Meny": gameState = GameState.Menu; break; } }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { input.Update(); if (gameState == GameState.Menu) { // Allows the game to exit if (input.WasKeyClicked(Keys.Escape)) this.Exit(); if (input.WasKeyClicked(Keys.Enter)) { gameWorld = new Gameworld(contentHolder); gameState = GameState.Grandma; } startButton.Update(); } else if (gameState == GameState.Grandma) { if (input.WasKeyClicked(Keys.Escape)) gameState = GameState.Menu; if (input.WasKeyClicked(Keys.Enter)) gameState = GameState.InGame; if (input.WasMouseClicked()) gameState = GameState.InGame; } else if (gameState == GameState.Outro) { if (input.WasKeyClicked(Keys.Escape)) gameState = GameState.Menu; if (input.WasKeyClicked(Keys.Enter)) { gameWorld.resetToCheckpoint(); gameState = GameState.InGame; } restartButton.Update(); menuButton.Update(); } else if (gameState == GameState.InGame) { // Puts you back into the menu if (input.WasKeyClicked(Keys.Escape)) gameState = GameState.Menu; controller.update(gameWorld, gameTime); input.Swipe(); input.Click(); } base.Update(gameTime); }
protected override void Initialize() { // TODO: Add your initialization logic here input = new Input(); contentHolder = new ContentHolder(Content); soundManager = new SoundManager(contentHolder); gameWorld = new Gameworld(contentHolder); controller = new Controller(input, soundManager, contentHolder); this.IsMouseVisible = true; base.Initialize(); }
public void update(Gameworld gameWorld, GameTime gameTime) { risse = gameWorld.Risse; Vector2 prePos = risse.Position; parallaxBackground(gameWorld); physicsEngine.gravitation(risse, gameTime); collisionResolution(gameWorld, prePos); risse.update(gameTime); foreach (Gameobject go in gameWorld.Platforms) { go.update(); } //if (!(MediaPlayer.State == MediaState.Playing)) //{ // MediaPlayer.Play(contentHolder.soundtrack); //} //foreach (Gameobject ground in gameWorld.Ground) //{ // ground.update(); //} foreach (List<Gameobject> g in gameWorld.Ground) { foreach (Gameobject obj in g) { obj.update(); } } foreach (Gameobject obj in gameWorld.Collidables) { obj.update(); } //Console.Out.WriteLine(risse.Position); }
//handles landing on or jumping up and hitting a platform protected void collisionVertical(Gameworld gameworld, Vector2 newPos) { gameworld.Risse.Position = newPos; gameworld.Risse.Velocity = new Vector2(gameworld.Risse.Velocity.X, 0); }
protected void collisionResolution(Gameworld gameworld, Vector2 prePos) { Console.Out.WriteLine(risse.OnTheGround); bool collidedWithPlatformSide = false; bool airborne = true; bool crouchingRisseHiddenBoundingBox; if (risse.Animation == (int)state.ducking){ crouchingRisseHiddenBoundingBox = true; } else { crouchingRisseHiddenBoundingBox = false; } foreach (Gameobject platform in gameworld.Platforms) { if (physicsEngine.collisionDetection(risse, platform, crouchingRisseHiddenBoundingBox)) { if (collisionDetermineType(gameworld, risse, platform, prePos)) { collidedWithPlatformSide = true; } else { airborne = false; } } } if (!collidedWithPlatformSide) { //foreach (Gameobject ground in gameworld.Ground) //{ // if (physicsEngine.collisionDetection(risse, ground)) // { // if (collisionDetermineType(gameworld, risse, ground, prePos)) // { // collidedWithPlatformSide = true; // } // } //} foreach (List<Gameobject> list in gameworld.Ground) { foreach (Gameobject ground in list) { if (physicsEngine.collisionDetection(risse, ground, crouchingRisseHiddenBoundingBox)) { if (collisionDetermineType(gameworld, risse, ground, prePos)) { collidedWithPlatformSide = true; } else { airborne = false; } } } } if (!collidedWithPlatformSide) { foreach (Gameobject collidable in gameworld.Collidables) { if (physicsEngine.collisionDetection(risse, collidable, crouchingRisseHiddenBoundingBox)) { collisionHorizontal(gameworld, prePos); } } } if (airborne) { //risse.OnTheGround = false; } } }
//handles colliding with something from the side protected void collisionHorizontal(Gameworld gameworld, Vector2 prePos) { gameworld.Risse.Velocity = Vector2.Zero; gameworld.Risse.Position = new Vector2(prePos.X, gameworld.Risse.Position.Y); if (risse.Animation != (int)state.crash){ gameworld.Risse.Animation = (int)state.crash; Console.Out.WriteLine("crashed"); } }
// returns true if colliding from side protected bool collisionDetermineType(Gameworld gameworld, Gameobject risse, Gameobject platform, Vector2 prePos) { if (risse.BoundingBox.Right - (risse.BoundingBox.Width/2) > platform.BoundingBox.Left && risse.BoundingBox.Right - (risse.BoundingBox.Width/2) < platform.BoundingBox.Right) { if (risse.Position.Y + risse.BoundingBox.Height < platform.BoundingBox.Y + platform.BoundingBox.Height){ collisionVertical(gameworld, new Vector2(risse.Position.X, platform.Position.Y - (risse.BoundingBox.Height - 1))); risse.OnTheGround = true; if (risse.Animation != (int)state.crash && risse.Animation != (int)state.ducking) { gameworld.Risse.Animation = (int)state.running; Console.Out.WriteLine("running"); } } else if (risse.Position.Y < platform.BoundingBox.Y + platform.BoundingBox.Height) { if (risse.OnTheGround) { gameworld.Risse.Animation = (int)state.ducking; Console.Out.WriteLine("ducking"); } else { collisionVertical(gameworld, new Vector2(risse.Position.X, platform.Position.Y + (platform.BoundingBox.Height + 1))); } } return false; } if (risse.OnTheGround && risse.Position.Y + risse.BoundingBox.Height < platform.BoundingBox.Y + platform.BoundingBox.Height) { collisionVertical(gameworld, new Vector2(risse.Position.X, platform.Position.Y - (risse.BoundingBox.Height - 1))); return false; } collisionHorizontal(gameworld, prePos); return true; }
protected void collisionResolution(Gameworld gameworld, Vector2 prePos) { risse.OnTheGround = false; foreach (List<Gameobject> list in gameworld.Ground) { foreach (Gameobject ground in list) { if (physicsEngine.collisionDetection(risse, ground)) { if (risse.BoundingBox.Bottom <= ground.Position.Y + 30 && theState == state.ducking) { risse.Position = new Vector2(risse.Position.X, ground.Position.Y - (risse.BoundingBox.Height * 2) + 1); risse.Velocity = Vector2.Zero; //playFootstep(); risse.OnTheGround = true; } else if (risse.BoundingBox.Bottom <= ground.Position.Y + 30 && risse.Velocity.Y > 0) { risse.Position = new Vector2(risse.Position.X, ground.Position.Y - risse.BoundingBox.Height + 1); risse.Velocity = Vector2.Zero; //playFootstep(); risse.OnTheGround = true; } } } } foreach (List<Gameobject> list in gameworld.Platforms) { foreach (Gameobject platform in list) { if (physicsEngine.collisionDetection(risse, platform)) { if (risse.BoundingBox.Bottom <= platform.Position.Y + 30 && risse.Velocity.Y > 0 && theState != state.ducking) { risse.Position = new Vector2(risse.Position.X, platform.Position.Y - risse.BoundingBox.Height + 1); risse.Velocity = Vector2.Zero; //playFootstep(); risse.OnTheGround = true; } } } } foreach (Gameobject collidable in gameworld.Collidables) { if (physicsEngine.collisionDetection(risse, collidable)) { if (risse.BoundingBox.Right <= collidable.Position.X + 30)// && risse.BoundingBox.Bottom >= collidable.Position.Y) { crash(); //Console.Out.WriteLine("pang"); } } } if (risse.OnTheGround && theState != state.ducking && theState != state.crash) { playFootstep(false); risse.Animation = (int)state.running; } if (risse.BoundingBox.Top > GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height) { goToOutro(); } }
public void update(Gameworld gameWorld, GameTime gameTime) { risse = gameWorld.Risse; parallaxBackground(gameWorld); physicsEngine.gravitation(risse, gameTime); collisionResolution(gameWorld, prePos); prePos = new Vector2(risse.BoundingBox.X, risse.BoundingBox.Y); risse.update(gameTime); //foreach (Gameobject go in gameWorld.Platforms) //{ // go.update(); //} gameWorld.updateCheckpointsDone(); if (theState == state.ducking) { if (ducking > 1000) { ducking = 0; theState = state.running; risse.Animation = (int)state.running; } ducking += (float)gameTime.ElapsedGameTime.Milliseconds; } if (theState == state.crash) { if (crashing > 1000) { crashing = 0; theState = state.running; risse.Animation = (int)state.running; } crashing += (float)gameTime.ElapsedGameTime.Milliseconds; } foreach (List<Gameobject> p in gameWorld.Platforms) { foreach (Gameobject obj in p) { obj.update(); } } if (!(MediaPlayer.State == MediaState.Playing)) { MediaPlayer.Play(contentHolder.music_soundtrack); } foreach (Gameobject go in gameWorld.BackgroundFluff) { go.updateFluff(risse, contentHolder); } gameWorld.Platforms[0][0].Position = new Vector2(gameWorld.BackgroundFluff[0].Position.X - gameWorld.Platforms[0][0].Texture.Width, gameWorld.Platforms[0][0].Position.Y); gameWorld.Platforms[0][1].Position = new Vector2(gameWorld.BackgroundFluff[0].Position.X + gameWorld.Platforms[0][1].SpriteWidth, gameWorld.Platforms[0][1].Position.Y); //foreach (Gameobject ground in gameWorld.Ground) //{ // ground.update(); //} foreach (List<Gameobject> g in gameWorld.Ground) { foreach (Gameobject obj in g) { obj.update(); } } foreach (Gameobject obj in gameWorld.Collidables) { obj.update(); } }