static void ExportJson(string filename) { SpawnInfo blueSpawn = null, redSpawn = null; foreach (var obj in GameObject.FindGameObjectsWithTag("Spawn")) { SpawnBuilder builder = obj.GetComponent <SpawnBuilder>(); if (builder.blueTeam) { blueSpawn = builder.GetInfo(); } else { redSpawn = builder.GetInfo(); } } CoreInfo blueCore = null, redCore = null; foreach (var obj in GameObject.FindGameObjectsWithTag("Core")) { CoreBuilder builder = obj.GetComponent <CoreBuilder>(); if (builder.blueTeam) { blueCore = builder.GetInfo(); } else { redCore = builder.GetInfo(); } } List <TowerInfo> towers = new List <TowerInfo>(); foreach (var obj in GameObject.FindGameObjectsWithTag("Tower")) { towers.Add(obj.GetComponent <TowerBuilder>().GetInfo()); } List <MonsterInfo> monsters = new List <MonsterInfo>(); foreach (var obj in GameObject.FindGameObjectsWithTag("Monster")) { monsters.Add(obj.GetComponent <MonsterBuilder>().GetInfo()); } List <MinionRelayPointInfo> minionRelayPoints = new List <MinionRelayPointInfo>(); foreach (var obj in GameObject.FindGameObjectsWithTag("MinionRelayPoint")) { minionRelayPoints.Add(obj.GetComponent <MinionRelayPointBuilder>().GetInfo()); } List <EdgeInfo> edges = new List <EdgeInfo>(); foreach (var obj in GameObject.FindGameObjectsWithTag("Edge")) { edges.Add(obj.GetComponent <EdgeBuilder>().GetInfo()); } List <CircleInfo> circles = new List <CircleInfo>(); foreach (var obj in GameObject.FindGameObjectsWithTag("Circle")) { circles.Add(obj.GetComponent <CircleBuilder>().GetInfo()); } List <BushInfo> bushes = new List <BushInfo>(); foreach (var obj in GameObject.FindGameObjectsWithTag("Bush")) { bushes.Add(obj.GetComponent <BushBuilder>().GetInfo()); } MapInfo mapInfo = new MapInfo() { blueSpawn = blueSpawn, redSpawn = redSpawn, blueCore = blueCore, redCore = redCore, towers = towers.ToArray(), monsters = monsters.ToArray(), minionRelayPoints = minionRelayPoints.ToArray(), edges = edges.ToArray(), circles = circles.ToArray(), bushes = bushes.ToArray() }; string json = JsonConvert.SerializeObject(mapInfo); StreamWriter sw = new StreamWriter(filename + ".json", false); sw.WriteLine(json); sw.Flush(); sw.Close(); }
protected Galaxy(Configuration configuration) { Galaxy.Instance = this; this.IsValid = true; this.builderList = new List<Builder>(); StarBuilder starBuilder = new StarBuilder(); ConstellationBuilder constellationsBuilder = new ConstellationBuilder(); WarpBuilder warpBuilder = new WarpBuilder(); SpawnBuilder spawnBuilder = new SpawnBuilder(); PlanetBuilder planetBuilder = new PlanetBuilder(); HomeBuilder homeBuilder = new HomeBuilder(); StrategicResourceBuilder strategicResourceBuilder = new StrategicResourceBuilder(); LuxuryResourceBuilder luxuryResourceBuilder = new LuxuryResourceBuilder(); this.builderList.Add(starBuilder); this.builderList.Add(constellationsBuilder); this.builderList.Add(warpBuilder); this.builderList.Add(spawnBuilder); this.builderList.Add(planetBuilder); this.builderList.Add(homeBuilder); this.builderList.Add(strategicResourceBuilder); this.builderList.Add(luxuryResourceBuilder); this.Configuration = configuration; this.Stars = new List<StarSystem>(); this.Warps = new List<WarpLine>(); this.Constellations = new List<Constellation>(); this.Regions = new List<Region>(); this.SpawnStars = new List<StarSystem>(); //this.Planets = new List<Planet>(); foreach (Builder builder in this.builderList) { if (this.IsValid) { builder.Execute(); this.IsValid = this.IsValid && builder.Result; } } if (this.IsValid) { this.IsValid = Balancing.Balancing.isBalanced(); } if (!this.IsValid) { System.Diagnostics.Trace.WriteLine("--Galaxy generation failed--"); System.Diagnostics.Trace.WriteLine("--Generation defects summary--"); foreach (Builder b in this.builderList) { foreach (string text in b.Defects) { System.Diagnostics.Trace.WriteLine(b.Name + " -> " + text); } } System.Diagnostics.Trace.WriteLine("--Generation defects end--"); } }