public RoomViewModel Clone() { var additionalRoomParameters = AdditionalRoomParameters.Clone(); return(new RoomViewModel(Room, additionalRoomParameters, Exits, Zone, _allActionDescriptions) { _actionsViewModel = ActionsViewModel.Clone(additionalRoomParameters.ActionsToExecuteOnRoomEntry) }); }
/// <summary> /// Initializes a new instance of the <see cref="RoomViewModel"/> class. /// </summary> /// <param name="room">The room this view model is associated to.</param> /// <param name="additionalRoomParameters">The additional room parameters.</param> /// <param name="exists">The exists of this room.</param> /// <param name="zone">The zone this room belongs to.</param> /// <param name="allActionDescriptions">All action descriptions.</param> public RoomViewModel([NotNull] Room room, [NotNull] AdditionalRoomParameters additionalRoomParameters, [NotNull] IEnumerable <RoomExitViewModel> exists, [NotNull] ZoneViewModel zone, [NotNull] IEnumerable <ActionDescription> allActionDescriptions) { Assert.ArgumentNotNull(room, "room"); Assert.ArgumentNotNull(additionalRoomParameters, "additionalRoomParameters"); Assert.ArgumentNotNull(exists, "exists"); Assert.ArgumentNotNull(zone, "zone"); Assert.ArgumentNotNull(allActionDescriptions, "allActionDescriptions"); Room = room; _allActionDescriptions = allActionDescriptions; AdditionalRoomParameters = additionalRoomParameters; Exits = exists; Zone = zone; }
private void BuildRoomsViewModel() { var roomExitByIdLookup = new Dictionary <int, IList <RoomExitViewModel> >(); var roomByIdLookup = new Dictionary <int, RoomViewModel>(); var additionalRoomParametersLookup = _additionalRoomParameters.ToDictionary(r => r.RoomId); AllRooms.Clear(); foreach (var room in _zone.Rooms) { var exists = new List <RoomExitViewModel>(); AdditionalRoomParameters additionalRoomParameters; if (additionalRoomParametersLookup.ContainsKey(room.Id)) { additionalRoomParameters = additionalRoomParametersLookup[room.Id]; } else { additionalRoomParameters = new AdditionalRoomParameters { RoomId = room.Id }; } var roomViewModel = new RoomViewModel(room, additionalRoomParameters, exists, this, RootModel.AllActionDescriptions); roomByIdLookup.Add(room.Id, roomViewModel); roomExitByIdLookup.Add(room.Id, exists); AllRooms.Add(roomViewModel); } foreach (var room in _zone.Rooms) { var exists = roomExitByIdLookup[room.Id]; foreach (var roomExit in room.Exits) { RoomExitViewModel roomExitViewModel; if (roomByIdLookup.ContainsKey(roomExit.RoomId)) { roomExitViewModel = new RoomExitViewModel(roomExit.Direction, roomByIdLookup[roomExit.RoomId]); } else { roomExitViewModel = new RoomExitViewModel(roomExit.Direction, null); } exists.Add(roomExitViewModel); } } }