private void Import_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog fileDialog = new OpenFileDialog {
                Filter = "Nuclear craft config|nuclearcraft.cfg|Any config file|*.cfg|All Files|*.*"
            })
            {
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    var config = NuclearcraftConfigImport.ImportConfig(new FileInfo(fileDialog.FileName));
                    if (config == null || !config.HasBlock("fission"))
                    {
                        MessageBox.Show("Configuration could not be imported, check the file can be loaded by minecraft, or has come from the modpack you want to load");
                        return;
                    }

                    if (!string.IsNullOrWhiteSpace(config.LastError))
                    {
                        MessageBox.Show("We had the following errors while parsing the config file, please check that it's correct (not all values may import)");
                    }

                    Configuration.Fission.Power               = config.Get <double>("fission", "fission_power");
                    Configuration.Fission.HeatGeneration      = config.Get <double>("fission", "fission_heat_generation");
                    Configuration.Fission.FuelUse             = config.Get <double>("fission", "fission_fuel_use");
                    Configuration.Fission.MinSize             = config.Get <int>("fission", "fission_min_size");
                    Configuration.Fission.MaxSize             = config.Get <int>("fission", "fission_max_size");
                    Configuration.Fission.NeutronReach        = config.Get <int>("fission", "fission_neutron_reach");
                    Configuration.Fission.ActiveCoolerMaxRate = config.Get <int>("fission", "fission_active_cooler_max_rate");

                    SetFuelValues(config, new[] { "TBU", "TBU Oxide" }, "thorium");
                    SetFuelValues(config,
                                  new[] { "LEU-233", "LEU-233 Oxide", "HEU-233", "HEU-233 Oxide", "LEU-235", "LEU-235 Oxide", "HEU-235", "HEU-235 Oxide" },
                                  "uranium");
                    SetFuelValues(config, new[] { "LEN-236", "LEN-236 Oxide", "HEN-236", "HEN-236 Oxide" },
                                  "neptunium");
                    SetFuelValues(config, new[] { "LEP-239", "LEP-239 Oxide", "HEP-239", "HEP-239 Oxide", "LEP-241", "LEP-241 Oxide", "HEP-241", "HEP-241 Oxide" },
                                  "plutonium");
                    SetFuelValues(config, new[] { "MOX-239", "MOX-241" },
                                  "mox");
                    SetFuelValues(config, new[] { "LEA-242", "LEA-242 Oxide", "HEA-242", "HEA-242 Oxide" },
                                  "americium");
                    SetFuelValues(config, new[] { "LECm-243", "LECm-243 Oxide", "HECm-243", "HECm-243 Oxide", "LECm-245", "LECm-245 Oxide", "HECm-245", "HECm-245 Oxide", "LECm-247", "LECm-247 Oxide", "HECm-247", "HECm-247 Oxide" },
                                  "curium");
                    SetFuelValues(config, new[] { "LEB-248", "LEB-248 Oxide", "HEB-248", "HEB-248 Oxide" },
                                  "berkelium");
                    SetFuelValues(config, new[] { "LECf-249", "LECf-249 Oxide", "HECf-249", "HECf-249 Oxide", "LECf-251", "LECf-251 Oxide", "HECf-251", "HECf-251 Oxide" },
                                  "californium");

                    SetCoolingRates(config);

                    ReloadTabs();
                    Reactor.ReloadValuesFromConfig();
                    //Reactor.Update();
                    MessageBox.Show("Loaded and applied, please save as a json file");
                }
                else
                {
                    return;
                }
            }
        }
