Ejemplo n.º 1
0
        internal void Throw(GameObject user)
        {
            UseMethods.Throw(Owner, user);

            Count -= 1;

            if (Count == 0)
            {
                Rogue.GameWorld.Player.Fighter.Inventory.Remove(Owner);
            }
        }
        public static Constants.PlayerAction HandleKeys()
        {
            int key = Terminal.Read();

            if (Terminal.Peek() != key)
            {
                if (Rogue.GameWorld.State == Constants.GameState.Playing)
                {
                    if (RotateLeft.Contains(key))
                    {
                        for (int i = 0; i < 90; i += Constants.TurnSteps)
                        {
                            Rogue.GameWorld.Player.Fighter.Direction += Constants.TurnSteps;
                            if (Rogue.GameWorld.Player.Fighter.Direction >= 360)
                            {
                                Rogue.GameWorld.Player.Fighter.Direction -= 360;
                            }
                            Rendering.RenderAll();
                        }
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (RotateRight.Contains(key))
                    {
                        for (int i = 0; i < 90; i += Constants.TurnSteps)
                        {
                            Rogue.GameWorld.Player.Fighter.Direction -= Constants.TurnSteps;
                            if (Rogue.GameWorld.Player.Fighter.Direction < 0)
                            {
                                Rogue.GameWorld.Player.Fighter.Direction += 360;
                            }
                            Rendering.RenderAll();
                        }
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (LeftMovement.Contains(key))
                    {
                        if (Rogue.GameWorld.Player.Fighter.Direction == 90)
                        {
                            Rogue.GameWorld.Player.PlayerMoveOrAttack(-1, 0);
                        }
                        else
                        {
                            Rogue.GameWorld.Player.Move(-1, 0);
                        }
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (RightMovement.Contains(key))
                    {
                        if (Rogue.GameWorld.Player.Fighter.Direction == 270)
                        {
                            Rogue.GameWorld.Player.PlayerMoveOrAttack(1, 0);
                        }
                        else
                        {
                            Rogue.GameWorld.Player.Move(1, 0);
                        }
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (UpMovement.Contains(key))
                    {
                        if (Rogue.GameWorld.Player.Fighter.Direction == 0)
                        {
                            Rogue.GameWorld.Player.PlayerMoveOrAttack(0, -1);
                        }
                        else
                        {
                            Rogue.GameWorld.Player.Move(0, -1);
                        }
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (DownMovement.Contains(key))
                    {
                        if (Rogue.GameWorld.Player.Fighter.Direction == 180)
                        {
                            Rogue.GameWorld.Player.PlayerMoveOrAttack(0, 1);
                        }
                        else
                        {
                            Rogue.GameWorld.Player.Move(0, 1);
                        }
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (InventoryKey.Contains(key))
                    {
                        Item.DisplayInventory();
                    }
                    else if (SkipTurn.Contains(key))
                    {
                        return(Constants.PlayerAction.UsedTurn);
                    }
                    else if (key == Terminal.TK_G)
                    {
                        UseMethods.Fireball(Rogue.GameWorld.Player);
                    }
                    else if (ActionKeys.Contains(key))
                    {
                        foreach (GameObject item in Rogue.GameWorld.Objects)
                        {
                            if (item.Item != null && item.X == Rogue.GameWorld.Player.X && item.Y == Rogue.GameWorld.Player.Y)
                            {
                                item.Item.Pick(Rogue.GameWorld.Player);
                                return(Constants.PlayerAction.UsedTurn);
                            }
                        }

                        foreach (GameObject stairs in Rogue.GameWorld.Objects)
                        {
                            if (stairs.Downstairs && stairs.X == Rogue.GameWorld.Player.X && stairs.Y == Rogue.GameWorld.Player.Y)
                            {
                                MapMethods.NextLevel();
                                return(Constants.PlayerAction.UsedTurn);
                            }
                            if (stairs.Upstairs && stairs.X == Rogue.GameWorld.Player.X && stairs.Y == Rogue.GameWorld.Player.Y)
                            {
                                return(MapMethods.PreviousLevel());
                            }
                        }
                    }
                }
            }

            if (EscapeKeys.Contains(key))
            {
                return(Constants.PlayerAction.ExitGame);
            }

            return(Constants.PlayerAction.NotUsedTurn);
        }