Exemplo n.º 1
0
        public virtual void Initialize(World2D world, RectInt collider)
        {
            Collider = collider;
            World    = world;

            RenderNode = UINode.Engine.Instance.CreateNode(Collider, World.PlatformNode, "Platform-Node");
            var canvas = RenderNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Gray, ConsoleColor.Blue);

            var imageNode = UINode.Engine.Instance.CreateNode(new RectInt(Vector2Int.Zero, Collider.Size), RenderNode, "Platform-Image");

            Image = imageNode.AddUIComponent <Bitmap>();
            Image.LoadFromFile(m_ImgFilePath);
        }
Exemplo n.º 2
0
        public virtual void Initialize(World2D world, RectInt collider)
        {
            Collider = collider;
            World    = world;

            RenderNode = UINode.Engine.Instance.CreateNode(Collider, World.WorldStaticNode, "Static-Node");
            var canvas = RenderNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Gray, ConsoleColor.Blue);

            var imageNode = UINode.Engine.Instance.CreateNode(new RectInt(Vector2Int.Zero, Collider.Size), RenderNode, "Wall-Image");

            Image = imageNode.AddUIComponent <UnlitBox>();
            Image.UnlitCharacter = ' ';
        }
Exemplo n.º 3
0
        public void Initialize(World2D world, RectInt collider, bool withSpikeGraphics)
        {
            Collider = collider;
            World    = world;

            RenderNode = UINode.Engine.Instance.CreateNode(Collider, World.WorldStaticNode, "DeathZone-Node");
            var canvas = RenderNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Black, ConsoleColor.Red);

            if (withSpikeGraphics)
            {
                var imageNode = UINode.Engine.Instance.CreateNode(new RectInt(Vector2Int.Zero, Collider.Size), RenderNode, "DeathZone-Image");
                Image = imageNode.AddUIComponent <UnlitBox>();
                Image.UnlitCharacter = 'V';
            }
        }
Exemplo n.º 4
0
        public override void Initialize(World2D world, RectInt collider)
        {
            m_Direction          = (Direction) new Random(DateTime.Now.Millisecond).Next(0, 2);
            m_PlatformMoveTimers = new List <KeyValuePair <int, float> >();

            Collider = collider;
            World    = world;

            RenderNode = UINode.Engine.Instance.CreateNode(Collider, World.PlatformNode, "Platform-Node");
            var canvas = RenderNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Black, ConsoleColor.Blue);

            var imageNode = UINode.Engine.Instance.CreateNode(new RectInt(Vector2Int.Zero, Collider.Size), RenderNode, "Platform-Image");

            Image = imageNode.AddUIComponent <Bitmap>();
            Image.LoadFromFile((m_Direction == Direction.Left)? "./Assets/SlidingPlatformLeft.txt" : "./Assets/SlidingPlatformRight.txt");
        }
