Пример #1
0
 public void LandSpaceShip(SpaceShip colonyShip)
 {
     if (population == 0)
     {
         inhabitedPlanets++;
     }
     population += colonyShip.Passengers;
     planetstate = HabitationState.Inhabited;
     parentGame.Components.Remove(colonyShip);
 }
Пример #2
0
        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);
        }
Пример #3
0
 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;
 }
Пример #4
0
        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);
                        }
                    }
                }
            }
        }