コード例 #1
0
    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();
    }
コード例 #2
0
        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--");
            }
        }