コード例 #1
0
ファイル: RoomViewModel.cs プロジェクト: syrompetka/mudclient
        public RoomViewModel Clone()
        {
            var additionalRoomParameters = AdditionalRoomParameters.Clone();

            return(new RoomViewModel(Room, additionalRoomParameters, Exits, Zone, _allActionDescriptions)
            {
                _actionsViewModel = ActionsViewModel.Clone(additionalRoomParameters.ActionsToExecuteOnRoomEntry)
            });
        }
コード例 #2
0
ファイル: RoomViewModel.cs プロジェクト: syrompetka/mudclient
        /// <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;
        }
コード例 #3
0
ファイル: ZoneViewModel.cs プロジェクト: syrompetka/mudclient
        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);
                }
            }
        }