Example #1
0
        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.");
        }
Example #2
0
        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();
            }
        }
Example #3
0
 // centers the viewport camera on an Actor
 public void CenterOnActor(Actor actor)
 {
     MapConsole.CenterViewPortOnPoint(actor.Position);
 }