Beispiel #1
0
        private void WriteLevel(XmlWriter xmlWriter, Level level, Dictionary <object, int> objectIdDictionary)
        {
            xmlWriter.WriteStartElement("level");

            xmlWriter.WriteAttributeString("name", level.Name);

            xmlWriter.WriteAttributeString("id", objectIdDictionary[level].ToString());

            xmlWriter.WriteAttributeString("back-color",
                                           level.Settings.BackColor.R + "," +
                                           level.Settings.BackColor.G + "," +
                                           level.Settings.BackColor.B + "," +
                                           level.Settings.BackColor.A);

            xmlWriter.WriteAttributeString("rows",
                                           level.Settings.Rows.ToString());
            xmlWriter.WriteAttributeString("columns",
                                           level.Settings.Columns.ToString());
            xmlWriter.WriteAttributeString("width",
                                           level.Settings.CellWidth.ToString());
            xmlWriter.WriteAttributeString("height",
                                           level.Settings.CellHeight.ToString());

            xmlWriter.WriteStartElement("level-content");
            string levelContent = "";

            for (int row = 0; row < level.Settings.Rows; row++)
            {
                for (int column = 0; column < level.Settings.Columns; column++)
                {
                    ImageObject2D tile = level.Get(column, row) as ImageObject2D;
                    if (tile != null)
                    {
                        levelContent += objectIdDictionary[tile].ToString();
                    }
                    else
                    {
                        levelContent += "X";
                    }

                    if (!((row == level.Settings.Rows - 1) && (column == level.Settings.Columns - 1)))
                    {
                        levelContent += ",";
                    }
                }
            }
            xmlWriter.WriteString(levelContent);
            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndElement();
        }
