Exemplo n.º 1
0
        public bool ProcessInput(libtcodWrapper.KeyPress KP)
        {
            switch (KP.KeyCode)
            {
            case (libtcodWrapper.KeyCode.TCODK_UP):
                if (Scrollability == Guardian_Roguelike.Utilities.MessageLogScrollPossibilities.Both || Scrollability == Guardian_Roguelike.Utilities.MessageLogScrollPossibilities.Up)
                {
                    ScrollValue--;
                }
                break;

            case (libtcodWrapper.KeyCode.TCODK_DOWN):
                if (Scrollability == Guardian_Roguelike.Utilities.MessageLogScrollPossibilities.Both || Scrollability == Guardian_Roguelike.Utilities.MessageLogScrollPossibilities.Down)
                {
                    ScrollValue++;
                }
                break;

            case (libtcodWrapper.KeyCode.TCODK_ESCAPE):
                StateManager.QueueState(StateManager.PersistentStates["GameState"]);
                return(true);

                break;

            case (libtcodWrapper.KeyCode.TCODK_ENTER):
                StateManager.QueueState(StateManager.PersistentStates["GameState"]);
                return(true);

                break;
            }

            return(false);
        }
        public bool ProcessInput(libtcodWrapper.KeyPress KP)
        {
            if (KP.KeyCode == libtcodWrapper.KeyCode.TCODK_ENTER || KP.KeyCode == libtcodWrapper.KeyCode.TCODK_ESCAPE)
            {
                StateManager.PersistentStates["GameState"] = new GameState();
                StateManager.QueueState(StateManager.PersistentStates["MainMenuState"]);
                return(true);
            }

            return(false);
        }
        private bool ProcessInput(libtcodWrapper.KeyPress KP)
        {
            switch (KP.KeyCode)
            {
            case (libtcodWrapper.KeyCode.TCODK_ESCAPE):
                FollowingState = States.StateManager.PersistentStates["GameState"];
                return(true);

                break;
            }

            return(false);
        }
Exemplo n.º 4
0
        private bool ProcessInput(libtcodWrapper.KeyPress KP)
        {
            switch (KP.KeyCode)
            {
            case (libtcodWrapper.KeyCode.TCODK_ENTER):
                switch (SelectedMenuItem)
                {
                case (0):        //New Game
                    StateManager.QueueState(States.StateManager.PersistentStates["GameState"]);
                    return(true);

                    break;

                case (1):        //Quit
                    StateManager.QueueState(States.StateManager.PersistentStates["QuitState"]);
                    return(true);

                    break;
                }
                break;

            case (libtcodWrapper.KeyCode.TCODK_DOWN):
                if (SelectedMenuItem == (MenuItems.Count - 1))
                {
                    SelectedMenuItem = 0;
                }
                else
                {
                    SelectedMenuItem++;
                }
                break;

            case (libtcodWrapper.KeyCode.TCODK_UP):
                if (SelectedMenuItem == 0)
                {
                    SelectedMenuItem = (MenuItems.Count - 1);
                }
                else
                {
                    SelectedMenuItem--;
                }
                break;
            }

            return(false);
        }
