Пример #1
0
        private List <RoomDescriptionModel> GetFilledRoomModels(RoomDescriptionsSetModel setModel, string roomDescriptionName, string setName)
        {
            var roomModels   = new List <RoomDescriptionModel>();
            var defaultModel = setModel.Default;

            foreach (var pair in setModel.RoomDescriptions)
            {
                var name      = pair.Key;
                var roomModel = pair.Value;
                roomModel.Name = name;

                if (!string.IsNullOrEmpty(roomDescriptionName) && name != roomDescriptionName)
                {
                    continue;
                }

                if (roomModel.Shape == null)
                {
                    if (defaultModel.Shape == null)
                    {
                        throw new ParsingException($"Neither shape nor default shape are set. Room {name}, set {setName}");
                    }

                    roomModel.Shape = defaultModel.Shape;
                }

                if (roomModel.DoorMode == null)
                {
                    if (defaultModel.DoorMode == null)
                    {
                        throw new ParsingException($"Neither door mode nor default door mode are set. Room {name}, set {setName}");
                    }

                    roomModel.DoorMode = defaultModel.DoorMode;
                }

                roomModels.Add(roomModel);
            }

            return(roomModels);
        }
Пример #2
0
        private RoomDescriptionsSetModel GetSetModel(string name, Dictionary <string, RoomDescriptionsSetModel> roomDescriptionsSets, RoomDescriptionsSetModel customRoomDescriptionsSet)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(customRoomDescriptionsSet);
            }

            if (!roomDescriptionsSets.TryGetValue(name, out var set))
            {
                throw new ParsingException($"Room descriptions set with name \"{name}\" was not found");
            }

            return(set);
        }
Пример #3
0
        private List <RoomDescription> GetRoomDescriptions(RoomShapesModel roomShapesModel, Dictionary <string, RoomDescriptionsSetModel> roomDescriptionsSets, RoomDescriptionsSetModel customRoomDescriptionsSet, IntVector2?scale)
        {
            var setModel = GetSetModel(roomShapesModel.SetName, roomDescriptionsSets, customRoomDescriptionsSet);
            var setName  = string.IsNullOrEmpty(roomShapesModel.SetName) ? "custom" : roomShapesModel.SetName;

            if (!string.IsNullOrEmpty(roomShapesModel.RoomDescriptionName) && !setModel.RoomDescriptions.ContainsKey(roomShapesModel.RoomDescriptionName))
            {
                throw new ParsingException($"Room description with name \"{roomShapesModel.RoomDescriptionName}\" was not found in the set \"{setName}\"");
            }

            var roomModels       = GetFilledRoomModels(setModel, roomShapesModel.RoomDescriptionName, setName);
            var roomDescriptions = roomModels.Select(x => ConvertRoomModelToDescription(x, scale)).ToList();

            return(roomDescriptions);
        }
Пример #4
0
        private List <RoomTemplate> GetRoomTemplates(List <RoomShapesModel> roomShapesModels, Dictionary <string, RoomDescriptionsSetModel> roomDescriptionsSets, RoomDescriptionsSetModel customRoomDescriptionsSet)
        {
            var roomTemplates = new List <RoomTemplate>();

            foreach (var roomShapesModel in roomShapesModels)
            {
                roomTemplates.AddRange(GetRoomTemplates(roomShapesModel, roomDescriptionsSets, customRoomDescriptionsSet));
            }

            return(roomTemplates);
        }