void GenerateStars() { GenerateHumanHomeStar(); // generate the human home system int starCount = gameDataRef.TotalSystems; for (int i = 0; i < starCount; i++) { Vector3 starLoc = DetermineStarLocation(); StarData newStar = new StarData(); newStar = GenerateGameObject.CreateNewStar(); // this creates the star and adds the data/accessor components // if the star type is 'no star', break this loop, and if it is too high (no specials or wolf rayet yet) no star either (yet) if ((int)newStar.SpectralClass >= 12) newStar.SpectralClass = StarData.eSpectralClass.NoStar; if (newStar.SpectralClass == 0) { continue; } newStar.SetWorldLocation(starLoc); gData.AddStarDataToList(newStar); } gData.galaxyIsGenerated = true; // add more checks here }
void DrawPlanets(StarData sData) { GameObject selectedStar = GetSelectedStar(); Vector3 starPosition = GetSelectedStar().GetComponent<Star>().transform.position; for (int x = 0; x < 6; x++) { if (sData.PlanetSpots[x] != null) { // add planet to draw, if a sprite exists if (sData.PlanetSpots[x].PlanetSpriteNumber != -1) switch (sData.PlanetSpots[x].Type) { case PlanetData.ePlanetType.AsteroidBelt: { planetsToDraw[x] = asteroidBelts[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Barren: { planetsToDraw[x] = barrenPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Greenhouse: { planetsToDraw[x] = greenhousePlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Desert: { planetsToDraw[x] = desertPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Terran: { planetsToDraw[x] = terranPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Ice: { planetsToDraw[x] = icePlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.IceGiant: { planetsToDraw[x] = dwarfJovianPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.GasGiant: { planetsToDraw[x] = jovianPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Lava: { planetsToDraw[x] = lavaPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Irradiated: { planetsToDraw[x] = irradiatedPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.SuperEarth: { planetsToDraw[x] = superEarthPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.Ocean: { planetsToDraw[x] = waterPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.BrownDwarf: { planetsToDraw[x] = brownDwarfPlanets[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.IceBelt: { planetsToDraw[x] = iceBelts[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } case PlanetData.ePlanetType.DustRing: { planetsToDraw[x] = dustRings[sData.PlanetSpots[x].PlanetSpriteNumber]; break; } default: { break; } } } } for (int x = 0; x < 6; x++) { if (planetsToDraw[x] != null) { // planet draw routine PlanetData pData = new PlanetData(); float startingPlanetMargin = 110; float screenScaleFactor = (float)Screen.width / 1920f; float screenWidthFactor = 0f; if (Screen.width >= 1600) { screenWidthFactor = 15f; } else if (Screen.width >= 1400) { screenWidthFactor = 14f; } else if (Screen.width >= 1280) screenWidthFactor = 14f; else screenWidthFactor = 12.3f; pData = sData.PlanetSpots[x]; Vector3 position = new Vector3(starPosition.x + ((selectedStar.transform.localScale.x / 2) + (startingPlanetMargin * screenScaleFactor)) + ((x + 1) * ((float)Screen.width / screenWidthFactor)), starPosition.y, 10); // derive the planet position from the star GameObject planet = Instantiate(planetsToDraw[x], position, Quaternion.Euler(0, 180, 0)) as GameObject; // draw the planet planet.AddComponent<Planet>(); // add the planet container planet.GetComponent<Planet>().planetData = pData; // and attach the data planet.name = pData.Name; planet.GetComponent<CircleCollider2D>().radius = 2.0f; int size = 0; // normalize the size of the object if (pData.Type == PlanetData.ePlanetType.IceBelt || pData.Type == PlanetData.ePlanetType.AsteroidBelt || pData.Type == PlanetData.ePlanetType.IceBelt) size = 50; else size = pData.Size; // size of the planet (need to increase) pData.PlanetSystemScaleSize = size *.25f; // set the planet's size as it should be in the system view (will probably set with the gameobject) planet.transform.localScale = new Vector2(pData.PlanetSystemScaleSize, pData.PlanetSystemScaleSize); // scale the sprite depending on size planet.transform.Rotate(180, 180, 0); listSystemPlanetsCreated.Add(planet); // add the planet to the drawn list (for destruction later as a group) //draw rings if they exist if (pData.Rings) { GameObject ring = Instantiate(rings[pData.PlanetRingSpriteNumber], position, Quaternion.Euler(0, 0, 0)) as GameObject; // create the ring if it exists ring.transform.SetParent(planet.transform, false); // set as child of planet ring.transform.Rotate(new Vector3(0, 0, 0 + pData.PlanetRingTilt)); ring.transform.localScale = new Vector3(1, 1, 1); ring.transform.localPosition = new Vector3(0, 0, 0); ring.GetComponent<SpriteRenderer>().sortingOrder = 1; } } } planetsDrawn = true; // set flag }
void GenerateHumanHomeStar() { // create New Terra Vector3 starLoc = new Vector3(0, 0, 0); StarData newStar = new StarData(); newStar.SpectralClass = StarData.eSpectralClass.G; newStar.Age = 7; newStar.starMultipleType = StarData.eStarMultiple.Single; newStar.Size = 8; newStar.Metallicity = 8.0; newStar.Name = "Neo-Sirius"; newStar.ID = "STANEOS001"; newStar.SetWorldLocation(starLoc); gData.AddStarDataToList(newStar); }
private Color CheckBioStatus(StarData starData) { bool hasGoodPlanets = false; bool hasOKPlanets = false; bool hasPoorPlanets = false; Color textColor = new Color(); foreach (PlanetData planet in starData.PlanetList) // test to check for changing label colors dynamically { if (starData.PlanetList.Count > 0) { if (planet.Bio > 70) hasGoodPlanets = true; else if (planet.Bio > 40) hasOKPlanets = true; else hasPoorPlanets = true; } else { textColor = Color.grey; return textColor; } } // set the color depending on planet bio if (hasGoodPlanets) textColor = Color.green; else if (hasOKPlanets) textColor = Color.yellow; else if (hasPoorPlanets) textColor = Color.red; return textColor; }
public static StarData GetCivHomeSystem(Civilization civ) { GlobalGameData gameDataRef = GameObject.Find("GameManager").GetComponent<GlobalGameData>(); GalaxyData galaxyDataRef = GameObject.Find("GameManager").GetComponent<GalaxyData>(); PlanetData pData = new PlanetData(); StarData sData = new StarData(); pData = galaxyDataRef.GalaxyPlanetDataList.Find(p => p.ID == civ.CapitalPlanetID); sData = galaxyDataRef.GalaxyStarDataList.Find(p => p.ID == pData.SystemID); return sData; }
public static float MeasureDistanceBetweenSystems(StarData star1, StarData star2) { float distance = 0f; float a = 0f; float b = 0f; float h = 0f; a = Mathf.Abs(star1.WorldLocation.x - star2.WorldLocation.x); // x distance b = Mathf.Abs(star1.WorldLocation.y - star2.WorldLocation.y); // y distance h = Mathf.Pow(a, 2f) + Mathf.Pow(b, 2f); distance = Mathf.Sqrt(h); return distance; }
public static StarData GetSystem(string ID) { GalaxyData galaxyDataRef = GameObject.Find("GameManager").GetComponent<GalaxyData>(); StarData sData = new StarData(); sData = galaxyDataRef.GalaxyStarDataList.Find(p => p.ID == ID); return sData; }
public static List<StarData> GetProvinceSystems(string ID) { GalaxyData galaxyDataRef = GameObject.Find("GameManager").GetComponent<GalaxyData>(); StarData sData = new StarData(); List<StarData> sDataList = new List<StarData>(); sDataList = galaxyDataRef.GalaxyStarDataList.FindAll(p => p.AssignedProvinceID == ID); return sDataList; }