private WorldArea InstantiateWorldArea(WorldTile tile, WorldAreaData data) { if (!_loadedWorldAreas.ContainsKey(data.id)) { var go = Instantiate(worldAreaPrefab, _gameWorld.transform); var worldArea = go.GetComponent <WorldArea>(); worldArea.areaName = data.name; worldArea.climate = data.climate; worldArea.tiles = new List <WorldTile> { tile }; WorldRegion region = null; if (data.region != -1) { region = InstantiateWorldRegion(worldArea, _regionDict[data.region]); } worldArea.worldRegion = region; _loadedWorldAreas[data.id] = worldArea; return(worldArea); } var area = _loadedWorldAreas[data.id]; area.tiles.Add(tile); return(area); }
private Tuple <int, WorldAreaData, WorldRegionData> SaveArea([CanBeNull] WorldArea area) { if (area == null) { return(new Tuple <int, WorldAreaData, WorldRegionData>(-1, null, null)); } if (_savedAreasIdMap.ContainsKey(area.areaName)) { return(new Tuple <int, WorldAreaData, WorldRegionData>(_savedAreasIdMap[area.areaName], null, null)); } var(id, regionData) = SaveRegion(area.worldRegion); var areaData = new WorldAreaData() { id = _areaCount, name = area.areaName, climate = area.climate, region = id }; _savedAreasIdMap[area.areaName] = _areaCount; _areaCount += 1; return(new Tuple <int, WorldAreaData, WorldRegionData>(areaData.id, areaData, regionData)); }