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