private static void Init() { Console messageConsole = new Console( DisplayWidth - BottomConsoleWidth, BottomConsoleHeight); messageConsole.Position = new Point(BottomConsoleWidth, DisplayHeight - BottomConsoleHeight); GameMessageLogger logger = new GameMessageLogger(messageConsole); EntityManager entityManager = new EntityManager(); Console parentConsole = new Console(DisplayWidth, DisplayHeight); // Generate a map int mapWidth = DisplayWidth * 2, mapHeight = DisplayHeight * 2; map = new Level(mapWidth, mapHeight, logger, entityManager); levelConsole = new Console( mapWidth, mapHeight, Global.FontDefault, new Rectangle(0, 1, DisplayWidth, DisplayHeight - BottomConsoleHeight), map.GetCells()); parentConsole.Children.Add(levelConsole); energyConsole = new Console( BottomConsoleWidth, BottomConsoleHeight); energyConsole.Position = new Point(0, DisplayHeight - BottomConsoleHeight); parentConsole.Children.Add(energyConsole); RenderPlayerEnergy(); parentConsole.Children.Add(messageConsole); // Set the player levelConsole.Children.Add(entityManager); levelConsole.CenterViewPortOnPoint(map.Player.RenderEntity.Position); // Set our new console as the thing to render and process SadConsole.Global.CurrentScreen = parentConsole; logger.LogMessage("Tread lightly."); }
private static void Update(GameTime time) { // Called each logic update. // This gets called repeatedly in real time // We only need to do any logic if game state is altered in some way if (!map.Player.Energy.HasEnergy()) { Console gameOverConsole = new Console(DisplayWidth, DisplayHeight); gameOverConsole.FillWithRandomGarbage(); SadConsole.Global.CurrentScreen.Children.Add(gameOverConsole); } // As an example, we'll use the F5 key to make the game full screen if (SadConsole.Global.KeyboardState.IsKeyReleased(Microsoft.Xna.Framework.Input.Keys.F5)) { SadConsole.Settings.ToggleFullScreen(); } bool progressState = false; if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Up)) { Point newPoint = map.Player.RenderEntity.Position + new Point(0, -1); TryMovePlayer(map.Player.RenderEntity, newPoint); progressState = true; } else if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Down)) { Point newPoint = map.Player.RenderEntity.Position + new Point(0, 1); TryMovePlayer(map.Player.RenderEntity, newPoint); progressState = true; } else if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Left)) { Point newPoint = map.Player.RenderEntity.Position + new Point(-1, 0); TryMovePlayer(map.Player.RenderEntity, newPoint); progressState = true; } else if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Right)) { Point newPoint = map.Player.RenderEntity.Position + new Point(1, 0); TryMovePlayer(map.Player.RenderEntity, newPoint); progressState = true; } if (Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.F)) { // Try to use whatever tile the player is on map.PlayerInteract(); progressState = true; } // Sync entities map.UpdateEntities(); levelConsole.CenterViewPortOnPoint(map.Player.RenderEntity.Position); RenderPlayerEnergy(); if (progressState) { map.Step(); } }
// centers the viewport camera on an Actor public void CenterOnActor(Actor actor) { MapConsole.CenterViewPortOnPoint(actor.Position); }