Exemplo n.º 5
0
        private bool ProcessInput(libtcodWrapper.KeyPress KP)
        {
            if (CurMode == Modes.Swinging)
            {
                World.DestroyResults DR = Guardian_Roguelike.World.DestroyResults.Cancelled;
                switch (KP.KeyCode)
                {
                case (libtcodWrapper.KeyCode.TCODK_HOME):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X - 1, Player.Position.Y - 1))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X - 1, Player.Position.Y - 1));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X - 1, Player.Position.Y - 1);
                        Player.MoveUpLeft();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_UP):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X, Player.Position.Y - 1))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X, Player.Position.Y - 1));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X, Player.Position.Y - 1);
                        Player.MoveUp();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_PAGEUP):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X + 1, Player.Position.Y - 1))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X + 1, Player.Position.Y - 1));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X + 1, Player.Position.Y - 1);
                        Player.MoveUpRight();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_RIGHT):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X + 1, Player.Position.Y))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X + 1, Player.Position.Y));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X + 1, Player.Position.Y);
                        Player.MoveRight();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_PAGEDOWN):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X + 1, Player.Position.Y + 1))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X + 1, Player.Position.Y + 1));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X + 1, Player.Position.Y + 1);
                        Player.MoveDownRight();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_DOWN):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X, Player.Position.Y + 1))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X, Player.Position.Y + 1));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X, Player.Position.Y + 1);
                        Player.MoveDown();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_END):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X - 1, Player.Position.Y + 1))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X - 1, Player.Position.Y + 1));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X - 1, Player.Position.Y + 1);
                        Player.MoveDownLeft();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_LEFT):
                    if (CurrentLevel.CheckContainsCreature(Player.Position.X - 1, Player.Position.Y))
                    {
                        Player.Attack(CurrentLevel.GetCreatureAt(Player.Position.X - 1, Player.Position.Y));
                        CurMode = Modes.Normal;
                    }
                    else
                    {
                        DR = CurrentLevel.DestroyTile(Player.Position.X - 1, Player.Position.Y);
                        Player.MoveLeft();
                        CurMode   = Modes.HasDug;
                        SkipTurns = 2;
                    }
                    break;

                case (libtcodWrapper.KeyCode.TCODK_ESCAPE):
                    CurMode = Modes.Normal;
                    break;
                }

                //Digging was attempted, add appropriate message to log
                if (CurMode == Modes.HasDug)
                {
                    switch (DR)
                    {
                    case (World.DestroyResults.AlreadyEmpty):
                        Utilities.MessageLog.AddMsg("You swing at the air,predictably hitting nothing, and stumble forward.");
                        break;

                    case (World.DestroyResults.Cancelled):
                        Utilities.MessageLog.AddMsg("You lower your pick again.");
                        break;

                    case (World.DestroyResults.Indestructible):
                        Utilities.MessageLog.AddMsg("You swing with all your strength, but the pick bounces off the wall without doing damage.", libtcodWrapper.Color.FromRGB(255, 0, 0));
                        break;

                    case (World.DestroyResults.Success):
                        Utilities.MessageLog.AddMsg("The rock crumbles under the might of your pick.");
                        break;
                    }
                    CurMode = Modes.Normal;
                }
                return(false);
            }

            switch (KP.KeyCode)
            {
            case (libtcodWrapper.KeyCode.TCODK_HOME):
                Player.MoveUpLeft();
                break;

            case (libtcodWrapper.KeyCode.TCODK_UP):
                Player.MoveUp();
                break;

            case (libtcodWrapper.KeyCode.TCODK_PAGEUP):
                Player.MoveUpRight();
                break;

            case (libtcodWrapper.KeyCode.TCODK_RIGHT):
                Player.MoveRight();
                break;

            case (libtcodWrapper.KeyCode.TCODK_PAGEDOWN):
                Player.MoveDownRight();
                break;

            case (libtcodWrapper.KeyCode.TCODK_DOWN):
                Player.MoveDown();
                break;

            case (libtcodWrapper.KeyCode.TCODK_END):
                Player.MoveDownLeft();
                break;

            case (libtcodWrapper.KeyCode.TCODK_LEFT):
                Player.MoveLeft();
                break;

            case (libtcodWrapper.KeyCode.TCODK_ESCAPE):
                StateManager.QueueState(StateManager.PersistentStates["MainMenuState"]);
                return(true);

                break;
            }

            switch ((char)KP.Character)
            {
            case ('m'):
                //View Messagelog
                StateManager.QueueState(StateManager.PersistentStates["MessageLogMenuState"]);
                return(true);

                break;

            case ('d'):   //Debug key
                Utilities.MessageLog.AddMsg(CurrentLevel.Creatures[1].FirstName + " is in " + ((global::Guardian_Roguelike.AI.FSM_Aggressive)CurrentLevel.Creatures[1].MyAI).CurState.ToString() + " mode " + CurrentLevel.Creatures[1].Position.ToString());
                System.Windows.Forms.MessageBox.Show(MakeLimbStatusString(CurrentLevel.Creatures[1]));
                break;

            case ('t'):    //All-round testing button
                //Enter Portal
                if (CurrentLevel.CheckType(Player.Position) == Guardian_Roguelike.World.TerrainTypes.ExitPortal)
                {
                    MakeNewMap();
                    Utilities.MessageLog.AddMsg("You descend deeper into the pit...");
                }
                else
                {
                    Utilities.MessageLog.AddMsg("There are no stairs here!");
                }
                break;

            case ('s'):
                //Swing
                //TODO: Check what is wielded.Assumes pick for now
                Utilities.MessageLog.AddMsg("Swing in which direction?");
                CurMode = Modes.Swinging;
                SkipAI  = true;
                break;

            case ('l'):
                //Look
                CurrentLevel.CalculateVisible(Player.Position, Player.BaseAim);
                CurrentLevel.PostLookMessages();
                break;
            }

            return(false);
        }