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