Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }