public void LandSpaceShip(SpaceShip colonyShip) { if (population == 0) { inhabitedPlanets++; } population += colonyShip.Passengers; planetstate = HabitationState.Inhabited; parentGame.Components.Remove(colonyShip); }
private static IGameComponent ParseLine(string lvlLine, GalaxyGame g, ref Vector2 lastStarPos) { if (lvlLine.IndexOf(';') == -1) { return(null); } IGameComponent gc = null; string[] lineElements = lvlLine.Split(';'); switch (lvlLine[0]) { case 'S': if (lineElements.Count() != 5) { return(gc); } lastStarPos = new Vector2(float.Parse(lineElements[3]), float.Parse(lineElements[4])); gc = new Star(g, lineElements[1], float.Parse(lineElements[2]), ref lastStarPos); break; case 'P': if (lineElements.Count() != 7) { return(gc); } HabitationState hs = (lineElements[6] == "C") ? HabitationState.Colonizable : HabitationState.Uninhabitable; gc = new Planet(g, lineElements[1], float.Parse(lineElements[2]), float.Parse(lineElements[3]), float.Parse(lineElements[4]), lastStarPos, long.Parse(lineElements[5]) * 1000000, hs); break; case 'M': if (lineElements.Count() != 5) { return(gc); } gc = new MeteorField(g, lineElements[1], new Vector2(float.Parse(lineElements[2]), float.Parse(lineElements[3])), float.Parse(lineElements[4])); break; default: // Comment line or something. break; } return(gc); }
public Planet(Game game, string textureName, float _a, float _b, float _mass, Vector2 starP, long _population, HabitationState _planetstate) : base(game, textureName, _mass) { this.a = _a; this.b = _b; this.starPosition = starP; theta = ((float)RandomGenerator.Generator.Next(-314, 314) / 100f); Position = GetPosition(theta) + starPosition; homeworld = _population > 0; population = _population; if (population > 0) { inhabitedPlanets++; } //growthStop = 300; growth = float.Parse(GalaxyReader.Settings["popgrowth"], CultureInfo.InvariantCulture); popcap = long.Parse(GalaxyReader.Settings["popcap"]); UpdateOrder = (int)((1 - this.Scale) * 100); planetstate = _planetstate; }
public override void TakeCollision(CelestialObj obj) { if (obj is Asteroid) { if (planetstate == HabitationState.Uninhabitable) { Audio.State = AudioState.CometHitUnHabitablePlanet; } else { Audio.State = AudioState.CometHitHabitablePlanet; } if (population > 0) { StopGrowth(300); population = population - Math.Max((long)(population * 0.3), 1000000000L); if (population <= 0) { population = 0; poppct = 0; inhabitedPlanets--; if (!homeworld) { planetstate = HabitationState.Colonizable; } else { ChangeTexture(TextureName + "Dead"); planetstate = HabitationState.Uninhabitable; } if (inhabitedPlanets <= 0) { ((GalaxyGame)parentGame).EndGame(true); } } } } }