//private float Zrotate;
        public CreatingNewGameScreen(Empire empire, string size, float StarNumModifier, string EmpireToRemoveName, int numOpponents, RaceDesignScreen.GameMode gamemode, int GameScale, UniverseData.GameDifficulty difficulty, MainMenuScreen mmscreen)
        {
            {
                GlobalStats.RemnantArmageddon = false;
                GlobalStats.RemnantKills = 0;
                this.mmscreen = mmscreen;
                foreach (KeyValuePair<string, Ship_Game.Artifact> Artifact in Ship_Game.ResourceManager.ArtifactsDict)
                {
                    Artifact.Value.Discovered = false;
                }
                RandomEventManager.ActiveEvent = null;
                this.difficulty = difficulty;
                this.scale = (float)GameScale;
                if (this.scale == 5) this.scale = 8;
                if (this.scale == 6) this.scale = 16;
                this.mode = gamemode;
                this.numOpponents = numOpponents;
                this.EmpireToRemoveName = EmpireToRemoveName;
                EmpireManager.EmpireList.Clear();
                XmlSerializer serializer2 = new XmlSerializer(typeof(DiplomaticTraits));
                //Added by McShooterz: mod folder support
                this.dtraits = (DiplomaticTraits)serializer2.Deserialize((new FileInfo(File.Exists(string.Concat(Ship_Game.ResourceManager.WhichModPath, "/Diplomacy/DiplomaticTraits.xml")) ? string.Concat(Ship_Game.ResourceManager.WhichModPath, "/Diplomacy/DiplomaticTraits.xml") : "Content/Diplomacy/DiplomaticTraits.xml")).OpenRead());
                Ship_Game.ResourceManager.LoadEncounters();
                this.playerEmpire = empire;
                empire.Initialize();
                empire.data.CurrentAutoColony = empire.data.DefaultColonyShip;
                empire.data.CurrentAutoFreighter = empire.data.DefaultSmallTransport;
                empire.data.CurrentAutoScout = empire.data.StartingScout;
                empire.data.CurrentConstructor = empire.data.DefaultConstructor;
                this.data = new UniverseData()
                {
                    FTLSpeedModifier = GlobalStats.FTLInSystemModifier,
                    EnemyFTLSpeedModifier = GlobalStats.EnemyFTLInSystemModifier,
                    GravityWells = GlobalStats.PlanetaryGravityWells,
                    FTLinNeutralSystem = GlobalStats.WarpInSystem
                };
                string str = size;
                string str1 = str;
                if (str != null)
                {
                    if (str1 == "Tiny")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(16f * StarNumModifier);
                        this.data.Size = new Vector2(3500000f, 3500000f);
                    }
                    else if (str1 == "Small")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(30f * StarNumModifier);
                        this.data.Size = new Vector2(7300000f, 7300000f);
                    }
                    else if (str1 == "Medium")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(50f * StarNumModifier);
                        this.data.Size = new Vector2(9350000f, 9350000f);
                        Empire.ProjectorRadius = (this.data.Size.X / 70);
                    }
                    else if (str1 == "Large")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(50f * StarNumModifier);
                            Empire.ProjectorRadius = (this.data.Size.X / 70);
                    }
                    else if (str1 == "Huge")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(50f * StarNumModifier);
                            this.data.Size = new Vector2(18000000f, 18000000f);
                            Empire.ProjectorRadius = (this.data.Size.X / 70);
                    }
                    else if (str1 == "Epic")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(50f * StarNumModifier);
                            this.data.Size = new Vector2(54000000, 54000000);
                            Empire.ProjectorRadius = (this.data.Size.X / 70);
                            //this.data.Size = new Vector2(36000000, 36000000);
                        //this.scale = 2;

                        //this.numSystems = (int)(125f * StarNumModifier);
                        //this.data.Size = new Vector2(3.6E+07f, 3.6E+07f);

                    }
                    else if (str1 == "TrulyEpic")
                    {
                        //if (mode == RaceDesignScreen.GameMode.Warlords)
                        //{
                        //    this.numSystems = (int)(12 * StarNumModifier);
                        //}
                        //else
                            this.numSystems = (int)(50f * StarNumModifier);
                        //this.numSystems = (int)(100f * StarNumModifier);
                            this.data.Size = new Vector2(54000000, 54000000);
                        //this.data.Size = new Vector2(7.2E+07f, 7.2E+07f);
                        //this.scale = 4;
                            Empire.ProjectorRadius = (this.data.Size.X / 70);

                    }
                    //if (this.numSystems <= this.numOpponents+2)
                    //{
                    //    this.numSystems = this.numOpponents + 2;
                    //}
                }
                UniverseData universeDatum = this.data;
                universeDatum.Size = universeDatum.Size * this.scale;
                this.data.EmpireList.Add(empire);
                EmpireManager.EmpireList.Add(empire);
                this.GalacticCenter = new Vector2(this.data.Size.X / 2f, this.data.Size.Y / 2f);
                StatTracker.SnapshotsDict.Clear();

            }
        }
 public static Empire CreateRebelsFromEmpireData(EmpireData data, Empire parent)
 {
     Empire empire = new Empire();
     empire.isFaction = true;
     empire.data = CreatingNewGameScreen.CopyEmpireData(data);
     //Added by McShooterz: mod folder support
     DiplomaticTraits diplomaticTraits = (DiplomaticTraits)new XmlSerializer(typeof(DiplomaticTraits)).Deserialize((Stream)new FileInfo(File.Exists(string.Concat(Ship_Game.ResourceManager.WhichModPath, "/Diplomacy/DiplomaticTraits.xml")) ? string.Concat(Ship_Game.ResourceManager.WhichModPath, "/Diplomacy/DiplomaticTraits.xml") : "Content/Diplomacy/DiplomaticTraits.xml").OpenRead());
     int index1 = (int)RandomMath.RandomBetween(0.0f, (float)diplomaticTraits.DiplomaticTraitsList.Count);
     empire.data.DiplomaticPersonality = diplomaticTraits.DiplomaticTraitsList[index1];
     int index2 = (int)RandomMath.RandomBetween(0.0f, (float)diplomaticTraits.DiplomaticTraitsList.Count);
     empire.data.DiplomaticPersonality = diplomaticTraits.DiplomaticTraitsList[index2];
     int index3 = (int)RandomMath.RandomBetween(0.0f, (float)diplomaticTraits.EconomicTraitsList.Count);
     empire.data.EconomicPersonality = diplomaticTraits.EconomicTraitsList[index3];
     int index4 = (int)RandomMath.RandomBetween(0.0f, (float)diplomaticTraits.EconomicTraitsList.Count);
     empire.data.EconomicPersonality = diplomaticTraits.EconomicTraitsList[index4];
     empire.data.SpyModifier = data.Traits.SpyMultiplier;
     empire.PortraitName = data.PortraitName;
     empire.EmpireColor = new Color(128, 128, 128, 256);
     empire.Initialize();
     return empire;
 }
 private Empire CreateEmpireFromEmpireData(EmpireData data)
 {
     Empire empire = new Empire();
     if (data.Faction == 1)
         empire.isFaction = true;
     if (data.MinorRace)
         empire.MinorRace = true;
     int index1 = (int)RandomMath.RandomBetween(0.0f, (float)this.dtraits.DiplomaticTraitsList.Count);
     data.DiplomaticPersonality = this.dtraits.DiplomaticTraitsList[index1];
     while (!this.CheckPersonality(data))
     {
         int index2 = (int)RandomMath.RandomBetween(0.0f, (float)this.dtraits.DiplomaticTraitsList.Count);
         data.DiplomaticPersonality = this.dtraits.DiplomaticTraitsList[index2];
     }
     int index3 = (int)RandomMath.RandomBetween(0.0f, (float)this.dtraits.EconomicTraitsList.Count);
     data.EconomicPersonality = this.dtraits.EconomicTraitsList[index3];
     while (!this.CheckEPersonality(data))
     {
         int index2 = (int)RandomMath.RandomBetween(0.0f, (float)this.dtraits.EconomicTraitsList.Count);
         data.EconomicPersonality = this.dtraits.EconomicTraitsList[index2];
     }
     empire.data = data;
     //Added by McShooterz: set values for alternate race file structure
     data.Traits.SetValues();
     empire.dd = ResourceManager.DDDict[data.DiplomacyDialogPath];
     empire.data.SpyModifier = data.Traits.SpyMultiplier;
     empire.data.Traits.Spiritual = data.Traits.Spiritual;
     data.Traits.PassengerModifier += data.Traits.PassengerBonus;
     empire.PortraitName = data.PortraitName;
     empire.data.Traits = data.Traits;
     empire.EmpireColor = new Color((byte)data.Traits.R, (byte)data.Traits.G, (byte)data.Traits.B);
     empire.Initialize();
     return empire;
 }
        private Empire CreateEmpireFromEmpireSaveData(SavedGame.EmpireSaveData data)
        {
            Empire e = new Empire();
            //TempEmpireData  Tdata = new TempEmpireData();

            if (data.IsFaction)
            {
                e.isFaction = true;
            }
            if (data.isMinorRace)
            {
                e.MinorRace = true;
            }
            if (data.empireData == null)
            {
                e.data.Traits = data.Traits;
                e.EmpireColor = new Color((byte)data.Traits.R, (byte)data.Traits.G, (byte)data.Traits.B);
            }
            else
            {
                e.data = new EmpireData();
                //Tdata = data.empireData as TempEmpireData;

                foreach (string key in e.data.WeaponTags.Keys)
                {
                    if(data.empireData.WeaponTags.ContainsKey(key))
                        continue;
                    data.empireData.WeaponTags.Add(key,new WeaponTagModifier());
                }
                e.data = data.empireData;

               // e.data.
                e.data.ResearchQueue = data.empireData.ResearchQueue;
                e.ResearchTopic = data.ResearchTopic;
                if (e.ResearchTopic == null)
                {
                    e.ResearchTopic = "";
                }
                e.dd = Ship_Game.ResourceManager.DDDict[e.data.DiplomacyDialogPath];
                e.PortraitName = e.data.PortraitName;
                e.EmpireColor = new Color((byte)e.data.Traits.R, (byte)e.data.Traits.G, (byte)e.data.Traits.B);
                if (data.CurrentAutoScout != null)
                    e.data.CurrentAutoScout = data.CurrentAutoScout;
                else
                    e.data.CurrentAutoScout = e.data.StartingScout;
                if (data.CurrentAutoFreighter != null)
                    e.data.CurrentAutoFreighter = data.CurrentAutoFreighter;
                else
                    e.data.CurrentAutoFreighter = e.data.DefaultSmallTransport;
                if (data.CurrentAutoColony != null)
                    e.data.CurrentAutoColony = data.CurrentAutoColony;
                else
                    e.data.CurrentAutoColony = e.data.DefaultColonyShip;

                if (data.CurrentConstructor != null)
                    e.data.CurrentConstructor = data.CurrentConstructor;
                else
                    e.data.CurrentConstructor = e.data.DefaultConstructor;

            }
            e.Initialize();
            e.Money = data.Money;
            e.Research = data.Research;
            e.GetGSAI().AreasOfOperations = data.AOs;
            foreach (TechEntry tech in data.TechTree)
            {
                if (!e.GetTDict().ContainsKey(tech.UID))
                {
                    continue;
                }
                if (tech.AcquiredFrom != null)
                    e.GetTDict()[tech.UID].AcquiredFrom = tech.AcquiredFrom;
                if (tech.Unlocked)
                {
                    e.UnlockTechFromSave(tech.UID);
                }
                e.GetTDict()[tech.UID].Progress = tech.Progress;
                e.GetTDict()[tech.UID].Discovered = tech.Discovered;
                e.GetTDict()[tech.UID].level = tech.level;
            }
            return e;
        }