Castle.CastleConsole.MovePlayer C# (CSharp) Méthode

MovePlayer() private méthode

private MovePlayer ( ) : void
Résultat void
        private void MovePlayer()
        {
            UserMessage message;

            int testRoomIndex;
            Point previewMove = player.PreviewMove(player.CurrentDirection);
            switch(CollisionDetection(previewMove))
            {
                case ObjectType.None:
                    player.Move(previewMove);
                    break;

                case ObjectType.Door:
                    if (currentRoom.RoomWarp == null)
                    {
                        testRoomIndex = currentRoom.GetNextRoom(player.CurrentDirection);
                        if(testRoomIndex == -1)
                        {
                            this.GameResult = Castle.GameResult.Win;
                            EndGame();
                            if (StopGamePlay != null)
                            {
                                StopGamePlay(this, new EventArgs());
                            }
                            return;
                        }
                        if (mapReader.FindRoom(testRoomIndex).Dark)
                        {
                            if (ItemManager.FindItemInInventory("Lamp") != null)
                            {
                                currentRoomIndex = testRoomIndex;
                                MovePlayerRoom(previewMove);
                                DrawRoom();
                            }
                            else
                            {
                                message = new UserMessage();
                                message.AddLine("It's too dark");
                                message.AddLine("to go that way");
                                PrintUserMessage(message);
                            }
                        }
                        else
                        {
                            currentRoomIndex = testRoomIndex;
                            MovePlayerRoom(previewMove);
                            DrawRoom();
                        }
                    }
                    else
                    {
                        currentRoomIndex = currentRoom.RoomWarp.DestinationRoomId;
                        previewMove.X = currentRoom.RoomWarp.X;
                        previewMove.Y = currentRoom.RoomWarp.Y;
                        message = currentRoom.RoomWarp.UserMessage;
                        player.Move(previewMove);
                        DrawRoom();
                        PrintUserMessage(message);
                    }
                    break;

                case ObjectType.UpStairs:
                    currentRoomIndex = currentRoom.GetNextRoom(Direction.UpStairs);
                    DrawRoom();
                    break;

                case ObjectType.DownStairs:
                    testRoomIndex = currentRoom.GetNextRoom(Direction.DownStairs);
                    if (mapReader.FindRoom(testRoomIndex).Dark)
                    {
                        if (ItemManager.FindItemInInventory("Lamp") != null)
                        {
                            currentRoomIndex = currentRoom.GetNextRoom(Direction.DownStairs);
                            DrawRoom();
                        }
                        else
                        {
                            message = new UserMessage();
                            message.AddLine("It's too dark");
                            message.AddLine("to go that way");
                            PrintUserMessage(message);
                        }
                    }
                    else
                    {
                        currentRoomIndex = currentRoom.GetNextRoom(Direction.DownStairs);
                        DrawRoom();
                    }
                    break;

                case ObjectType.LockedDoor:
                            message = new UserMessage();
                            message.AddLine("The Door is");
                            message.AddLine("locked");
                            PrintUserMessage(message);
                    break;

                case ObjectType.Trap:
                    if(ProcessTrap() == false)
                    {
                        player.Move(previewMove);
                    }
                    break;
                case ObjectType.Item:
                    PickupItem(previewMove);
                    break;

                case ObjectType.Monster:
                    AttackMonster(previewMove);
                    break;
            }
        }