private void buttonImportTileSet_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); if (DialogResult.OK == dlg.ShowDialog()) { TabPage tileSetTab = new TabPage("Tile Set " + tabControlTileSets.TabCount); panelTileSet.Parent = tileSetTab; tabControlTileSets.Controls.Add(tileSetTab); tileSets.Add(TM.LoadTexture(dlg.FileName, 0)); TabProperties t = new TabProperties(); t.Dimensions = new Size(64, 64); t.Tiles = new Point( TM.GetTextureWidth(tileSets[tabControlTileSets.TabCount - 1]) / 64, TM.GetTextureHeight(tileSets[tabControlTileSets.TabCount - 1]) / 64); t.Offset = new Point(0, 0); t.Spacing = new Size(0, 0); t.FileName = dlg.SafeFileName; t.FilePath = dlg.FileName; tabs.Add(t); tabControlTileSets.SelectedIndex = tabControlTileSets.TabCount - 1; CalculateScrollBarTileSet(); } }
public MainWindow() { InitializeComponent(); d3d.InitManagedDirect3D(panelWorldMap); d3d.InitManagedDirect3D(panelTileSet); TM.InitManagedTextureManager(d3d.Device, d3d.Sprite); comboBoxActivatedBy.SelectedIndex = 0; comboBoxTriggerType.SelectedIndex = 0; comboBoxSpawnerType.SelectedIndex = 0; comboBoxTriggerSpawnerType.SelectedIndex = 0; comboBoxSpawnerArea.SelectedIndex = 0; Show(); for (; ; ) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Image|*.bmp;*.jpg;*.png"; if (DialogResult.OK == dlg.ShowDialog()) { tileSets.Add(TM.LoadTexture(dlg.FileName, 0)); CalculateScrollBarTileSet(); numericTileWidth.Value = 64; numericTileHeight.Value = 64; numericTileCols.Value = TM.GetTextureWidth(tileSets[0]) / 64; numericTileRows.Value = TM.GetTextureHeight(tileSets[0]) / 64; numericTileOffsetX.Value = 0; numericTileOffsetY.Value = 0; numericTileSpacingWidth.Value = 0; numericTileSpacingHeight.Value = 0; TabProperties t = new TabProperties(); t.Dimensions = new Size((int)numericTileWidth.Value, (int)numericTileHeight.Value); t.Tiles = new Point((int)numericTileCols.Value, (int)numericTileRows.Value); t.Offset = new Point((int)numericTileOffsetX.Value, (int)numericTileOffsetY.Value); t.Spacing = new Size((int)numericTileSpacingWidth.Value, (int)numericTileSpacingHeight.Value); t.FileName = dlg.SafeFileName; t.FilePath = dlg.FileName; tabs.Add(t); break; } } for(;;) { FolderBrowserDialog dg = new FolderBrowserDialog(); dg.Description = "Select Graphics Folder"; dg.SelectedPath = Directory.GetCurrentDirectory(); if (DialogResult.OK == dg.ShowDialog()) { defaultGraphicsPath = dg.SelectedPath; break; } } for (; ; ) { FolderBrowserDialog dg = new FolderBrowserDialog(); dg.Description = "Select Sounds Folder"; dg.SelectedPath = Directory.GetCurrentDirectory(); if (DialogResult.OK == dg.ShowDialog()) { defaulSoundsPath = dg.SelectedPath; break; } } srcMapRect.X = 0; srcMapRect.Y = 0; CalculateScrollBarMap(); int numTiles = (int)numericMapCols.Value * (int)numericMapRows.Value; layerBackground = new Tile[(int)numericMapCols.Value, (int)numericMapRows.Value]; layerCollsion = new Tile[(int)numericMapCols.Value, (int)numericMapRows.Value]; layerForeground = new Tile[(int)numericMapCols.Value, (int)numericMapRows.Value]; ResizeLayers(); }
private void UpdateCurrentTab() { TabProperties tempT = new TabProperties(); tempT.Dimensions = new Size((int)numericTileWidth.Value, (int)numericTileHeight.Value); tempT.Tiles = new Point((int)numericTileCols.Value, (int)numericTileRows.Value); tempT.Offset = new Point((int)numericTileOffsetX.Value, (int)numericTileOffsetY.Value); tempT.Spacing = new Size((int)numericTileSpacingWidth.Value, (int)numericTileSpacingHeight.Value); tempT.FileName = tabs[selectedTileSet].FileName; tempT.FilePath = tabs[selectedTileSet].FilePath; tabs[selectedTileSet] = tempT; }
private void xMLToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "XML|*.xml"; if (DialogResult.OK == dlg.ShowDialog()) { ResetForm(false); List<List<Rectangle>> srcRects = new List<List<Rectangle>>(); XmlDocument doc = new XmlDocument(); doc.Load(dlg.FileName); XmlElement root = (XmlElement)doc.LastChild; XmlElement general = (XmlElement)root.FirstChild; numericMapWidth.Value = int.Parse(general.Attributes["mapWidth"].Value); numericMapHeight.Value = int.Parse(general.Attributes["mapHeight"].Value); numericMapCols.Value = int.Parse(general.Attributes["numCols"].Value); numericMapRows.Value = int.Parse(general.Attributes["numRows"].Value); XmlElement tileSet = (XmlElement)general.FirstChild; int i = 0; selectedTileSet = 0; while (tileSet != null) { srcRects.Add(new List<Rectangle>()); //tile.InnerText; TabPage tileSetTab = new TabPage("default"); if (i != 0) tileSetTab.Text = "Tile Set " + tabControlTileSets.TabCount; tabControlTileSets.Controls.Add(tileSetTab); tileSets.Add(TM.LoadTexture(defaultGraphicsPath + "\\" + tileSet.InnerText, 0)); int rows = 1; int cols = 0; int oldY = -1; XmlElement rect = (XmlElement)tileSet["rect"]; while (rect != null) { Rectangle r = new Rectangle(); r.X = int.Parse(rect.Attributes["x"].Value); r.Y = int.Parse(rect.Attributes["y"].Value); r.Width = int.Parse(rect.Attributes["width"].Value); r.Height = int.Parse(rect.Attributes["height"].Value); srcRects[i].Add(r); if(r.Y != oldY && oldY != -1) { oldY = r.Y; rows++; cols = 0; } else oldY = r.Y; cols++; rect = (XmlElement)rect.NextSibling; } TabProperties tab = new TabProperties(); int total = srcRects[i].Count; tab.Dimensions = new Size(srcRects[i][0].Width, srcRects[i][0].Height); tab.Tiles = new Point(cols, rows); tab.Offset = new Point(srcRects[i][0].X, srcRects[i][0].Y); tab.Spacing = new Size(); if (rows > 1) { tab.Spacing = new Size(tab.Spacing.Width, srcRects[i][cols].Y - srcRects[i][0].Height - srcRects[i][0].Y); } if(cols > 1) { tab.Spacing = new Size(srcRects[i][1].X - srcRects[i][0].Width - srcRects[i][0].X, tab.Spacing.Height); } tab.FileName = tileSet.InnerText; tabs.Add(tab); numericTileCols.Value = cols; numericTileRows.Value = rows; numericTileHeight.Value = tab.Dimensions.Height; numericTileWidth.Value = tab.Dimensions.Width; numericTileSpacingWidth.Value = tab.Spacing.Width; numericTileSpacingHeight.Value = tab.Spacing.Height; numericTileOffsetX.Value = tab.Offset.X; numericTileOffsetY.Value = tab.Offset.Y; selectedTileSet = i; UpdateCurrentTab(); tileSet = (XmlElement)tileSet.NextSibling; i++; } List<List<int>> triggerSpawners = new List<List<int>>(); XmlElement trigger = (XmlElement)general.NextSibling; int j = 0; while (trigger.Name == "trigger") { triggerSpawners.Add(new List<int>()); Trigger t = new Trigger(); t.Activator = (ActivatedBy)int.Parse(trigger.Attributes["activated_by"].Value); t.Position = new Point(int.Parse(trigger.Attributes["x"].Value), int.Parse(trigger.Attributes["y"].Value)); t.Range = int.Parse(trigger.Attributes["radius"].Value); t.Type = (TriggerType)int.Parse(trigger.Attributes["trigger_type"].Value); if (trigger.InnerText != null) t.SoundName = trigger.InnerText; else t.SoundName = ""; switch (t.Type) { case TriggerType.Trigger_Tile: XmlElement triggerTile = (XmlElement)trigger["tile"]; t.TriggerTile = new List<Point>(); while(triggerTile != null) { t.TriggerTile.Add(new Point(int.Parse(triggerTile.Attributes["x"].Value), int.Parse(triggerTile.Attributes["y"].Value))); triggerTile = (XmlElement)triggerTile.NextSibling; } break; case TriggerType.Trigger_Quest: t.QuestType = (Quest)int.Parse(trigger.Attributes["quest"].Value); break; case TriggerType.Trigger_Spawn: XmlElement triggerSpawner = (XmlElement)trigger["spawner"]; while (triggerSpawner != null) { triggerSpawners[j].Add(int.Parse(triggerSpawner.Attributes["spawner_index"].Value)); triggerSpawner = (XmlElement)triggerSpawner.NextSibling; } break; default: break; } listBoxTriggers.Items.Add(t); trigger = (XmlElement)trigger.NextSibling; j++; } List<Spawner> spawners = new List<Spawner>(); XmlElement spawner = trigger; while (spawner.Name == "spawner") { Spawner s = new Spawner(); s.ActivatedByTrigger = int.Parse(spawner.Attributes["trigger_activated"].Value) == 0 ? false : true ; s.Position = new Point(int.Parse(spawner.Attributes["x"].Value), int.Parse(spawner.Attributes["y"].Value)); s.Type = (SpawnerType)int.Parse(spawner.Attributes["spawner_type"].Value); s.AreaType = (SpawnerArea)int.Parse(spawner.Attributes["area_spawn_type"].Value); if (s.AreaType == SpawnerArea.Spawner_Group) { s.Radius = int.Parse(spawner.Attributes["radius"].Value); s.Amount = int.Parse(spawner.Attributes["amount"].Value); } spawners.Add(s); spawner = (XmlElement)spawner.NextSibling; } ResizeLayers(); XmlElement layer = spawner; int currLayer = 0; int layerbacksize = 0; int layercollsize = 0; int layerforesize = 0; while (layer.Name == "layer") { XmlElement tile = (XmlElement)layer["tile"]; while (tile != null) { Tile t = new Tile(); t.SelectedTab = int.Parse(tile.Attributes["image_id"].Value); t.ImageIndex = int.Parse(tile.Attributes["image_index"].Value); t.SrcRect = srcRects[t.SelectedTab][t.ImageIndex]; int temp = int.Parse(tile.Attributes["position_index"].Value); t.MapIndexX = temp % (int)numericMapCols.Value; t.MapIndexY = temp / (int)numericMapCols.Value; switch (currLayer) { case 0: layerBackground[t.MapIndexX, t.MapIndexY] = t; layerbacksize++; break; case 1: layerCollsion[t.MapIndexX, t.MapIndexY] = t; layercollsize++; break; case 2: layerForeground[t.MapIndexX, t.MapIndexY] = t; layerforesize++; break; } tile = (XmlElement)tile.NextSibling; } currLayer++; layer = (XmlElement)layer.NextSibling; if (layer == null) break; } for (int k = 0; k < triggerSpawners.Count; k++) { Trigger tt = (Trigger)listBoxTriggers.Items[k]; tt.TriggerSpawners = new List<Spawner>(); for (int g = 0; g < triggerSpawners[k].Count; g++) { tt.TriggerSpawners.Add(spawners[triggerSpawners[k][g]]); } listBoxTriggers.Items[k] = tt; } for (int k = 0; k < spawners.Count; k++) { if (!spawners[k].ActivatedByTrigger) listBoxSpawners.Items.Add(spawners[k]); } tabControlSettings.SelectedIndex = 0; panelTileSet.Parent = tabControlTileSets.SelectedTab; } }
private void ResetForm(bool _loadImage) { mapCols = 10; mapRows = 10; layerBackground = new Tile[10, 10]; layerCollsion = new Tile[10, 10]; layerForeground = new Tile[10, 10]; numericMapCols.Value = 10; numericMapRows.Value = 10; numericMapWidth.Value = 64; numericMapHeight.Value = 64; CalculateScrollBarMap(); tileSets.Clear(); tabControlTileSets.Controls.Clear(); tabs.Clear(); if (_loadImage) { for (; ; ) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "Image|*.bmp;*.jpg;*.png"; if (DialogResult.OK == dlg.ShowDialog()) { TabPage tileSetTab = new TabPage("default"); panelTileSet.Parent = tileSetTab; tabControlTileSets.Controls.Add(tileSetTab); tileSets.Add(TM.LoadTexture(dlg.FileName, 0)); CalculateScrollBarTileSet(); numericTileWidth.Value = 64; numericTileHeight.Value = 64; numericTileCols.Value = TM.GetTextureWidth(tileSets[0]) / 64; numericTileRows.Value = TM.GetTextureHeight(tileSets[0]) / 64; numericTileOffsetX.Value = 0; numericTileOffsetY.Value = 0; numericTileSpacingWidth.Value = 0; numericTileSpacingHeight.Value = 0; TabProperties t = new TabProperties(); t.Dimensions = new Size((int)numericTileWidth.Value, (int)numericTileHeight.Value); t.Tiles = new Point((int)numericTileCols.Value, (int)numericTileRows.Value); t.Offset = new Point((int)numericTileOffsetX.Value, (int)numericTileOffsetY.Value); t.Spacing = new Size((int)numericTileSpacingWidth.Value, (int)numericTileSpacingHeight.Value); t.FileName = dlg.SafeFileName; t.FilePath = dlg.FileName; tabs.Add(t); break; } } for (; ; ) { FolderBrowserDialog dg = new FolderBrowserDialog(); dg.Description = "Select Graphics Folder"; dg.SelectedPath = Directory.GetCurrentDirectory(); if (DialogResult.OK == dg.ShowDialog()) { defaultGraphicsPath = dg.SelectedPath; break; } } for (; ; ) { FolderBrowserDialog dg = new FolderBrowserDialog(); dg.Description = "Select Sounds Folder"; dg.SelectedPath = Directory.GetCurrentDirectory(); if (DialogResult.OK == dg.ShowDialog()) { defaulSoundsPath = dg.SelectedPath; break; } } } listBoxSpawners.Items.Clear(); selectedSpawner = -1; listBoxTriggers.Items.Clear(); selectedTrigger = -1; listBoxTriggerSpawners.Items.Clear(); selectedTriggerSpawner = -1; listBoxTriggerTiles.Items.Clear(); selectedTriggerTile = -1; tabControlSettings.SelectedIndex = 0; tabControlTileSets.SelectedIndex = 0; brushIndex = new Rectangle(0, 0, 1, 1); mouseDown = false; pointerXIndex = -1; pointerYIndex = -1; selectedLayer = 0; backgroundToolStripMenuItem.Checked = true; collisionToolStripMenuItem.Checked = false; foregroundToolStripMenuItem.Checked = false; gridLinesShowing = true; checkBoxGridLines.Checked = true; selectedTileSet = 0; selectTile = false; selectSpawnPoint = false; numericSpawnerXPos.Value = 0; numericSpawnerYPos.Value = 0; comboBoxSpawnerType.SelectedIndex = 0; numericTriggerRadius.Value = 5; numericTriggerSpawnXPos.Value = 0; numericTriggerSpawnYPos.Value = 0; numericTriggerTileXPos.Value = 0; numericTriggerTileYPos.Value = 0; numericTriggerXPos.Value = 0; numericTriggerYPos.Value = 0; comboBoxTriggerQuestType.SelectedIndex = 0; comboBoxActivatedBy.SelectedIndex = 0; comboBoxTriggerSpawnerType.SelectedIndex = 0; comboBoxTriggerType.SelectedIndex = 0; }