Пример #1
0
        public MoveResults MoveResults(Direction direction)
        {
            MoveResults       result = new MoveResults();
            PrintInstructions pi     = result.PrintInstructions;

            result.Success   = false;
            result.DoorState = DoorState(direction);

            switch (result.DoorState)
            {
            case Types.DoorState.Locked:
            case Types.DoorState.Sealed:
                break;

            case Types.DoorState.Open:
                result.Success = true;
                break;
            }

            pi.NewLine("The ")
            .Add($"{direction}", GetDoorColor(CurrentRoomPosition, direction));

            if (result.Success)
            {
                pi.Add($" door was {result.DoorState}");
            }
            else
            {
                pi.Add($" door is {result.DoorState}");
            }

            return(result);
        }
Пример #2
0
        public MoveResults MovePlayer(Direction direction)
        {
            MoveResults result = MoveResults(direction);

            if (result.Success)
            {
                if (FullyMerged() || Lock.Locked)
                {
                    CurrentRoomPosition = GetAdjoiningRoomPosition(CurrentRoomPosition, direction);
                }
                else
                {
                    switch (Level)
                    {
                    case Types.Level.One:
                        switch (direction)
                        {
                        case Direction.East:
                        case Direction.West:
                            RotateRooms(CurrentRoomPosition, direction);
                            break;

                        case Direction.North:
                        case Direction.South:
                            FlipRooms(direction);
                            break;
                        }
                        break;

                    case Types.Level.Two:
                        switch (direction)
                        {
                        case Direction.North:
                        case Direction.South:
                            RotateRooms(CurrentRoomPosition, direction);
                            break;

                        case Direction.East:
                        case Direction.West:
                            FlipRooms(direction);
                            break;
                        }
                        break;
                    }

                    if (FullyMerged())
                    {
                        AddCards();
                    }
                }
            }

            if (result.Success)
            {
                BaseRoom room = RoomPositions[CurrentRoomPosition];
                result.PrintInstructions.NewLine("You enter the ", ConsoleColor.DarkGreen)
                .Add(RoomInfo[room.Id].Name, room.Color)
                .Add(" room.", ConsoleColor.DarkGreen);
            }

            PrintInstructions mergedMessage = MergedDescription();

            mergedMessage.AddInstructions(result.PrintInstructions);

            result.PrintInstructions = mergedMessage;

            return(result);
        }