public static MapGeneratorLayerOptions FromString(string options) { MapGeneratorLayerOptions layer = new MapGeneratorLayerOptions(); string[] optionParts = options.Split(new char[] { ',' }); foreach (string option in optionParts) { string[] keyValuePair = option.Split(new char[] { '=' }, 2); string key = keyValuePair[0]; string value = (keyValuePair.Length > 1) ? keyValuePair[1] : string.Empty; switch (key.ToLower()) { case "drawbackground": layer.DrawBackground = ParseBoolean(value, true); break; case "drawwalls": layer.DrawWalls = ParseBoolean(value, true); break; case "drawbackgroundwater": layer.DrawBackgroundWater = ParseBoolean(value, true); break; case "drawforegroundwater": layer.DrawForegroundWater = ParseBoolean(value, true); break; case "drawbackgroundtiles": layer.DrawBackgroundTiles = ParseBoolean(value, true); break; case "drawforegroundtiles": layer.DrawForegroundTiles = ParseBoolean(value, true); break; default: throw new ArgumentException("Unknown layer option: " + key, "options"); } } return layer; }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); versionLabel.Text = "Version: " + Assembly.GetEntryAssembly().GetName().Version.ToString(); zoomLevelsListView.Items[0].Tag = 2.0f; zoomLevelsListView.Items[1].Tag = 1.0f; zoomLevelsListView.Items[2].Tag = 0.5f; zoomLevelsListView.Items[3].Tag = 0.25f; zoomLevelsListView.Items[4].Tag = 0.125f; zoomLevelsListView.Items[5].Tag = 0.0625f; zoomLevelsListView.Items[6].Tag = 0.03125f; try { LoadSettings(); } catch { MapGeneratorLayerOptions defaultLayer = new MapGeneratorLayerOptions(); defaultLayer.DrawWalls = true; defaultLayer.DrawBackgroundWater = true; defaultLayer.DrawForegroundWater = true; defaultLayer.DrawBackgroundTiles = true; defaultLayer.DrawForegroundTiles = true; ListViewItem layerPropertiesListViewItem = new ListViewItem(); layerPropertiesListViewItem.Text = "1"; layerPropertiesListViewItem.SubItems.Add(defaultLayer.ToString()); layerPropertiesListViewItem.Tag = defaultLayer; layersListView.Items.Add(layerPropertiesListViewItem); } if (string.IsNullOrWhiteSpace(terrariaPathTextBox.Text)) { terrariaPathTextBox.Text = GetTerrariaInstallationPath(); } terrariaPathFolderBrowserDialog.SelectedPath = terrariaPathTextBox.Text; worldOpenFileDialog.InitialDirectory = GetWorldsPath(); outputDirectoryFolderBrowserDialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); }
private Image CreateBlockImage(World world, System.Drawing.Rectangle region, float zoomLevel, MapGeneratorLayerOptions layer) { Image blockImage = new Bitmap(16 * options.BlockSize.Width, 16 * options.BlockSize.Height, PixelFormat.Format32bppArgb); TextureSet textures = null; lock (availableTextureSetLock) { if (availableTextureSet.Count == 0) { System.Diagnostics.Trace.WriteLine("Creating new texture set for thread: " + Thread.CurrentThread.ManagedThreadId); textures = this.textures.Copy(); } else { textures = availableTextureSet.Dequeue(); } } using (Graphics g = Graphics.FromImage(blockImage)) { g.Clip = new Region(new RectangleF(0, 0, region.Width * 16 * zoomLevel, region.Height * 16 * zoomLevel)); g.ScaleTransform(zoomLevel, zoomLevel); g.PixelOffsetMode = PixelOffsetMode.Half; g.CompositingMode = CompositingMode.SourceOver; g.InterpolationMode = InterpolationMode.NearestNeighbor; g.CompositingQuality = CompositingQuality.HighSpeed; if (layer.DrawBackground) { DrawSky(world, region, g); } if (layer.DrawBackgroundWater) { DrawWater(world, region, true, g, textures); } if (layer.DrawBackground) { DrawBackground(world, region, g, textures); } if (layer.DrawWalls) { DrawWalls(world, region, g, textures); } if (layer.DrawBackgroundTiles) { DrawTiles(world, region, false, g, textures); } if (layer.DrawForegroundTiles) { DrawTiles(world, region, true, g, textures); } if (layer.DrawForegroundWater) { DrawWater(world, region, false, g, textures); } } lock (availableTextureSetLock) { availableTextureSet.Enqueue(textures); } return blockImage; }