示例#1
0
        private void Bind()
        {
            if (EmpireTemplate == null)
            {
                EmpireTemplate = new EmpireTemplate();
                EmpireTemplate.IsPlayerEmpire = true;
            }
            if (EmpireTemplate.PrimaryRace == null)
            {
                EmpireTemplate.PrimaryRace = new Race();
            }

            txtName.Text            = EmpireTemplate.Name;
            txtLeaderName.Text      = EmpireTemplate.LeaderName;
            ddlLeaderPortrait.Text  = EmpireTemplate.LeaderPortraitName;
            spnColorRed.Value       = EmpireTemplate.Color.R;
            spnColorGreen.Value     = EmpireTemplate.Color.G;
            spnColorBlue.Value      = EmpireTemplate.Color.B;
            ddlInsignia.Text        = EmpireTemplate.InsigniaName;
            ddlShipset.Text         = EmpireTemplate.ShipsetName;
            ddlAI.Text              = EmpireTemplate.AIName;
            ddlCulture.SelectedItem = EmpireTemplate.Culture;

            // race general stuff
            txtRaceName.Text                     = EmpireTemplate.PrimaryRace.Name;
            ddlRacePopulationIcon.Text           = EmpireTemplate.PrimaryRace.PopulationIconName;
            ddlRaceNativeSurface.SelectedItem    = EmpireTemplate.PrimaryRace.NativeSurface;
            ddlRaceNativeAtmosphere.SelectedItem = EmpireTemplate.PrimaryRace.NativeAtmosphere;
            ddlRaceHappiness.SelectedItem        = EmpireTemplate.PrimaryRace.HappinessModel;

            // race traits
            foreach (var trait in raceTraitPicker.Traits)
            {
                raceTraitPicker.SetTraitChecked(trait, EmpireTemplate.PrimaryRace.Traits.Contains(trait));
            }

            // race aptitudes
            foreach (var apt in Aptitude.All)
            {
                int val = 100;
                if (EmpireTemplate.PrimaryRace.Aptitudes.ContainsKey(apt.Name))
                {
                    val = EmpireTemplate.PrimaryRace.Aptitudes[apt.Name];
                }
                aptitudePicker.SetValue(apt, val);
            }

            // is AI empire?
            chkAIsCanUse.Checked = EmpireTemplate.AIsCanUse;

            BindPointsSpent();

            BindPictures();
        }
示例#2
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            SaveChanges();

            // validate
            var warnings = EmpireTemplate.GetWarnings(PointsToSpend);

            if (warnings.Any())
            {
                MessageBox.Show(warnings.First(), "FrEee");
            }
            else
            {
                DialogResult = DialogResult.OK;
                Close();
            }
        }
示例#3
0
        private void btnQuickStart_Click(object sender, EventArgs e)
        {
            var status = new Status
            {
                Progress  = 0d,
                Message   = "Initializing",
                Exception = null,
            };

            string[] warnings = new string[0];
            Thread   t        = new Thread(new ThreadStart(() =>
            {
#if RELEASE
                try
                {
#endif
                bool doOrDie = true;
                if (Mod.Current == null)
                {
                    status.Message = "Loading mod";
                    Mod.Load(null, true, status, 0.5);
                    if (Mod.Errors.Any())
                    {
                        Action a = delegate()
                        {
                            doOrDie = this.ShowChildForm(new ModErrorsForm()) == System.Windows.Forms.DialogResult.OK;
                        };
                        this.Invoke(a);
                    }
                }
                if (doOrDie)
                {
                    status.Message = "Setting up game";
                    var setup      = GameSetup.Load(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "GameSetups", "Quickstart.gsu"));
                    warnings       = setup.Warnings.ToArray();
                    if (warnings.Any())
                    {
                        MessageBox.Show(warnings.First(), "Game Setup Error");
                    }
                    else
                    {
                        var dlg = new OpenFileDialog();
                        dlg.InitialDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Empires");
                        dlg.Filter           = "Empires (*.emp)|*.emp";
                        var result           = dlg.ShowDialog();
                        if (result == DialogResult.OK)
                        {
                            // replace existing first player with selected empire
                            var et = EmpireTemplate.Load(dlg.FileName);
                            setup.EmpireTemplates.RemoveAt(0);
                            setup.EmpireTemplates.Insert(0, et);

                            // set race trait points to however many were spent
                            setup.EmpirePoints = et.PointsSpent;
                        }

                        status.Message = "Setting up galaxy";
                        Galaxy.Initialize(setup, null, status, 1.0);
                        var name       = Galaxy.Current.Name;
                        var turn       = Galaxy.Current.TurnNumber;
                        status.Message = "Loading game";
                        Galaxy.Load(name + "_" + turn + "_0001.gam");
                    }
                }
#if RELEASE
            }
                                                           catch (Exception ex)
            {
                status.Exception = ex;
            }
#endif
            }));

            t.Name = "Game Setup";
            t.SetApartmentState(ApartmentState.STA);

            this.ShowChildForm(new StatusForm(t, status));

            if (status.Exception == null && !warnings.Any())
            {
                Design.ImportFromLibrary();
                var game = new MainGameForm(false, true);
                this.ShowChildForm(game);
                game.FormClosed += (s, args) =>
                {
                    game.Dispose();
                    Show();
                };
                Hide();
            }
        }