public override void Update(GameTime time) { // Don't run until player is created if (Player == null) { return; } // Don't do anything while transitioning if (transitionMs > 0) { transitionMs -= time.ElapsedGameTime.Milliseconds; return; } // ### Movement input if (ScreenManager.kbState.IsKeyDown(Keys.Right) && !ScreenManager.kbState.IsKeyDown(Keys.Left)) { Player.doMove(Direction.Right); } else if (!ScreenManager.kbState.IsKeyDown(Keys.Right) && ScreenManager.kbState.IsKeyDown(Keys.Left)) { Player.doMove(Direction.Left); } else { Player.doMove(Direction.Stopped); } // ### Jump/Duck input if (ScreenManager.kbState.IsKeyDown(Keys.Space)) { Player.doJump(); } else if (!ScreenManager.kbState.IsKeyDown(Keys.Space) && ScreenManager.kbState.IsKeyDown(Keys.Down) && !ScreenManager.kbState.IsKeyDown(Keys.Up)) { Player.doDuck(); } else if (!ScreenManager.kbState.IsKeyDown(Keys.Space) && !ScreenManager.kbState.IsKeyDown(Keys.Down) && ScreenManager.kbState.IsKeyDown(Keys.Up)) { Player.doBlock(); } else if (Player.State == EntityState.Crouching || Player.State == EntityState.Blocking) { Player.stand(); } // ### Attack input if (ScreenManager.kbState.IsKeyDown(Keys.Q)) { Player.doAttack(TileMap, EntityPart.Head); } else if (ScreenManager.kbState.IsKeyDown(Keys.W)) { Player.doAttack(TileMap, EntityPart.Body); } else if (ScreenManager.kbState.IsKeyDown(Keys.E)) { Player.doAttack(TileMap, EntityPart.Legs); } // ### Hotbat input if (ScreenManager.kbState.IsKeyDown(Keys.D1)) { HotBar.select(0); } else if (ScreenManager.kbState.IsKeyDown(Keys.D2)) { HotBar.select(1); } else if (ScreenManager.kbState.IsKeyDown(Keys.D3)) { HotBar.select(2); } else if (ScreenManager.kbState.IsKeyDown(Keys.D4)) { HotBar.select(3); } else if (ScreenManager.kbState.IsKeyDown(Keys.D5)) { HotBar.select(4); } else if (ScreenManager.kbState.IsKeyDown(Keys.D6)) { HotBar.select(5); } else if (ScreenManager.kbState.IsKeyDown(Keys.D7)) { HotBar.select(6); } else if (ScreenManager.kbState.IsKeyDown(Keys.D8)) { HotBar.select(7); } else if (ScreenManager.kbState.IsKeyDown(Keys.D9)) { HotBar.select(8); } HotBar.update(time.ElapsedGameTime); // Interact with tile block if (ScreenManager.kbState.IsKeyDown(Keys.Enter) && ScreenManager.oldKBState.IsKeyUp(Keys.Enter)) { Rectangle rect = Player.EBounds.Rect; TileMap.getPixel(rect.Center.X, rect.Center.Y).interact(this); } // Update tilemap TileMap.update(time.ElapsedGameTime); // ### Offset offset.X = (int)(Player.Location.X - getScreenManager().Width / 2); if (offset.X < 0) { offset.X = 0; } else if (offset.X + getScreenManager().Width > TileMap.getPixelWidth()) { offset.X = (int)(TileMap.getPixelWidth() - getScreenManager().Width); } offset.X *= -1; // Invert offset.Y = (int)(Player.Location.Y - getScreenManager().Height / 2); if (offset.Y < 0) { offset.Y = 0; } else if (offset.Y + getScreenManager().Height > TileMap.getPixelHeight()) { offset.Y = (int)(TileMap.getPixelHeight() - getScreenManager().Height); } offset.Y *= -1; // Invert oldKb = ScreenManager.kbState; }