Esempio n. 1
0
        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();
                        }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
        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;
                        }
        }
Esempio n. 5
0
        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;
        }