Beispiel #2
0
        private void levelRenderer_Paint(object sender, PaintEventArgs e)
        {
            try
            {
                Level level = (Level)levelListBox.SelectedItem;
                if (level == null)
                {
                    return;
                }

                int cellWidth  = level.Settings.CellWidth;
                int cellHeight = level.Settings.CellHeight;

                e.Graphics.FillRectangle(new SolidBrush(level.Settings.BackColor),
                                         new Rectangle(0, 0, level.Settings.CellWidth * level.Settings.Columns, level.Settings.CellHeight * level.Settings.Rows));

                if (this.drawGrid)
                {
                    DrawGrid(e, level);
                }

                for (int row = 0; row < level.Settings.Rows; row++)
                {
                    for (int column = 0; column < level.Settings.Columns; column++)
                    {
                        ImageObject2D type = (ImageObject2D)level.Get(column, row);
                        if (type != null)
                        {
                            e.Graphics.DrawImage(((ImageObject2DType)type.ParentType).Image, new Rectangle(column * cellWidth, row * cellHeight, cellWidth, cellHeight));
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Beispiel #3
0
        private void levelRenderer_MouseMove(object sender, MouseEventArgs e)
        {
            if (!mouseStartedInRenderer)
            {
                return;
            }

            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                if (levelListBox.SelectedItem == null)
                {
                    return;
                }

                Level             activeLevel = (Level)levelListBox.SelectedItem;
                ImageObject2DType activeType  = (ImageObject2DType)objectPalette.SelectedItem;

                if (ActiveTool == Tool.Pencil)
                {
                    Point position = new Point(e.X, e.Y);
                    int   row      = position.Y / activeLevel.Settings.CellHeight;
                    int   column   = position.X / activeLevel.Settings.CellWidth;

                    if (row < 0)
                    {
                        return;
                    }
                    if (row >= activeLevel.Settings.Rows)
                    {
                        return;
                    }

                    if (column < 0)
                    {
                        return;
                    }
                    if (column >= activeLevel.Settings.Columns)
                    {
                        return;
                    }

                    ImageObject2D type = (ImageObject2D)activeLevel.Get(column, row);

                    if (type == null || type.ParentType != activeType)
                    {
                        activeLevel.Put(activeType == null ? null : activeType.GenerateNew(), column, row);
                        levelRenderer.Refresh();
                        somethingChanged = true;
                    }
                }
                if (ActiveTool == Tool.Eraser)
                {
                    Point position = new Point(e.X, e.Y);
                    int   row      = position.Y / activeLevel.Settings.CellHeight;
                    int   column   = position.X / activeLevel.Settings.CellWidth;

                    if (row < 0)
                    {
                        return;
                    }
                    if (row >= activeLevel.Settings.Rows)
                    {
                        return;
                    }

                    if (column < 0)
                    {
                        return;
                    }
                    if (column >= activeLevel.Settings.Columns)
                    {
                        return;
                    }

                    GameObject gameObject = activeLevel.Get(column, row);
                    if (gameObject != null)
                    {
                        activeLevel.Erase(column, row);
                        levelRenderer.Refresh();
                        somethingChanged = true;
                    }
                }
            }
        }
Beispiel #4
0
        private void levelRenderer_MouseDown(object sender, MouseEventArgs e)
        {
            if (levelListBox.SelectedItem == null)
            {
                return;
            }

            mouseStartedInRenderer = true;

            Level             activeLevel = (Level)levelListBox.SelectedItem;
            ImageObject2DType activeType  = (ImageObject2DType)objectPalette.SelectedItem;

            if (ActiveTool == Tool.Pencil)
            {
                Point position = new Point(e.X, e.Y);
                int   row      = position.Y / activeLevel.Settings.CellHeight;
                int   column   = position.X / activeLevel.Settings.CellWidth;

                if (row < 0)
                {
                    return;
                }
                if (row >= activeLevel.Settings.Rows)
                {
                    return;
                }

                if (column < 0)
                {
                    return;
                }
                if (column >= activeLevel.Settings.Columns)
                {
                    return;
                }

                ImageObject2D type = (ImageObject2D)activeLevel.Get(column, row);
                if (type == null || type.ParentType != activeType)
                {
                    if (type != null && !project.Types.Contains(activeType))
                    {
                        throw new Exception("type not in project");
                    }
                    activeLevel.Put(type == null ? null : activeType.GenerateNew(), column, row);
                    levelRenderer.Refresh();
                    somethingChanged = true;
                }
            }
            if (ActiveTool == Tool.Eraser)
            {
                Point position = new Point(e.X, e.Y);
                int   row      = position.Y / activeLevel.Settings.CellHeight;
                int   column   = position.X / activeLevel.Settings.CellWidth;

                if (row < 0)
                {
                    return;
                }
                if (row >= activeLevel.Settings.Rows)
                {
                    return;
                }

                if (column < 0)
                {
                    return;
                }
                if (column >= activeLevel.Settings.Columns)
                {
                    return;
                }

                ImageObject2D type = (ImageObject2D)activeLevel.Get(column, row);
                if (type != null)
                {
                    activeLevel.Erase(column, row);
                    levelRenderer.Refresh();
                    somethingChanged = true;
                }
            }
            if (ActiveTool == Tool.Bucket)
            {
                Point position = new Point(e.X, e.Y);
                int   row      = position.Y / activeLevel.Settings.CellHeight;
                int   column   = position.X / activeLevel.Settings.CellWidth;

                if (row < 0)
                {
                    return;
                }
                if (row >= activeLevel.Settings.Rows)
                {
                    return;
                }

                if (column < 0)
                {
                    return;
                }
                if (column >= activeLevel.Settings.Columns)
                {
                    return;
                }

                if (activeLevel.Get(column, row) == null || activeLevel.Get(column, row).ParentType != activeType)
                {
                    Fill(activeLevel, row, column, activeLevel.Get(column, row), activeType.GenerateNew());
                }

                levelRenderer.Refresh();

                somethingChanged = true;
            }
        }