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(); }
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) { } }
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; } } } }
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; } }