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); }
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); }