Пример #1
0
    public static Area[,] ConvertAreasForPlaying(AreaSdo[] sdos)
    {
        var areas = new Area[3, 3];

        foreach (var sdo in sdos)
        {
            var area = new Area();
            area.X = sdo.X;
            area.Y = sdo.Y;
            area.PresentEntities = new List <Entity>();
            area.BiomeType       = sdo.BiomeType;
            area.AreaTiles       = sdo.AreaTiles != null
                ? TileSdo.ConvertToAreaTiles(sdo.AreaTiles, area.Height, area.Width, area.BiomeType)
                : null;

            area.PresentFactions   = new List <Faction>();
            area.TurnOrder         = new Queue <Entity>();
            area.ParentCell        = WorldData.Instance.MapDictionary[sdo.ParentCellId];
            area.Settlement        = new Settlement(sdo.SettlementSdo);
            area.SettlementSection = sdo.SettlementSectionSdo != null ? new SettlementSection(sdo.SettlementSectionSdo) : null;

            if (sdo.PresentEntityIds.Count > 0)
            {
                foreach (var id in sdo.PresentEntityIds)
                {
                    var entity = WorldData.Instance.Entities[id];
                    area.PresentEntities.Add(entity);
                    entity.CurrentArea = area;
                    entity.CurrentCell = area.ParentCell;
                }

                foreach (var id in sdo.TurnOrderIds)
                {
                    area.TurnOrder.Enqueue(WorldData.Instance.Entities[id]);
                }
            }

            if (sdo.PresentFactionNames.Count > 0)
            {
                foreach (var name in sdo.PresentFactionNames)
                {
                    area.PresentFactions.Add(WorldData.Instance.Factions[name]);
                }
            }

            areas[area.X, area.Y] = area;
        }
        return(areas);
    }
Пример #2
0
    public static TileSdo[] ConvertAreaTilesForSaving(Tile[,] map)
    {
        var index  = 0;
        var width  = map.GetLength(0);
        var height = map.GetLength(1);
        var single = new TileSdo[width * height];

        for (var y = 0; y < height; y++)
        {
            for (var x = 0; x < width; x++)
            {
                single[index] = ConvertToTileSdo(map[x, y]);
                index++;
            }
        }
        return(single);
    }
Пример #3
0
    public static AreaSdo ConvertAreaForSaving(Area area)
    {
        AreaSdo tempSdo;

        tempSdo = new AreaSdo();
        tempSdo.PresentEntityIds = new List <Guid>();
        tempSdo.AreaTiles        = area.AreaBuilt()
            ? TileSdo.ConvertAreaTilesForSaving(area.AreaTiles)
            : null;
        tempSdo.BiomeType           = area.BiomeType;
        tempSdo.PresentFactionNames = new List <string>();
        tempSdo.TurnOrderIds        = new Queue <Guid>();
        tempSdo.X                    = area.X;
        tempSdo.Y                    = area.Y;
        tempSdo.ParentCellId         = area.ParentCell.Id;
        tempSdo.SettlementSdo        = area.Settlement?.GetSettlementSdo();
        tempSdo.SettlementSectionSdo =
            area.SettlementSection != null ? new SettlementSectionSdo(area.SettlementSection) : null;

        if (area.PresentEntities != null)
        {
            foreach (var entity in area.PresentEntities)
            {
                tempSdo.PresentEntityIds.Add(entity.Id);
            }
        }

        if (area.TurnOrder != null)
        {
            foreach (var entity in area.TurnOrder)
            {
                tempSdo.TurnOrderIds.Enqueue(entity.Id);
            }
        }

        if (area.PresentFactions != null)
        {
            foreach (var faction in area.PresentFactions)
            {
                tempSdo.PresentFactionNames.Add(faction.Name);
            }
        }

        return(tempSdo);
    }
Пример #4
0
    public static Tile ConvertToAreaTile(TileSdo sdo, BiomeType biomeType)
    {
        var tile = new Tile();

        tile.Id = sdo.Id;

        var indices = sdo.Id.Split(' ');

        tile.X          = Convert.ToInt32(indices[0]);
        tile.Y          = Convert.ToInt32(indices[1]);
        tile.PrefabName = sdo.PrefabName;
        tile.SetPrefabTileTexture(WorldData.Instance.GetTileTextureByNameRarityAndBiome(sdo.PrefabName, biomeType));
        tile.Visibility = sdo.Visibility;

        if (sdo.PresentEntityId != Guid.Empty && WorldData.Instance.Entities.ContainsKey(sdo.PresentEntityId))
        {
            tile.SetPresentEntity(WorldData.Instance.Entities[sdo.PresentEntityId]);
            tile.GetPresentEntity().CurrentTile = tile;
        }

        tile.PresentItems = new List <Item>();

        foreach (var itemId in sdo.PresentItemIds)
        {
            tile.PresentItems.Add(WorldData.Instance.Items[itemId]);
        }

        tile.Rarity = sdo.Rarity;
        tile.SetBlocksMovement(sdo.BlocksMovement);
        tile.SetBlocksLight(sdo.BlocksLight);
        tile.GridPosition = sdo.GridPosition;
        tile.Revealed     = sdo.Revealed;

        if (sdo.PresentPropSdo != null)
        {
            tile.PresentProp = ConvertPropForPlaying(sdo.PresentPropSdo);
        }

        return(tile);
    }
Пример #5
0
    public static TileSdo ConvertToTileSdo(Tile tile)
    {
        var sdo = new TileSdo
        {
            Visibility      = tile.Visibility,
            PresentEntityId = tile.GetPresentEntity() != null
                ? tile.GetPresentEntity().Id
                : Guid.Empty,
            PresentItemIds = new List <Guid>(),
            Rarity         = tile.Rarity,
            PrefabName     = tile.PrefabName,
            BlocksMovement = tile.GetBlocksMovement(),
            BlocksLight    = tile.GetBlocksLight(),
            GridPosition   = tile.GridPosition,
            Id             = tile.Id,
            Revealed       = tile.Revealed,
            LotSdo         = LotSdo.ConvertToLotSdo(tile.Lot)
        };

        if (tile.GetPresentEntity() != null && !WorldData.Instance.Entities.ContainsKey(tile.GetPresentEntity().Id))
        {
            WorldData.Instance.Entities.Add(tile.GetPresentEntity().Id, tile.GetPresentEntity());
        }

        foreach (var item in tile.PresentItems)
        {
            sdo.PresentItemIds.Add(item.Id);
        }

        if (tile.PresentProp != null)
        {
            sdo.PresentPropSdo = ConvertPropForSaving(tile.PresentProp);
        }

        return(sdo);
    }