Exemplo n.º 5
0
        public void Initialize(int id, World2D world, Vector2Int pos, CharacterDirection dir)
        {
            Id     = id;
            Health = c_MaxHealth;

            m_World   = world;
            Collider  = new RectInt(pos, new Vector2Int(1, 2));
            Direction = dir;

            RenderNode = UINode.Engine.Instance.CreateNode(Collider, world.CharacterNode, "Character-Node");
            var canvas = RenderNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Black, c_CharacterColors[id]);

            var imageNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, 1, 2), RenderNode, "Character-Image");

            Image         = imageNode.AddUIComponent <Bitmap>();
            m_RightBitmap = System.IO.File.ReadAllLines("./Assets/CharacterRight.txt");
            m_LeftBitmap  = System.IO.File.ReadAllLines("./Assets/CharacterLeft.txt");
            m_DeathBitmap = System.IO.File.ReadAllLines("./Assets/CharacterDeath.txt");

            Image.Load((dir == CharacterDirection.Right) ? m_RightBitmap : m_LeftBitmap);
        }
        private void enterLeaderBoard()
        {
            for (int i = 0; i < 20; i++)
            {
                playThemeSong();
            }

            State = GameState.Leaderboard;
            Mode  = GameMode.Demo;

            // game world
            World = new World2D(0, new RectInt(Vector2Int.One, c_GameWindowSize));
            m_LeaderBoardUINode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, 1, 1));

            int boardX     = 10;
            int boardWidth = World.TowerTopNode.Bounds.Width - 20;

            // create Hint UI
            var hintNode = UINode.Engine.Instance.CreateNode(new RectInt(boardX, 27, boardWidth, 1), null, "Hint-CanvasNode");
            var canvas   = hintNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Black, ConsoleColor.DarkGray);

            var hintTextNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, boardWidth, 1), hintNode, "Hint-TextBoxNode");
            var hintTextBox  = hintTextNode.AddUIComponent <TextBox>();

            hintTextBox.text = "ESC: main menu";
            hintTextBox.verticalAlignment   = TextBox.VerticalAlignment.Middle;
            hintTextBox.horizontalAlignment = TextBox.HorizontalAlignment.Center;


            int showCount = 5;

            // single player
            string singlePlayerBoards = "SINGLE PLAYER\n";

            for (int i = 0; i < showCount; i++)
            {
                if (i < SaveProgress.Data.SinglePlayerScores.Count)
                {
                    var    tuple = SaveProgress.Data.SinglePlayerScores[i];
                    string line  = string.Format("{0} -   {1, -12}  {2:D8}", i + 1, tuple.Item1, tuple.Item2);
                    singlePlayerBoards += "\n" + line;
                }
                else
                {
                    string line = string.Format("{0} -   {1, -12}  {2:D8}", i + 1, "empty", 0);
                    singlePlayerBoards += "\n" + line;
                }
            }

            var boardcanvasNode = UINode.Engine.Instance.CreateNode(new RectInt(boardX, 4, boardWidth, 7), m_LeaderBoardUINode, "TutorialNode");

            canvas = boardcanvasNode.AddUIComponent <SingleColorCanvas>();
            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.DarkRed, ConsoleColor.Yellow);

            var textNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, boardWidth, 7), boardcanvasNode, "TutorialNode");
            var unlitBg  = textNode.AddUIComponent <UnlitBox>();

            unlitBg.UnlitCharacter = ' ';
            var textBox = textNode.AddUIComponent <TextBox>();

            textBox.text = singlePlayerBoards;
            textBox.horizontalAlignment = TextBox.HorizontalAlignment.Center;
            textBox.verticalAlignment   = TextBox.VerticalAlignment.Top;


            // single player
            string twoPlayerBoards = "TWO PLAYERS COOP\n";

            for (int i = 0; i < showCount; i++)
            {
                if (i < SaveProgress.Data.TwoPlayerScores.Count)
                {
                    var    tuple = SaveProgress.Data.TwoPlayerScores[i];
                    string line  = string.Format("{0} -   {1, -12}  {2:D8}", i + 1, tuple.Item1, tuple.Item2);
                    twoPlayerBoards += "\n" + line;
                }
                else
                {
                    string line = string.Format("{0} -   {1, -12}  {2:D8}", i + 1, "empty", 0);
                    twoPlayerBoards += "\n" + line;
                }
            }

            boardcanvasNode         = UINode.Engine.Instance.CreateNode(new RectInt(boardX, 14, boardWidth, 7), m_LeaderBoardUINode, "TutorialNode");
            canvas                  = boardcanvasNode.AddUIComponent <SingleColorCanvas>();
            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.DarkRed, ConsoleColor.Yellow);

            textNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, boardWidth, 7), boardcanvasNode, "TutorialNode");
            unlitBg  = textNode.AddUIComponent <UnlitBox>();
            unlitBg.UnlitCharacter = ' ';
            textBox      = textNode.AddUIComponent <TextBox>();
            textBox.text = twoPlayerBoards;
            textBox.horizontalAlignment = TextBox.HorizontalAlignment.Center;
            textBox.verticalAlignment   = TextBox.VerticalAlignment.Top;
        }
        private void enterInGameScene()
        {
            State       = GameState.InGame;
            IsFinished  = false;
            IsPaused    = false;
            m_InputName = new StringBuilder("");

            // frame UI
            m_PlayGroundNode = UINode.Engine.Instance.CreateNode(new RectInt(Vector2Int.Zero, c_GameWindowSize + Vector2Int.One), null, "Playground-Node");
            var playgroundCanvas = m_PlayGroundNode.AddUIComponent <SingleColorCanvas>();

            playgroundCanvas.CanvasPixelColor = new PixelColor(ConsoleColor.Black, ConsoleColor.White);

            var playgroundLayoutNode = UINode.Engine.Instance.CreateNode(new RectInt(Vector2Int.Zero, c_GameWindowSize + Vector2Int.One), m_PlayGroundNode, "PlaygroundLayout-Node");
            var layoutBitmap         = playgroundLayoutNode.AddUIComponent <Bitmap>();

            layoutBitmap.LoadFromFile("./Assets/Layout.txt", Bitmap.DrawType.Sliced);

            // game world
            World = new World2D((Mode == GameMode.SinglePlayer)? 1 : 2, new RectInt(Vector2Int.One, c_GameWindowSize));

            // register player dead event
            AliveCounter = new HashSet <int>();
            foreach (var character in World.Characters)
            {
                int id = character.Id;
                AliveCounter.Add(id);
                character.OnDie += () => handleOnPlayerDie(id);
            }

            // game UI
            RectInt gameUISize = new RectInt(new Vector2Int(0, c_GameWindowSize.Y + 1), new Vector2Int(c_GameWindowSize.X + 1, 5));

            var uiNode = UINode.Engine.Instance.CreateNode(gameUISize, null, "Game UI");
            var canvas = uiNode.AddUIComponent <SingleColorCanvas>();

            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.DarkGray, ConsoleColor.White);

            RectInt panelBounds = new RectInt(new Vector2Int(0, 0), new Vector2Int(c_GameWindowSize.X + 1, 5));

            var layoutNode = UINode.Engine.Instance.CreateNode(panelBounds, uiNode, "Game UI");
            var layout     = layoutNode.AddUIComponent <Bitmap>();

            layout.LoadFromFile("./Assets/Layout-Empty.txt", Bitmap.DrawType.Sliced);

            // register character hp , create hp ui
            m_HpTexts    = new List <TextBox>();
            m_HpBarTexts = new List <TextBox>();
            for (int i = 0; i < World.Characters.Count; i++)
            {
                var character = World.Characters[i];
                character.OnHealthChanged += (int health) => handleOnCharacterHpChanged(character.Id, health);

                var textNode = UINode.Engine.Instance.CreateNode(new RectInt(3, 1 + i * 2, 10, 1), uiNode, "Game UI");
                var text     = textNode.AddUIComponent <TextBox>();
                text.text = string.Format("P{0} HP: {1, 2}/{2, 2}", i + 1, 10, Character.c_MaxHealth);
                text.horizontalAlignment = TextBox.HorizontalAlignment.Left;
                text.verticalAlignment   = TextBox.VerticalAlignment.Middle;

                m_HpTexts.Add(text);

                var hpBarCanvasNode = UINode.Engine.Instance.CreateNode(new RectInt(18, 1 + i * 2, 20, 1), uiNode, "Game UI");
                var hpBarCanvas     = hpBarCanvasNode.AddUIComponent <SingleColorCanvas>();
                hpBarCanvas.CanvasPixelColor = new PixelColor(ConsoleColor.DarkGreen, ConsoleColor.DarkGreen);

                var hpBarBackNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, 20, 1), hpBarCanvasNode, "Game UI - Text");
                text      = hpBarBackNode.AddUIComponent <TextBox>();
                text.text = new string("                    ");

                var hpBarInsideCanvasNode = UINode.Engine.Instance.CreateNode(new RectInt(18, 1 + i * 2, 20, 1), uiNode, "Game UI - Bar");
                var hpBarInsideCanvas     = hpBarInsideCanvasNode.AddUIComponent <SingleColorCanvas>();
                hpBarInsideCanvas.CanvasPixelColor = new PixelColor(ConsoleColor.Yellow, ConsoleColor.Yellow);

                var actualInsideTextNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, 20, 1), hpBarInsideCanvasNode, "Game UI - Bar -Text");
                text      = actualInsideTextNode.AddUIComponent <TextBox>();
                text.text = new string("                    ");

                m_HpBarTexts.Add(text);
            }

            // add level ui
            var lvlUINode = UINode.Engine.Instance.CreateNode(new RectInt(39, 1, 10, 3), uiNode);

            m_LevelText      = lvlUINode.AddUIComponent <TextBox>();
            m_LevelText.text = "LEVEL\n000";
            m_LevelText.horizontalAlignment = TextBox.HorizontalAlignment.Center;
            m_LevelText.verticalAlignment   = TextBox.VerticalAlignment.Middle;

            World.OnTotalLevelChanged += handleOnTotalLevelChanged;

            // create Hint UI
            var hintNode = UINode.Engine.Instance.CreateNode(new RectInt(0, World.TowerTopNode.Bounds.Size.Y + 7, World.TowerTopNode.Bounds.Size.X, 1), null, "Hint-CanvasNode");

            canvas = hintNode.AddUIComponent <SingleColorCanvas>();
            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Black, ConsoleColor.DarkGray);

            var hintTextNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, World.TowerTopNode.Bounds.Size.X, 1), hintNode, "Hint-TextBoxNode");
            var hintTextBox  = hintTextNode.AddUIComponent <TextBox>();

            hintTextBox.text = "F1: turn on/off optimized mode in game\nF2: pause/resume game";
            hintTextBox.verticalAlignment   = TextBox.VerticalAlignment.Middle;
            hintTextBox.horizontalAlignment = TextBox.HorizontalAlignment.Center;

            // create GAME OVER UI
            var gameOverNode = UINode.Engine.Instance.CreateNode(new RectInt(0, World.TowerTopNode.Bounds.Size.Y / 2, World.TowerTopNode.Bounds.Size.X + 1, 5), null, "GO-CanvasNode");

            m_GameOverCanvas = gameOverNode.AddUIComponent <SingleColorCanvas>();
            m_GameOverCanvas.CanvasPixelColor = new PixelColor(ConsoleColor.DarkRed, ConsoleColor.Yellow);

            var goUnlitBoardNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, World.TowerTopNode.Bounds.Size.X + 1, 5), gameOverNode, "GO-UnlitNode");
            var goUnlitBox       = goUnlitBoardNode.AddUIComponent <UnlitBox>();

            goUnlitBox.UnlitCharacter = ' ';

            var goTextNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, World.TowerTopNode.Bounds.Size.X + 1, 5), gameOverNode, "GO-TextBoxNode");

            m_GameOverText      = goTextNode.AddUIComponent <TextBox>();
            m_GameOverText.text = "GAME OVER\n\n\npress enter to confirm";
            m_GameOverText.verticalAlignment   = TextBox.VerticalAlignment.Top;
            m_GameOverText.horizontalAlignment = TextBox.HorizontalAlignment.Center;

            m_InputFieldCanvasNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 2, World.TowerTopNode.Bounds.Size.X + 1, 1), gameOverNode, "InputCanvasNode");
            canvas = m_InputFieldCanvasNode.AddUIComponent <SingleColorCanvas>();
            canvas.CanvasPixelColor = new PixelColor(ConsoleColor.Red, ConsoleColor.Yellow);

            var inputUnlitBoxNode = UINode.Engine.Instance.CreateNode(new RectInt(13, 0, 24, 1), m_InputFieldCanvasNode, "InputNode");

            inputUnlitBoxNode.AddUIComponent <UnlitBox>().UnlitCharacter = ' ';

            var inputTextNode = UINode.Engine.Instance.CreateNode(new RectInt(0, 0, World.TowerTopNode.Bounds.Size.X + 1, 1), inputUnlitBoxNode, "InputNode");

            m_InputText      = inputTextNode.AddUIComponent <TextBox>();
            m_InputText.text = "PLEASE INPUT YOUR NAME";
            m_InputText.verticalAlignment   = TextBox.VerticalAlignment.Middle;
            m_InputText.horizontalAlignment = TextBox.HorizontalAlignment.Center;

            gameOverNode.IsActive           = false;
            m_InputFieldCanvasNode.IsActive = false;

            // Setup bg settings
            World.BackgroundImageNode.IsActive = !m_OptimizedMode;
        }
Exemplo n.º 8
0
 public override void Initialize(World2D world, RectInt collider)
 {
     base.Initialize(world, collider);
     (RenderNode.Canvas as SingleColorCanvas).CanvasPixelColor = new PixelColor(ConsoleColor.Black, ConsoleColor.Red);
 }