Example #1
0
 void SetGenParams([NotNull] MapGeneratorParameters genParams)
 {
     if (genParams == null)
     {
         throw new ArgumentNullException("genParams");
     }
     genGui.SetParameters(genParams);
     genGui.OnMapDimensionChange((int)nMapWidth.Value, (int)nMapLength.Value, (int)nMapHeight.Value);
 }
Example #2
0
        void MapGenParamsFromMap(string fileName, Map ourMap)
        {
            tStatus2.Text = "";

            string oldData;

            if (ourMap.Metadata.TryGetValue("_Origin", "GeneratorParams", out oldData))
            {
                // load legacy (pre-0.640) embedded generation parameters
                // TODO: legacy templates
                MessageBox.Show(LegacyTemplateMessage);
            }
            else
            {
                // load modern (0.640+) embedded generation parameters
                try {
                    MapGeneratorParameters genParams = MapGenUtil.LoadParamsFromMap(ourMap);
                    if (genParams == null)
                    {
                        tStatus1.Text = "No generation parameters found in " + fileName;
                        MessageBox.Show(
                            "No embedded map generation parameters found in " + fileName,
                            "No generation parameters found",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Warning);
                        return;
                    }
                    SelectGenerator(genParams.Generator);
                    SetGenParams(genParams);
                    tStatus1.Text = "Imported map generation from " + fileName;
                } catch (MapGenUtil.UnknownMapGeneratorException ex) {
                    tStatus1.Text = "No matching generator found for " + fileName;
                    MessageBox.Show("Could not find a matching map generator for \"" + ex.GeneratorName + "\"",
                                    "Missing map generator",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                } catch (Exception ex) {
                    tStatus1.Text = "Error loading parameters from " + fileName;
                    MessageBox.Show(ex.GetType().Name + Environment.NewLine + ex.Message,
                                    "Error loading parameters from " + fileName,
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Warning);
                }
            }
        }
Example #3
0
        void bGenerate_Click(object sender, EventArgs e)
        {
            if (genState != null)
            {
                genState.CancelAsync();
                tStatus1.Text     = "Canceling...";
                bGenerate.Enabled = false;
                return;
            }
            Map = null;

            MapGeneratorParameters genParams = genGui.GetParameters();

            genState = genParams.CreateGenerator();

            tStatus1.Text = "Generating...";
            tStatus2.Text = "";
            if (genState.ReportsProgress)
            {
                progressBar.Style         = ProgressBarStyle.Continuous;
                genState.ProgressChanged +=
                    (progressSender, progressArgs) =>
                    bwGenerator.ReportProgress(progressArgs.ProgressPercentage, progressArgs.UserState);
            }
            else
            {
                progressBar.Style = ProgressBarStyle.Marquee;
            }
            if (genState.SupportsCancellation)
            {
                bGenerate.Text = "Cancel";
            }
            else
            {
                bGenerate.Enabled = false;
            }
            progressBar.Value   = 0;
            progressBar.Visible = true;
            Refresh();
            bwGenerator.RunWorkerAsync();
            World.MapChangedBy = WorldListEntry.WorldInfoSignature;
            World.MapChangedOn = DateTime.UtcNow;
        }
Example #4
0
 void tsbLoadPreset_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
 {
     if (e.ClickedItem == tsbLoadPresetFromFile)
     {
         BeginInvoke((Action)LoadPresetFromFile); // allow menu to close
     }
     else if (e.ClickedItem == tsbDefaultPreset)
     {
         SetGenParams(generator.CreateDefaultParameters());
         SetStatus("Default preset applied.");
         bGenerate.PerformClick();
     }
     else if (e.ClickedItem is ToolStripSeparator)
     {
         BeginInvoke((Action) delegate { tsbLoadPreset.DropDown.AutoClose = true; });
         tsbLoadPreset.DropDown.AutoClose = false;
     }
     else
     {
         try {
             string presetName = e.ClickedItem.Text;
             MapGeneratorParameters genParams = generator.CreateParameters(presetName);
             if (genParams == null)
             {
                 ShowPresetLoadError("Preset \"{0}\" was not recognized by {1} map generator.",
                                     presetName,
                                     generator.Name);
             }
             else
             {
                 SetGenParams(genParams);
                 SetStatus("Preset \"{0}\" applied.", presetName);
                 bGenerate.PerformClick();
             }
         } catch (Exception ex) {
             ShowPresetLoadError(ex.GetType().Name + Environment.NewLine + ex);
         }
     }
 }
Example #5
0
        void LoadPresetFromFile()
        {
            if (loadPresetDialog == null)
            {
                loadPresetDialog = new OpenFileDialog {
                    Filter = "fCraft MapGen Preset|*.fmgp|" +
                             "All files|*.*",
                    InitialDirectory = Paths.MapPath
                };
            }
            if (loadPresetDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            string       fullFileName       = loadPresetDialog.FileName;
            XDocument    doc                = XDocument.Load(fullFileName);
            XElement     root               = doc.Root;
            string       genName            = root.Element("Generator").Value;
            MapGenerator gen                = MapGenUtil.GetGeneratorByName(genName);
            string       versionMismatchMsg =
                String.Format("This preset was made for a different version of {0} map generator. Continue?",
                              gen.Name);

            if (gen.Version != new Version(root.Element("Version").Value) &&
                MessageBox.Show(versionMismatchMsg, "Version mismatch", MessageBoxButtons.YesNo) !=
                DialogResult.Yes)
            {
                return;
            }
            SelectGenerator(gen);
            MapGeneratorParameters genParams = gen.CreateParameters(root.Element("Parameters"));

            SetGenParams(genParams);
            SetStatus("Generation parameters loaded.");
            bGenerate.PerformClick();
        }
 public override void SetParameters(MapGeneratorParameters generatorParameters)
 {
     genParameters = (RealisticMapGenParameters)generatorParameters;
     LoadGeneratorArgs();
 }
Example #7
0
 public override void SetParameters( MapGeneratorParameters generatorParameters ) {
     genParams = generatorParameters;
     pgDetails.SelectedObject = genParams;
     lPreset.Text = "Preset: " + genParams.ToString().Split( ' ' )[1];
 }
Example #8
0
 public override void SetParameters(MapGeneratorParameters generatorParameters)
 {
     genParams = generatorParameters;
     pgDetails.SelectedObject = genParams;
     lPreset.Text             = "Preset: " + genParams.ToString().Split(' ')[1];
 }
Example #9
0
 /// <summary> Reads given generator params, and adjusts GUI to reflect them. </summary>
 /// <param name="generatorParameters"> Given generation parameters. </param>
 public virtual void SetParameters([NotNull] MapGeneratorParameters generatorParameters)
 {
     throw new NotImplementedException("SetParameters must be overriden in MapGeneratorGui implementations.");
 }
Example #10
0
 public override void SetParameters( MapGeneratorParameters generatorParameters ) {
     args = generatorParameters;
     pgGrid.SelectedObject = args;
 }
Example #11
0
 public override void SetParameters(MapGeneratorParameters generatorParameters)
 {
     args = generatorParameters;
     pgGrid.SelectedObject = args;
 }
Example #12
0
        public void GenerateMap(MapGeneratorParameters parameters)
        {
            this.parameters = parameters;
            double[,] heightmap = GenerateHeightmap(map.MapSizeX, map.MapSizeY);
            Feedback("Filling...");
            map.ClearMap();
            double minheight = double.MaxValue;
            for (int x = 0; x < map.MapSizeX; x++)
            {
                for (int y = 0; y < map.MapSizeY; y++)
                {
                    double level = heightmap[x, y];
                    int levelQuantized = (int)(level * map.MapSizeZ);
                    int waterQuantized = (int)(parameters.water * map.MapSizeZ);
                    if (levelQuantized < minheight)
                    {
                        minheight = levelQuantized;
                    }
                    if (level > parameters.water)
                    {
                        level = (level - parameters.water) * parameters.smoothingOver + parameters.water;
                        map.SetBlock(x, y, levelQuantized, data.TileIdGrass);
                        if (!parameters.hollow)
                        {
                            for (int i = levelQuantized - 1; i > 0; i--)
                            {
                                if (levelQuantized - i < 5)
                                {
                                    map.SetBlock(x, y, i, data.TileIdDirt);
                                }
                                else
                                {
                                    map.SetBlock(x, y, i, data.TileIdStone);
                                }
                            }
                        }
                    }
                    else
                    {
                        level = (level - parameters.water) * parameters.smoothingUnder + parameters.water;

                        map.SetBlock(x, y, waterQuantized, data.TileIdWater);
                        if (!parameters.hollow)
                        {
                            for (int i = waterQuantized - 1; i >= levelQuantized; i--)
                            {
                                map.SetBlock(x, y, i, data.TileIdWater);
                            }
                        }
                        map.SetBlock(x, y, levelQuantized, data.TileIdSand);
                        if (!parameters.hollow)
                        {
                            for (int i = levelQuantized - 1; i > 0; i--)
                            {
                                map.SetBlock(x, y, i, data.TileIdStone);
                            }
                        }
                    }
                }
            }
            //map.MakeFloodBarrier();
            //map.Save(filename);
            Feedback("Done.");
        }
Example #13
0
 public override void SetParameters( MapGeneratorParameters generatorParameters ) {
     genParameters = (RealisticMapGenParameters)generatorParameters;
     LoadGeneratorArgs();
 }