예제 #2
0
        public static bool Load(FileInfo file)
        {
            configFileInfo = file;
            ConfigFile cf;

            using (StreamReader sr = File.OpenText(file.FullName))
            {
                JsonSerializer jss = new JsonSerializer();
                try
                {
                    cf = (ConfigFile)jss.Deserialize(sr, typeof(ConfigFile));
                }
                catch (Exception ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message + "\r\nConfig file was corrupt!");
                    return(false);
                }
            }
            if ((cf.Fuels == null) | (cf.Coolers == null))
            {
                System.Windows.Forms.MessageBox.Show("Invalid config file contents!");
                return(false);
            }

            if (cf.saveVersion <= new Version(1, 2, 3))
            {
                var fuelvalue = cf.Fuels["HELP-239  Oxide"];
                cf.Fuels.Remove("HELP-239  Oxide");
                cf.Fuels.Add("HEP-239 Oxide", fuelvalue);
            }

            if (cf.saveVersion < new Version(1, 2, 22))
            {
                System.Windows.Forms.MessageBox.Show("There have been changes to cooler descriptions, that required a config reset.\r" +
                                                     "Re-import nuclearcraft.cfg and overwrite your DefaultConfig.json if necessary!");
                return(false);
            }

            Fission = cf.Fission;
            if (cf.saveVersion < new Version(1, 2, 14))
            {
                Fission.ActiveCoolerMaxRate = 5;
            }
            //ResourceCosts = cf.ResourceCosts;
            //if (ResourceCosts.CasingCosts == null)
            //    SetDefaultResourceCosts();
            Fuels   = cf.Fuels;
            Coolers = cf.Coolers;
            Reactor.ReloadValuesFromConfig();
            return(true);
        }
 private bool ApplyAndReload()
 {
     try
     {
         ApplyConfiguration();
         ReloadTabs();
         Reactor.ReloadValuesFromConfig();
         Reactor.UI.fuelSelector_SelectedIndexChanged(null, null);
         Reactor.UpdateStats();
         return(true);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\r\nCould not apply configuration, resetting to defaults!");
         Configuration.ResetToDefaults();
         ReloadTabs();
         Reactor.ReloadValuesFromConfig();
         Reactor.UI.fuelSelector_SelectedIndexChanged(null, null);
         Reactor.UpdateStats();
         return(false);
     }
 }
        //private void ReloadResourceCostTab()
        //{
        //    blockSelector.Items.Add(new ResourceCostComboboxItem("Fuel cell", Configuration.ResourceCosts.FuelCellCosts));
        //    blockSelector.Items.Add(new ResourceCostComboboxItem("Casing", Configuration.ResourceCosts.CasingCosts));

        //    foreach (KeyValuePair<string, Dictionary<string, int>> kvp in Configuration.ResourceCosts.HeatSinkCosts)
        //    {
        //        blockSelector.Items.Add(new ResourceCostComboboxItem(kvp.Key + " HeatSink", kvp.Value));
        //    }

        //    foreach (KeyValuePair<string, Dictionary<string, int>> kvp in Configuration.ResourceCosts.ModeratorCosts)
        //    {
        //        blockSelector.Items.Add(new ResourceCostComboboxItem(kvp.Key + " Moderator", kvp.Value));
        //    }

        //}

        //private void SelectedBlockChanged(object sender, EventArgs e)
        //{
        //    if (rDC != null)
        //    {
        //        foreach (KeyValuePair<string, List<Control>> kvp in rDC)
        //            foreach (Control c in kvp.Value)
        //            {
        //                c.Dispose();
        //                resourceCostsPage.Controls.Remove(c);
        //            }
        //    }
        //    rDC = new Dictionary<string, List<Control>>();

        //    int row = 1;
        //    foreach(KeyValuePair<string, int> resource in ((ResourceCostComboboxItem)blockSelector.SelectedItem).Resources)
        //    {
        //        rDC[resource.Key] = new List<Control>();
        //        rDC[resource.Key].Add(new TextBox { Text = resource.Key, Location = new Point(10, row * 30) });
        //        rDC[resource.Key].Add(new NumericUpDown { Value = resource.Value, Location = new Point(130, row * 30) });
        //        row++;
        //        //rDC.Add(new Button { Text = resource.Key, Location = new Point(10, row++ * 20) });
        //        resourceCostsPage.Controls.AddRange(rDC[resource.Key].ToArray());
        //    }


        //}

        private void Load_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog fileDialog = new OpenFileDialog {
                Filter = "JSON config files(*.json)|*.json"
            })
            {
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    if (Configuration.Load(new FileInfo(fileDialog.FileName)))
                    {
                        ReloadTabs();
                        Reactor.ReloadValuesFromConfig();
                        Reactor.UpdateStats();
                        Reactor.UI.fuelSelector_SelectedIndexChanged(null, null);
                        MessageBox.Show("Loaded and applied!");
                        Close();
                    }
                }
                else
                {
                    return;
                }
            }
        }