Beispiel #1
0
        public Planet(int Distance, Texture2D planetTex, Vector2 Origin, Rectangle SystemRectangle,
            string name, int type, int texNum, string system, int listIndex, int systemIndex,
            MapGenerator planetMapGenerator, Player ControlledBy = null)
        {
            PlanetsListIndex = listIndex;
            if (ControlledBy == null)
            {
                OwnerName = "None";
            }
            else
            {
                OwnerName = ControlledBy.Name;
                Owner = ControlledBy;
            }
            OrbitingSystem = system;
            OrbitingSystemListPosition = systemIndex;
            distance = Distance;
            PlanetTex = planetTex;
            randomDouble = (StrategyGame.r.NextDouble() + 0.001);
            rotation = MathHelper.Lerp(0.0f, 100f, (float)randomDouble);
            speed = MathHelper.Lerp(0.0f, 0.0001f, (float)randomDouble);
            position = new Vector2(distance, distance);
            origin = Origin;
            PlanetName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name);
            planetsResourcesList = new List<ResourceDeposit>();
            planetsBuildingList = new List<Building>();
            PlanetTier = type;
            TextureNum = texNum;
            this.planetMapGenerator = planetMapGenerator;
            if (SystemRectangle.Width > 100)
            {
                Rect = new Rectangle(0, 0, SystemRectangle.Width / 8, SystemRectangle.Height / 8);
            }
            else
            {
                Rect = new Rectangle(0, 0, SystemRectangle.Width / 5, SystemRectangle.Height / 5);
            }

            #region if Tier 2
            if (PlanetTier == 2)
            {
                IsHabited = true;
                Population = (11000000000 + StrategyGame.r.Next(500000000, 900000000));
                PopIncreaseRate = 0.01f;
                TaxRate = 30;
                int x;

                #region metal
                for (int i = 1; i <= NumMetals; i++)
                {
                    switch (i)
                    {
                        case 1:
                            x = ResourceQuantity(3);
                            planetsResourcesList.Add(new IronResource(x, 3));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                        case 2:
                            x = ResourceQuantity(4);
                            planetsResourcesList.Add(new ZincResource(x, 4));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                        case 3:
                            x = ResourceQuantity(4);
                            planetsResourcesList.Add(new CopperResource(x, 4));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                        case 4:
                            x = ResourceQuantity(4);
                            planetsResourcesList.Add(new AluminiumResource(x, 4));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                        case 5:
                            x = ResourceQuantity(3);
                            planetsResourcesList.Add(new TitaniumResource(x, 3));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                        case 6:
                            x = ResourceQuantity(4);
                            planetsResourcesList.Add(new MagnesiumResource(x, 4));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                        case 7:
                            x = ResourceQuantity(4);
                            planetsResourcesList.Add(new LeadResource(x, 4));
                            planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));
                            break;
                    }
                }
                #endregion

                #region blues
                x = ResourceQuantity(1);
                planetsResourcesList.Add(new SilverResource(x, 1));
                x = ResourceQuantity(1);
                planetsResourcesList.Add(new GoldResource(x, 1));
                x = ResourceQuantity(1);
                planetsResourcesList.Add(new PlatinumResource(x, 1));
                x = ResourceQuantity(1);
                planetsResourcesList.Add(new DiamondResource(x, 1));
                #endregion

                #region fuels
                x = ResourceQuantity(StartingFuelDepositLevel);
                planetsResourcesList.Add(new CoalResource(x, StartingFuelDepositLevel));
                planetsBuildingList.Add(
                        planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                            StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));

                x = ResourceQuantity(StartingFuelDepositLevel);
                planetsResourcesList.Add(new OilResource(x, StartingFuelDepositLevel));
                x = ResourceQuantity(StartingFuelDepositLevel);
                planetsResourcesList.Add(new NaturalGasResource(x, StartingFuelDepositLevel));
                x = ResourceQuantity(StartingFuelDepositLevel);
                planetsResourcesList.Add(new UraniumResource(x, StartingFuelDepositLevel));
                x = ResourceQuantity(StartingFuelDepositLevel);
                planetsResourcesList.Add(new ThoriumResource(x, StartingFuelDepositLevel));
                #endregion

                #region misc
                x = ResourceQuantity(StartingMiscDepositLevel);
                planetsResourcesList.Add(new TimberResource(x, StartingMiscDepositLevel));
                x = ResourceQuantity(StartingMiscDepositLevel);
                planetsResourcesList.Add(new LivestockResource(x, StartingMiscDepositLevel));
                planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));

                x = ResourceQuantity(StartingMiscDepositLevel);
                planetsResourcesList.Add(new CropsResource(x, StartingMiscDepositLevel));
                planetsBuildingList.Add(
                                planetsResourcesList[planetsResourcesList.Count - 1].BuildOn(
                                    StartingExtractorSize, StartingExtractorLevel, planetsBuildingList.Count));

                x = ResourceQuantity(StartingMiscDepositLevel);
                planetsResourcesList.Add(new CleanWaterResource(x, StartingMiscDepositLevel));
                #endregion

            }
            #endregion

            #region if Tier 4
            else if (PlanetTier == 4)
            {
                IsHabited = false;
                Population = 0;
                PopIncreaseRate = 0;
                int[] resources = new int[Tier4NumMetalResources];
                int x;
                int randomResource;

                #region metal
                for (int i = 0; i < Tier4NumMetalResources; i++)
                {
                    do
                    {
                        x = ResourceQuantity(Tier4StartingMetalDepositLevel);
                        randomResource = StrategyGame.r.Next(1, 8);
                    } while (resources.Contains(randomResource));

                    resources[i] = randomResource;


                    switch (randomResource)
                    {
                        case 1:
                            planetsResourcesList.Add(new IronResource(x, Tier4StartingMetalDepositLevel));
                            break;
                        case 2:
                            planetsResourcesList.Add(new ZincResource(x, Tier4StartingMetalDepositLevel));
                            break;
                        case 3:
                            planetsResourcesList.Add(new CopperResource(x, Tier4StartingMetalDepositLevel));
                            break;
                        case 4:
                            planetsResourcesList.Add(new AluminiumResource(x, Tier4StartingMetalDepositLevel));
                            break;
                        case 5:
                            planetsResourcesList.Add(new TitaniumResource(x, Tier4StartingMetalDepositLevel));
                            break;
                        case 6:
                            planetsResourcesList.Add(new MagnesiumResource(x, Tier4StartingMetalDepositLevel));
                            break;
                        case 7:
                            planetsResourcesList.Add(new LeadResource(x, Tier4StartingMetalDepositLevel));
                            break;
                    }

                }
                #endregion

                resources = new int[Tier4NumFuelDeposits];
                #region fuel

                for (int i = 0; i < Tier4NumFuelDeposits; i++)
                {
                    do
                    {
                        x = ResourceQuantity(Tier4StartingFuelDepositsLevel);
                        randomResource = StrategyGame.r.Next(1, 6);
                    } while (resources.Contains(randomResource));
                    resources[i] = randomResource;

                    switch (randomResource)
                    {
                        case 1:
                            planetsResourcesList.Add(new OilResource(x, Tier4StartingFuelDepositsLevel));
                            break;
                        case 2:
                            planetsResourcesList.Add(new CoalResource(x, Tier4StartingFuelDepositsLevel));
                            break;
                        case 3:
                            planetsResourcesList.Add(new NaturalGasResource(x, Tier4StartingFuelDepositsLevel));
                            break;
                        case 4:
                            planetsResourcesList.Add(new UraniumResource(x, Tier4StartingFuelDepositsLevel));
                            break;
                        case 5:
                            planetsResourcesList.Add(new ThoriumResource(x, Tier4StartingFuelDepositsLevel));
                            break;
                    }
                }
                #endregion

                resources = new int[Tier4NumBlues];
                #region blues
                for (int i = 0; i < Tier4NumBlues; i++)
                {
                    do
                    {
                        x = ResourceQuantity(Tier4StartingBluesDepositsLevel);
                        randomResource = StrategyGame.r.Next(1, 5);
                    } while (resources.Contains(randomResource));

                    resources[i] = randomResource;


                    switch (randomResource)
                    {
                        case 1:
                            planetsResourcesList.Add(new SilverResource(x, Tier4StartingBluesDepositsLevel));
                            break;
                        case 2:
                            planetsResourcesList.Add(new GoldResource(x, Tier4StartingBluesDepositsLevel));
                            break;
                        case 3:
                            planetsResourcesList.Add(new PlatinumResource(x, Tier4StartingBluesDepositsLevel));
                            break;
                        case 4:
                            planetsResourcesList.Add(new DiamondResource(x, Tier4StartingBluesDepositsLevel));
                            break;
                    }
                }
                #endregion

            }
            #endregion

            #region if Tier 3
            else if (PlanetTier == 3)
            {
                IsHabited = false;
                Population = 0;
                PopIncreaseRate = 0;
                int[] resources = new int[Tier3NumMetalResources];
                int x, size;
                int randomResource;

                #region metals
                for (int i = 0; i < Tier3NumMetalResources; i++)
                {

                    size = StrategyGame.r.Next(Tier3MaxMetalResourceSize + 1);
                    do
                    {
                        size = StrategyGame.r.Next(1, Tier3MaxMetalResourceSize);
                        x = ResourceQuantity(size);
                        randomResource = StrategyGame.r.Next(1, 8);


                    } while (resources.Contains(randomResource));

                    resources[i] = randomResource;

                    switch (randomResource)
                    {
                        case 1:
                            planetsResourcesList.Add(new IronResource(x, size));
                            break;
                        case 2:
                            planetsResourcesList.Add(new ZincResource(x, size));
                            break;
                        case 3:
                            planetsResourcesList.Add(new CopperResource(x, size));
                            break;
                        case 4:
                            planetsResourcesList.Add(new AluminiumResource(x, size));
                            break;
                        case 5:
                            planetsResourcesList.Add(new TitaniumResource(x, size));
                            break;
                        case 6:
                            planetsResourcesList.Add(new MagnesiumResource(x, size));
                            break;
                        case 7:
                            planetsResourcesList.Add(new LeadResource(x, size));
                            break;
                    }
                }
                #endregion

                #region blues
                size = StrategyGame.r.Next(1, Tier3MaxBluesResourceSize);
                x = ResourceQuantity(size);
                randomResource = StrategyGame.r.Next(1, 5);
                switch (randomResource)
                {
                    case 1:
                        planetsResourcesList.Add(new SilverResource(x, size));
                        break;
                    case 2:
                        planetsResourcesList.Add(new GoldResource(x, size));
                        break;
                    case 3:
                        planetsResourcesList.Add(new PlatinumResource(x, size));
                        break;
                    case 4:
                        planetsResourcesList.Add(new DiamondResource(x, size));
                        break;
                }
                #endregion

                #region misc
                x = ResourceQuantity(Tier3StartingMiscDepositLevel);
                planetsResourcesList.Add(new TimberResource(x, Tier3StartingMiscDepositLevel));
                x = ResourceQuantity(Tier3StartingMiscDepositLevel);
                planetsResourcesList.Add(new LivestockResource(x, Tier3StartingMiscDepositLevel));
                x = ResourceQuantity(Tier3StartingMiscDepositLevel);
                planetsResourcesList.Add(new CropsResource(x, Tier3StartingMiscDepositLevel));
                x = ResourceQuantity(Tier3StartingMiscDepositLevel);
                planetsResourcesList.Add(new CleanWaterResource(x, Tier3StartingMiscDepositLevel));
                #endregion

            }
            #endregion

            #region if Tier 1
            else if (PlanetTier == 1)
            {
                IsHabited = false;
                Population = 0;
                PopIncreaseRate = 0;
                int[] resources = new int[Tier1NumMetalResources];
                int x, size;
                int randomResource;
                #region metal
                for (int i = 0; i < Tier1NumMetalResources; i++)
                {

                    do
                    {
                        size = StrategyGame.r.Next(1, Tier1MaxMetalResourceSize);
                        x = ResourceQuantity(size);
                        randomResource = StrategyGame.r.Next(1, 8);

                    } while (resources.Contains(randomResource));

                    resources[i] = randomResource;

                    switch (randomResource)
                    {
                        case 1:
                            planetsResourcesList.Add(new IronResource(x, size));
                            break;
                        case 2:
                            planetsResourcesList.Add(new ZincResource(x, size));
                            break;
                        case 3:
                            planetsResourcesList.Add(new CopperResource(x, size));
                            break;
                        case 4:
                            planetsResourcesList.Add(new AluminiumResource(x, size));
                            break;
                        case 5:
                            planetsResourcesList.Add(new TitaniumResource(x, size));
                            break;
                        case 6:
                            planetsResourcesList.Add(new MagnesiumResource(x, size));
                            break;
                        case 7:
                            planetsResourcesList.Add(new LeadResource(x, size));
                            break;
                    }
                }
                #endregion

                #region blues
                x = ResourceQuantity(Tier1StartingPreciousDepositLevel);
                planetsResourcesList.Add(new SilverResource(x, Tier1StartingPreciousDepositLevel));
                x = ResourceQuantity(Tier1StartingPreciousDepositLevel);
                planetsResourcesList.Add(new GoldResource(x, Tier1StartingPreciousDepositLevel));
                x = ResourceQuantity(Tier1StartingPreciousDepositLevel);
                planetsResourcesList.Add(new PlatinumResource(x, Tier1StartingPreciousDepositLevel));
                #endregion

                #region fuels
                x = ResourceQuantity(Tier1StartingFuelDepositLevel);
                planetsResourcesList.Add(new OilResource(x, Tier1StartingFuelDepositLevel));
                x = ResourceQuantity(Tier1StartingFuelDepositLevel);
                planetsResourcesList.Add(new UraniumResource(x, Tier1StartingFuelDepositLevel));
                x = ResourceQuantity(Tier1StartingFuelDepositLevel);
                planetsResourcesList.Add(new ThoriumResource(x, Tier1StartingFuelDepositLevel));
                #endregion 
            }
            #endregion

            #region Buildings
            buildQueue = new BuildQueue();
            if (ControlledBy != null)
            {

            }
            #endregion

            #region map
            mapSitesList = new List<Vector2>();
            for (int y = 2; y < MapHeight ; y += 40)
            {
                for(int x = StrategyGame.r.Next(1, 10); x < MapWidth - 20; x += StrategyGame.r.Next(40, 60))
                {
                    bool finishedX = false;
                    if(x > (MapWidth - 20))
                    {
                        finishedX = true;
                        x = MapWidth - 5;
                    }

                    bool finishedY = false;
                    if (y > (MapHeight - 20))
                    {
                        finishedY = true;
                        y = MapHeight - 5;
                    }

                    mapSitesList.Add(new Vector2(x, y));

                    if (finishedX)
                        x = MapWidth + 1;
                    if (finishedY)
                        y = MapHeight + 1;
                }
            }
                      
            #endregion
        }
