public override void Update() { if (occupant != null) { // update occupant occupant.Update(); // check for reaping if (occupant is TempSprite sprite && sprite.ShouldReap()) { occupant = null; } } }
public override void Update(GameTime gameTime) { timer.Update(); elapsed = gameTime.ElapsedGameTime.Milliseconds; background.Update(); tweener.Update(); if (Input.KeyPressed(Key.Escape)) { Game.Quit(); } if (Input.KeyPressed(Key.F11)) { Game.ToggleFullscreen(); } else if (Input.KeyPressed(Key.D1)) { Game.ScreenSize = new Size(size.W, size.H); } else if (Input.KeyPressed(Key.D2)) { Game.ScreenSize = new Size(size.W * 2, size.H * 2); } else if (Input.KeyPressed(Key.D3)) { Game.ScreenSize = new Size(size.W * 3, size.H * 3); } if (Input.KeyDown(Key.Left)) { particle_dx -= speed; } if (Input.KeyDown(Key.Right)) { particle_dx += speed; } if (Input.KeyDown(Key.Up)) { particle_dy -= speed; } if (Input.KeyDown(Key.Down)) { particle_dy += speed; } particle_dx *= friction; particle_dy *= friction; if (particle_dx > 0.05f && particle_dx < 0.05f || particle_dx < 0 && particle_dx > -0.05f) { particle_dx = 0; } if (particle_dy > 0.05f && particle_dy < 0.05f || particle_dy < 0.05f && particle_dy > -0.05f) { particle_dy = 0; } particle_x += particle_dx; particle_y += particle_dy; if (particle_x > Canvas.Width - 16) { particle_x = Canvas.Width - 16; particle_dx = -particle_dx; PlayBump(); } else if (particle_x < 16) { particle_x = 16; particle_dx = -particle_dx; PlayBump(); } if (particle_y > Canvas.Height - 16) { particle_y = Canvas.Height - 16; particle_dy = -particle_dy; PlayBump(); } else if (particle_y < 16) { particle_y = 16; particle_dy = -particle_dy; PlayBump(); } bool up = Input.KeyDown(Key.W); bool down = Input.KeyDown(Key.S); bool left = Input.KeyDown(Key.A); bool right = Input.KeyDown(Key.D); if (left) { if (!up && !down) { char_sx = -5.0f; char_dir = CharDir.Left; } else { char_sx = -4.0f; } } else if (right) { if (!up && !down) { char_sx = 5.0f; char_dir = CharDir.Right; } else { char_sx = 4.0f; } } if (up) { if (!left && !right) { char_sy = -5.0f; char_dir = CharDir.Up; } else { char_sy = -4.0f; } } else if (down) { if (!left && !right) { char_sy = 5.0f; char_dir = CharDir.Down; } else { char_sy = 4.0f; } } switch (char_dir) { case CharDir.Left: animated_sprite.SetAnimation("walk_horiz"); animated_sprite.SetFlipH(true); break; case CharDir.Right: animated_sprite.SetAnimation("walk_horiz"); animated_sprite.SetFlipH(false); break; case CharDir.Up: animated_sprite.SetAnimation("walk_up"); animated_sprite.SetFlipH(false); break; case CharDir.Down: animated_sprite.SetAnimation("walk_down"); animated_sprite.SetFlipH(false); break; } if (!left && !right) { char_sx = 0.0f; } if (!up && !down) { char_sy = 0.0f; } char_x += char_sx; char_y += char_sy; if (char_sx == 0.0f && char_sy == 0.0f) { switch (char_dir) { case CharDir.Left: case CharDir.Right: animated_sprite.SetAnimation("idle_horiz"); break; case CharDir.Up: animated_sprite.SetAnimation("idle_up"); break; case CharDir.Down: animated_sprite.SetAnimation("idle_down"); break; } } float dt = (float)gameTime.ElapsedGameTime.TotalSeconds; animated_sprite.Update(); _trail.MoveTo(particle_x, particle_y); _trail.Update(dt); _explosion.Update(dt); if (Input.MousePressed(MouseButton.Left)) { _explosion.FireAt(Input.MousePos.X, Input.MousePos.Y); } }