示例#1
0
    public StarManifest GenerateStar()
    {
        StarManifest star = new StarManifest();

        star.planets = new List <PlanetManifest>();
        star.color   = (StarColor)UnityEngine.Random.Range(0, maxStarColor - 1);
        int starCount = UnityEngine.Random.Range(minStars, maxStars);

        for (int i = 0; i < starCount; i++)
        {
            star.planets.Add(GeneratePlanet(i));
        }

        // star is size based on nr of planets
        if (star.planets.Count > 8)
        {
            star.size = StarSize.Supergiant;
        }
        else if (star.planets.Count > 5)
        {
            star.size = StarSize.Giant;
        }
        else
        {
            star.size = StarSize.Dwarf;
        }

        currentStarCount++;
        return(star);
    }
示例#2
0
 private bool StarRequirements(ConstellationManifest constellation, StarManifest star)
 {
     foreach (var st in constellation.stars)
     {
         float dist = Vector3.Distance(st.position, star.position);
         if (minStarGap > dist)
         {
             return(false);
         }
     }
     return(true);
 }
示例#3
0
    public ConstellationManifest GenerateConstellation(Vector3 normalizedPos)
    {
        ConstellationManifest constellation = new ConstellationManifest();

        // position
        constellation.position = normalizedPos;
        constellation.bounds   = new Bounds(constellation.position, new Vector3(constellationSize, constellationSize, 1f));

        // set seed
        int origSeed = UnityEngine.Random.seed;

        UnityEngine.Random.seed =
            randomSeed +
            (int)(constellation.position.x / constellationSize) +
            (int)(constellation.position.y / constellationSize) * 100000;

        // stars
        constellation.stars = new List <StarManifest>();
        int starCount = UnityEngine.Random.Range(minStars, maxStars);

        for (int i = 0; i < starCount; i++)
        {
            StarManifest star = GenerateStar();
            do
            {
                star.position = new Vector3(
                    UnityEngine.Random.Range(-constellationSize / 2f + minStarGap, constellationSize / 2f - minStarGap),
                    UnityEngine.Random.Range(-constellationSize / 2f + minStarGap, constellationSize / 2f - minStarGap)
                    );
            }while (!StarRequirements(constellation, star));
            star.index = i;
            constellation.stars.Add(star);
        }

        // Fleet
        constellation.fleet = new List <FleetShipManifest>();
        int fleetShipCount = UnityEngine.Random.Range(1, 4);

        for (int i = 0; i < fleetShipCount; i++)
        {
            constellation.fleet.Add(GenerateFleetShip());
        }

        // restore previous seed
        UnityEngine.Random.seed = origSeed;

        return(constellation);
    }
 private bool StarRequirements(ConstellationManifest constellation, StarManifest star)
 {
     foreach (var st in constellation.stars) {
         float dist = Vector3.Distance(st.position, star.position);
         if (minStarGap > dist) {
             return false;
         }
     }
     return true;
 }
    public StarManifest GenerateStar()
    {
        StarManifest star = new StarManifest();
        star.planets = new List<PlanetManifest>();
        star.color = (StarColor)UnityEngine.Random.Range(0, maxStarColor - 1);
        int starCount = UnityEngine.Random.Range(minStars, maxStars);
        for (int i = 0 ; i < starCount ; i++) {
            star.planets.Add(GeneratePlanet(i));
        }

        // star is size based on nr of planets
        if (star.planets.Count > 8) {
            star.size = StarSize.Supergiant;
        }
        else if (star.planets.Count > 5) {
            star.size = StarSize.Giant;
        }
        else {
            star.size = StarSize.Dwarf;
        }

        currentStarCount++;
        return star;
    }