Beispiel #2
0
        internal void Initialize(int numSystems, Texture2D SystemTexture, Texture2D RingTexture,
            Vector2 MapSize, Texture2D[] planetTextures, ref AIPlayer[] aiPlayers, ref Player player,
            Texture2D SectorTexture, SpriteFont Font, GraphicsDevice device, GraphicsDeviceManager graphics,
            SpriteBatch spriteBatch)
        {
            playerName = player.Name + " of " + player.faction.Name;
            font = Font;
            sectorTexture = SectorTexture;
            string playerSysID;
            NumSystems = numSystems;
            systex = SystemTexture;
            ringtex = RingTexture;
            AllSystems = new PlanetsSystem[NumSystems];
            Width = (int)MapSize.X;
            Height = (int)MapSize.Y;
            selectedSystem = 0;
            PlanetTextures = planetTextures;
            string username = Environment.UserName;
            var PLANET_NAME_FILES = System.IO.File.ReadAllLines(@"C:\\Users\\" + username + "\\Documents\\RES\\TextAssets\\planetNames.txt");
            var SYSTEM_NAME_FILES = System.IO.File.ReadAllLines(@"C:\\Users\\" + username + "\\Documents\\RES\\TextAssets\\systemNames.txt");
            planetNames = new List<string>(PLANET_NAME_FILES); //Lit of all available planet names, each one is removed when used
            systemNames = new List<string>(SYSTEM_NAME_FILES);
            AIPlayerNumbers = new List<int>(aiPlayers.Length); //list is limited to number of AI
            planetMapGenerator = new MapGenerator(device, spriteBatch);


            List<Player> tempPlayerList = new List<Player>();
            tempPlayerList.Add(player);
            foreach (Player p in aiPlayers)
            {
                tempPlayerList.Add(p);
            }
            int currentPlayer = 0;
            bool isPlayerSystem = true;

            PlayerNumber = StrategyGame.r.Next(0, NumSystems);

            #region AIPlayer list position setup

            for (int i = 0; i < aiPlayers.Length; i++) //Setting up the number in the list of systems where the AI Players will be 
            {
                int tempIDNumber = 0;
                do
                {
                    tempIDNumber = StrategyGame.r.Next(0, NumSystems);
                }
                while (tempIDNumber == PlayerNumber || AIPlayerNumbers.Contains(tempIDNumber));

                AIPlayerNumbers.Add(tempIDNumber);
            }

            #endregion

            SetupMapPositions(MapSize);

            //Action action = () =>
            //{
            #region Player Systems

            size = PlayerSystemSize;
            SystemPosition = RandCoordinates(size, true);
            NumPlanets = 5;
            rect = new Rectangle(SystemPosition, new Point(size, size));
            SystemColour = player.faction.colour;

            randomName = StrategyGame.r.Next(0, systemNames.Count);
            systemName = systemNames[randomName];
            systemNames.RemoveAt(randomName); //make sure the name can't be assigned twice

            AllSystems[PlayerNumber] = new PlanetsSystem(rect, systex, ringtex, NumPlanets, planetTextures,
                SystemColour, ref planetNames, systemName, SystemIndex, gridPosition, new EventHandler(UpdateResources), 
                PlayerNumber, planetMapGenerator, player);
            playerSysID = systemName;
            player.AddSystem(ref AllSystems[PlayerNumber]);

            for (int i = 0; i < AllSystems[PlayerNumber].Planets; i++)
            {
                if (AllSystems[PlayerNumber].PlanetsList[i].PlanetTier == 2)
                {
                    player.AddPlanet(ref AllSystems[PlayerNumber], i);
                    //add planet to player list
                }
            }
            #endregion


            for (int i = 0; i < NumSystems; i++)
            {

                #region AIPlayerSystems

                if (AIPlayerNumbers.Contains(i)) //coords are being all set the same and sizes are being set to 200 - fix
                {
                    size = PlayerSystemSize;
                    NumPlanets = 5;

                    randomName = StrategyGame.r.Next(0, systemNames.Count);
                    systemName = systemNames[randomName];
                    systemNames.RemoveAt(randomName);


                    randomName = StrategyGame.r.Next(0, planetNames.Count);
                    tempPlanetName = planetNames[randomName];
                    planetNames.RemoveAt(randomName);

                    SystemPosition = RandAICoordinates(size);
                    rect = new Rectangle(SystemPosition, new Point(size, size));
                    SystemColour = Color.Red;
                    isPlayerSystem = true;
                    currentPlayer++;              
                }

                #endregion

                else if (i >= 0 && i < NumSystems && i != PlayerNumber)
                {
                    size = StrategyGame.r.Next(MinSize, MaxSize);
                    NumPlanets = StrategyGame.r.Next(1, 5);
                    SystemColour = Color.White;

                    randomName = StrategyGame.r.Next(0, systemNames.Count);
                    systemName = systemNames[randomName];
                    systemNames.RemoveAt(randomName);

                    SystemPosition = RandCoordinates(size);

                    rect = new Rectangle(SystemPosition, new Point(size, size));


                    randomName = StrategyGame.r.Next(0, planetNames.Count);
                    tempPlanetName = planetNames[randomName];
                    planetNames.RemoveAt(randomName);
                    isPlayerSystem = false;

                }
                if (i != PlayerNumber) //players system has to be initialized first - don't want to override it 
                {
                    if (isPlayerSystem)
                    {
                        AllSystems[i] = new PlanetsSystem(rect, systex, ringtex, NumPlanets, 
                            planetTextures, SystemColour, ref planetNames, systemName, SystemIndex, 
                            gridPosition, new EventHandler(UpdateResources), i,
                            planetMapGenerator, tempPlayerList[currentPlayer]);

                        aiPlayers[currentPlayer - 1].AddSystem(ref AllSystems[i]);

                        for (int index = 0; index < AllSystems[i].Planets; index++)
                        {
                            if (AllSystems[i].PlanetsList[index].PlanetTier == 2)
                            {
                                aiPlayers[currentPlayer - 1].AddPlanet(ref AllSystems[i], index);
                                //add planet to player list
                            }
                        }
                    }
                    else
                    {
                        AllSystems[i] = new PlanetsSystem(rect, systex, ringtex, NumPlanets, planetTextures, 
                            SystemColour, ref planetNames, systemName, SystemIndex, gridPosition, 
                            new EventHandler(UpdateResources), i, planetMapGenerator);
                    }
                }
            }
            selectedSystem = PlayerNumber;
            AllSystems[selectedSystem].OnSelected();

            int systemCount = 0;
            foreach (PlanetsSystem system in AllSystems)
            {
                int sectorCount = 0;
                foreach (MapSector sector in SectorsList)
                {
                    int count = 0;
                    foreach (Point p in sector.ContainedCoords)
                    {
                        if (system.GridPosition == p)
                        {
                            sector.AddSystem(ref AllSystems[systemCount], count);
                            system.Sector = Int32.Parse(sector.Name);
                            AllSystems[systemCount].AllSystemsListIndex = systemCount;
                            if (system.ID == playerSysID)
                            {
                                CurrentSector = sectorCount;
                            }
                        }

                        count++;
                    }
                    sectorCount++;
                }
                systemCount++;
            }
            //};
            //Task t = new Task(action);
            //t.RunSynchronously();
            //t.Wait();

            PLANET_NAME_FILES = null;
            SYSTEM_NAME_FILES = null;
        }
