protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; ColorMatrix cm = new ColorMatrix(); ImageAttributes ia = new ImageAttributes(); cm.Matrix33 = 0.50f; cm.Matrix22 = 2f; ia.SetColorMatrix(cm); g.CompositingMode = CompositingMode.SourceCopy; g.CompositingQuality = CompositingQuality.HighSpeed; g.InterpolationMode = InterpolationMode.NearestNeighbor; if (initialized) { if (lowEndMode) { int x = ow.allmaps[selectedMap].parent % 8; int y = ow.allmaps[selectedMap].parent / 8; if (ow.allmaps[ow.allmaps[selectedMap].parent].largeMap) { g.FillRectangle(new SolidBrush(Palettes.overworld_GrassPalettes[0]), new RectangleF(x * 512, y * 512, 1024, 1024)); g.DrawImage(ow.allmaps[ow.allmaps[selectedMap].parent].gfxBitmap, new PointF(x * 512, y * 512)); g.DrawImage(ow.allmaps[ow.allmaps[selectedMap].parent + 1].gfxBitmap, new PointF((x + 1) * 512, y * 512)); g.DrawImage(ow.allmaps[ow.allmaps[selectedMap].parent + 8].gfxBitmap, new PointF((x) * 512, (y + 1) * 512)); g.DrawImage(ow.allmaps[ow.allmaps[selectedMap].parent + 9].gfxBitmap, new PointF((x + 1) * 512, (y + 1) * 512)); } else { g.FillRectangle(new SolidBrush(Palettes.overworld_GrassPalettes[0]), new RectangleF(x * 512, y * 512, 512, 512)); g.DrawImage(ow.allmaps[ow.allmaps[selectedMap].parent].gfxBitmap, new PointF(x * 512, y * 512)); } } else { if (ow.worldOffset == 64) { g.Clear(Palettes.overworld_GrassPalettes[1]); } else { g.Clear(Palettes.overworld_GrassPalettes[0]); } int x = 0; int y = 0; for (int i = (0 + ow.worldOffset); i < 64 + (ow.worldOffset); i++) { if (i <= 159) { if (mainForm.overworldOverlayVisibleToolStripMenuItem.Checked) { if (i == 0x03) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[149].gfxBitmap, new PointF(x * 512, y * 512)); } else if (i == 0x04) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[149].gfxBitmap, new PointF(x * 512, y * 512)); } else if (i == 0x05) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[149].gfxBitmap, new PointF(x * 512, y * 512)); } else if (i == 0x06) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[149].gfxBitmap, new PointF(x * 512, y * 512)); } else if (i == 0x07) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[149].gfxBitmap, new PointF(x * 512, y * 512)); } else if (i == 91) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[150].gfxBitmap, new PointF(x * 512, y * 512)); } else if (i == 92) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[150].gfxBitmap, new PointF(x * 512, y * 512)); } } g.DrawImage(ow.allmaps[i].gfxBitmap, new PointF(x * 512, y * 512)); if (mainForm.overworldOverlayVisibleToolStripMenuItem.Checked) { if (i == 0) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[157].gfxBitmap, new Rectangle(x * 512, y * 512, 512, 512), 0, 0, 512, 512, GraphicsUnit.Pixel, ia); } else if (i == 1) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[157].gfxBitmap, new Rectangle(x * 512, y * 512, 512, 512), 0, 0, 512, 512, GraphicsUnit.Pixel, ia); } else if (i == 8) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[157].gfxBitmap, new Rectangle(x * 512, y * 512, 512, 512), 0, 0, 512, 512, GraphicsUnit.Pixel, ia); } else if (i == 9) { g.CompositingMode = CompositingMode.SourceOver; g.DrawImage(ow.allmaps[157].gfxBitmap, new Rectangle(x * 512, y * 512, 512, 512), 0, 0, 512, 512, GraphicsUnit.Pixel, ia); } } x++; if (x >= 8) { x = 0; y++; } } } } g.CompositingMode = CompositingMode.SourceOver; if (selecting) { g.DrawRectangle(Pens.White, new Rectangle((globalmouseTileDownX * 16), (globalmouseTileDownY * 16), (((mouseX_Real / 16) - globalmouseTileDownX) * 16) + 16, (((mouseY_Real / 16) - globalmouseTileDownY) * 16) + 16)); } if (selectedMode == ObjectMode.OWDoor || selectedMode == ObjectMode.Tile) { g.DrawImage(tilesgfxBitmap, new Rectangle((mouseX_Real / 16) * 16, (mouseY_Real / 16) * 16, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16), 0, 0, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16, GraphicsUnit.Pixel, ia); g.DrawRectangle(Pens.LightGreen, new Rectangle((mouseX_Real / 16) * 16, (mouseY_Real / 16) * 16, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16)); } int my = (ow.allmaps[mapHover].parent / 8); int mx = ow.allmaps[mapHover].parent - (my * 8); if (ow.allmaps[mapHover].largeMap) { g.DrawRectangle(Pens.Orange, new Rectangle(mx * 512, my * 512, 1024, 1024)); } else { g.DrawRectangle(Pens.Orange, new Rectangle(mx * 512, my * 512, 512, 512)); } if (showExits) { exitmode.Draw(g); } if (showEntrances) { entranceMode.Draw(g); } if (showItems) { itemMode.Draw(g); } gravestoneMode.Draw(g); if (showSprites) { spriteMode.Draw(g); } if (showFlute) { transportMode.Draw(g); } if (entrancePreview) { if (entranceMode.selectedEntrance != null) { g.DrawImage(owForm.tmpPreviewBitmap, entranceMode.selectedEntrance.x + 16, entranceMode.selectedEntrance.y + 16); } } if (entrancePreview) { if (exitmode.selectedExit != null) { g.DrawImage(owForm.tmpPreviewBitmap, exitmode.selectedExit.playerX + 16, exitmode.selectedExit.playerY + 16); } } if (selectedMode == ObjectMode.Overlay) { int mid = ow.allmaps[selectedMap].parent; int msy = ((ow.allmaps[selectedMap].parent - ow.worldOffset) / 8); int msx = (ow.allmaps[selectedMap].parent - ow.worldOffset) - (my * 8); drawText(g, 0 + 4, 0 + 64, "Selected Map : " + selectedMap.ToString()); drawText(g, 0 + 4, 0 + 80, "Selected Map PARENT : " + ow.allmaps[selectedMap].parent.ToString()); drawText(g, (msx * 512) + 4, (msy * 512) + 4, "use ctrl key + click to delete overlay tiles"); for (int i = 0; i < ow.alloverlays[mid].tilesData.Count; i++) { int xo = ow.alloverlays[mid].tilesData[i].x * 16; int yo = ow.alloverlays[mid].tilesData[i].y * 16; int to = ow.alloverlays[mid].tilesData[i].tileId; int toy = (to / 8) * 16; int tox = (to % 8) * 16; g.DrawImage(GFX.mapblockset16Bitmap, new Rectangle((msx * 512) + xo, (msy * 512) + yo, 16, 16), new Rectangle(tox, toy, 16, 16), GraphicsUnit.Pixel); //g.DrawImage(GFX.currentOWgfx16Bitmap, new Rectangle(0, 0, 64, 64), new Rectangle(0, 0, 64, 64), GraphicsUnit.Pixel); byte detect = compareTilePos(ow.alloverlays[mid].tilesData[i], ow.alloverlays[mid].tilesData.ToArray()); if (detect == 0) { g.DrawRectangle(Pens.White, new Rectangle((msx * 512) + xo, (msy * 512) + yo, (msx * 512) + 16, (msy * 512) + 16)); } if ((detect & 0x01) != 0x01) { g.DrawLine(Pens.White, (msx * 512) + xo, (msy * 512) + yo, (msx * 512) + xo, (msy * 512) + yo + 16); } if ((detect & 0x02) != 0x02) { g.DrawLine(Pens.White, (msx * 512) + xo, (msy * 512) + yo, (msx * 512) + xo + 16, (msy * 512) + yo); } if ((detect & 0x04) != 0x04) { g.DrawLine(Pens.White, (msx * 512) + xo + 16, (msy * 512) + yo, (msx * 512) + xo + 16, (msy * 512) + yo + 16); } if ((detect & 0x08) != 0x08) { g.DrawLine(Pens.White, (msx * 512) + xo, (msy * 512) + yo + 16, (msx * 512) + xo + 16, (msy * 512) + yo + 16); } } g.DrawImage(tilesgfxBitmap, new Rectangle((mouseX_Real / 16) * 16, (mouseY_Real / 16) * 16, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16), 0, 0, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16, GraphicsUnit.Pixel, ia); g.DrawRectangle(Pens.LightGreen, new Rectangle((mouseX_Real / 16) * 16, (mouseY_Real / 16) * 16, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16)); drawText(g, 4, 24, globalmouseTileDownX.ToString()); drawText(g, 4, 48, globalmouseTileDownY.ToString()); } if (owForm.gridDisplay != 0) { int gridsize = 512; if (ow.allmaps[ow.allmaps[selectedMap].parent].largeMap) { gridsize = 1024; } int x = ow.allmaps[selectedMap].parent % 8; int y = ow.allmaps[selectedMap].parent / 8; for (int gx = 0; gx < (gridsize / owForm.gridDisplay); gx++) { g.DrawLine(new Pen(Color.FromArgb(100, 255, 255, 255), 1), new Point((x * 512) + gx * owForm.gridDisplay, y * 512), new Point((x * 512) + gx * owForm.gridDisplay, (y * 512) + gridsize)); } for (int gy = 0; gy < (gridsize / owForm.gridDisplay); gy++) { g.DrawLine(new Pen(Color.FromArgb(100, 255, 255, 255), 1), new Point((x * 512), (y * 512) + (gy * owForm.gridDisplay)), new Point((x * 512) + gridsize, (y * 512) + (gy * owForm.gridDisplay))); } } g.CompositingMode = CompositingMode.SourceCopy; //hideText = false; } }
protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; ColorMatrix cm = new ColorMatrix(); ImageAttributes ia = new ImageAttributes(); cm.Matrix33 = 0.50f; cm.Matrix22 = 2f; ia.SetColorMatrix(cm); g.CompositingMode = CompositingMode.SourceCopy; g.CompositingQuality = CompositingQuality.HighSpeed; g.InterpolationMode = InterpolationMode.NearestNeighbor; //g.FillRectangle(Brushes.Green, new Rectangle(0, 0, 4096, 4096)); /* * for (int x = 0; x < 128; x++) * { * drawText(g, x * 32, 0, ow.map16tiles[x].tile0.ToString()); * }*/ if (initialized) { int x = 0; int y = 0; for (int i = (0 + ow.worldOffset); i < 64 + (ow.worldOffset); i++) { g.DrawImage(ow.allmaps[i].gfxBitmap, new PointF(x * 512, y * 512)); x++; if (x >= 8) { x = 0; y++; } } g.CompositingMode = CompositingMode.SourceOver; /*for (int yP = 0; yP < 32; yP+=2) * { * for (int xP = 0; xP < 32; xP+=2) * { * drawText(g, xP * 16, yP * 16, ow.tiles16[ow.allmapsTilesLW[xP, yP]].tile0.id.ToString(), ia); * drawText(g, (xP * 16)+8, (yP * 16), ow.tiles16[ow.allmapsTilesLW[xP+1, yP]].tile1.id.ToString(), ia); * drawText(g, (xP * 16), (yP * 16)+8, ow.tiles16[ow.allmapsTilesLW[xP, yP+1]].tile2.id.ToString(), ia); * drawText(g, (xP * 16)+8, (yP * 16)+8, ow.tiles16[ow.allmapsTilesLW[xP+1, yP+1]].tile3.id.ToString(), ia); * } * }*/ //g.DrawImage(ow.allmaps[136].gfxBitmap, new PointF(0, 0)); /*for (int i = 0; i < 64; i++) * { * foreach (Sprite spr in ow.allmaps[i].sprites) * { * int yy = spr.mapid / 8; * int xx = spr.mapid - (yy * 8); * drawText(g, (spr.x * 16) + (xx * 512), ((spr.y * 16) - 16) + (yy * 512), spr.name); * } * }*/ if (selecting) { g.DrawRectangle(Pens.White, new Rectangle((globalmouseTileDownX * 16), (globalmouseTileDownY * 16), (((mouseX_Real / 16) - globalmouseTileDownX) * 16) + 16, (((mouseY_Real / 16) - globalmouseTileDownY) * 16) + 16)); } if (selectedMode == ObjectMode.OWDoor || selectedMode == ObjectMode.Tile) { g.DrawImage(tilesgfxBitmap, new Rectangle((mouseX_Real / 16) * 16, (mouseY_Real / 16) * 16, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16), 0, 0, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16, GraphicsUnit.Pixel, ia); g.DrawRectangle(Pens.LightGreen, new Rectangle((mouseX_Real / 16) * 16, (mouseY_Real / 16) * 16, selectedTileSizeX * 16, (selectedTile.Length / selectedTileSizeX) * 16)); } int my = (ow.allmaps[mapHover].parent / 8); int mx = ow.allmaps[mapHover].parent - (my * 8); if (ow.allmaps[mapHover].largeMap) { g.DrawRectangle(Pens.Orange, new Rectangle(mx * 512, my * 512, 1024, 1024)); } else { g.DrawRectangle(Pens.Orange, new Rectangle(mx * 512, my * 512, 512, 512)); } if (showExits) { exitmode.Draw(g); } if (showEntrances) { entranceMode.Draw(g); } if (showItems) { itemMode.Draw(g); } g.CompositingMode = CompositingMode.SourceOver; if (showSprites) { if (!hideText) { spriteMode.Draw(g); } } if (showFlute) { transportMode.Draw(g); } g.CompositingMode = CompositingMode.SourceCopy; hideText = false; } }