Beispiel #3
0
        public PlanetsSystem(Rectangle rect, Texture2D Systex, Texture2D Ringtex, int planets, Texture2D[] PlanetTex,
            Color colour, ref List<string> planetName, string systemName, int allCoordsIndex, Point gridPosition,
            EventHandler UpdateResourceDetails, int allSystemsListIndex, MapGenerator planetMapGenerator,
            Player ControlledBy = null) : base(Systex)
        {
            if (ControlledBy != null)
            {
                controlledBy = ControlledBy.Name + " of " + ControlledBy.faction.Name;
                controllingPlayer = ControlledBy;
            }
            else
            {
                controlledBy = "Unknown";
                controllingPlayer = null;
            }

            updateResourceDetails = UpdateResourceDetails;
            AllSystemsListIndex = allSystemsListIndex;
            GridPosition = gridPosition;
            index = allCoordsIndex;
            scale = 1.0f;
            tint = Color.White;
            SystemTexture = Systex;
            RingTexture = Ringtex;
            SystemRectangle = rect;
            Planets = planets;
            SystemColour = colour;
            speed = 0.01f;
            ID = systemName;
            origin = new Vector2(Systex.Width / 2, Systex.Height / 2);
            RingRectangle = new Rectangle(SystemRectangle.X + (SystemRectangle.Width / 2), SystemRectangle.Y + (SystemRectangle.Height / 2), SystemRectangle.Width, SystemRectangle.Height);
            PlanetsList = new List<Planet>(Planets);

            #region region

            string fullname;
            char one, two;
            for (int i = 0; i < Planets; i++)
            {
                if (planets > 1)
                {
                    switch (i)
                    {
                        case 0:
                        case 1:
                            randomNumber = StrategyGame.r.Next(0, T1Planets.Length);
                            randomNumber = T1Planets[randomNumber];
                            tier = 1;
                            break;
                        case 2:
                            randomNumber = StrategyGame.r.Next(0, T2Planets.Length);
                            randomNumber = T2Planets[randomNumber];
                            tier = 2;
                            break;
                        case 3:
                        case 4:
                        case 5:
                            tier = StrategyGame.r.Next(3, 5);
                            if (tier == 3)
                            {
                                randomNumber = StrategyGame.r.Next(0, T3Planets.Length);
                                randomNumber = T3Planets[randomNumber];
                            }
                            else if (tier == 4)
                            {
                                randomNumber = StrategyGame.r.Next(0, T4Planets.Length);
                                randomNumber = T4Planets[randomNumber];
                            }
                            break;
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                            randomNumber = StrategyGame.r.Next(0, T4Planets.Length);
                            randomNumber = T4Planets[randomNumber];
                            tier = 4;
                            break;
                    }
                }
                else
                {
                    do
                    {
                        randomNumber = StrategyGame.r.Next(1, PlanetTex.Length);
                    } while (randomNumber == 6);
                    if (T1Planets.Contains(randomNumber))
                    {
                        tier = 1;
                    }
                    else if (T2Planets.Contains(randomNumber))
                    {
                        tier = 2;
                    }
                    else if (T3Planets.Contains(randomNumber))
                    {
                        tier = 3;
                    }
                    else if (T4Planets.Contains(randomNumber))
                    {
                        tier = 4;
                    }
                }

                if (tier == 2)
                {
                    int namePosition = StrategyGame.r.Next(0, planetName.Count);
                    fullname = planetName[namePosition];
                    planetName.RemoveAt(namePosition);
                }
                else
                {
                    one = (char)StrategyGame.r.Next(65, 91);
                    two = (char)StrategyGame.r.Next(65, 91);
                    fullname = one.ToString() + two.ToString() + " " + StrategyGame.r.Next(100, 999).ToString();
                }

                if (tier == 2)
                {
                    PlanetsList.Add(new Planet(distance, PlanetTex[randomNumber - 1],
                        new Vector2((SystemRectangle.X + (SystemRectangle.Width / 2.1f)), (SystemRectangle.Y + (SystemRectangle.Height / 2.1f))),
                        SystemRectangle, fullname, tier, randomNumber - 1, ID, i, AllSystemsListIndex,
                        planetMapGenerator, controllingPlayer));

                }
                else
                {
                    PlanetsList.Add(new Planet(distance, PlanetTex[randomNumber - 1],
                        new Vector2((SystemRectangle.X + (SystemRectangle.Width / 2.1f)), (SystemRectangle.Y + (SystemRectangle.Height / 2.1f))),
                        SystemRectangle, fullname, tier, randomNumber - 1, ID, i, AllSystemsListIndex,
                        planetMapGenerator));

                }
                distance += distanceInterval;
                PlanetsList[PlanetsList.Count - 1].queueItemFinished = updateResourceDetails;
            }

            #endregion
        }