3 {$INCLUDE ../shared/a_modes.inc}
8 LCLIntf
, LCLType
, LMessages
, Messages
, SysUtils
, Variants
, Classes
,
9 Graphics
, Controls
, Forms
, Dialogs
, StdCtrls
, ExtCtrls
;
12 TSaveMiniMapForm
= class(TForm
)
14 SaveDialog
: TSaveDialog
;
22 procedure bCloseClick(Sender
: TObject
);
23 procedure cbScaleChange(Sender
: TObject
);
24 procedure FormActivate(Sender
: TObject
);
25 procedure pbMiniMapPaint(Sender
: TObject
);
26 procedure bSaveClick(Sender
: TObject
);
29 procedure DrawMiniMap(canv
: TCanvas
);
31 { Public declarations }
35 SaveMiniMapForm
: TSaveMiniMapForm
;
40 e_graphics
, g_map
, MAPDEF
, Math
, f_main
;
44 procedure TSaveMiniMapForm
.DrawMiniMap(canv
: TCanvas
);
46 a
, w
, h
, Scale
, aX
, aY
, aX2
, aY2
: Integer;
50 if cbScale
.ItemIndex
= 0 then
55 w
:= (gMapInfo
.Width
div (16 div Scale
))+4;
56 h
:= (gMapInfo
.Height
div (16 div Scale
))+4;
58 canv
.Brush
.Color
:= $00000000;
59 canv
.FillRect(canv
.ClipRect
);
61 canv
.Pen
.Color
:= $00FFFFFF;
62 canv
.Rectangle(0, 0, w
, h
);
67 for a
:= 0 to High(gPanels
) do
69 if PanelType
<> 0 then
71 aX
:= 2+(X
div (16 div Scale
));
72 aY
:= 2+(Y
div (16 div Scale
));
74 if Width
div (16 div Scale
) = 0 then
77 aX2
:= aX
+Width
div (16 div Scale
);
79 if Height
div (16 div Scale
) = 0 then
82 aY2
:= aY
+Height
div (16 div Scale
);
85 PANEL_WALL
: c
:= _RGB(208, 208, 208);
86 PANEL_CLOSEDOOR
: c
:= _RGB(255, 255, 0);
87 PANEL_WATER
: c
:= _RGB(0, 0, 252);
88 PANEL_ACID1
: c
:= _RGB(200, 80, 4);
89 PANEL_ACID2
: c
:= _RGB(252, 140, 56);
90 PANEL_LADDER
: c
:= _RGB(128, 128, 128);
94 canv
.Brush
.Color
:= c
.R
+c
.G
*256+c
.B
*256*256;
95 canv
.FillRect(Rect(aX
, aY
, aX2
, aY2
));
99 procedure TSaveMiniMapForm
.bCloseClick(Sender
: TObject
);
104 procedure TSaveMiniMapForm
.cbScaleChange(Sender
: TObject
);
106 DrawMiniMap(pbMiniMap
.Canvas
)
109 procedure TSaveMiniMapForm
.FormActivate(Sender
: TObject
);
111 DrawMiniMap(pbMiniMap
.Canvas
);
114 procedure TSaveMiniMapForm
.pbMiniMapPaint(Sender
: TObject
);
116 DrawMiniMap(pbMiniMap
.Canvas
);
119 procedure TSaveMiniMapForm
.bSaveClick(Sender
: TObject
);
122 Scale
, w
, h
: Integer;
125 SaveDialog
.FileName
:= ChangeFileExt(ExtractFileName(gMapInfo
.FileName
), '')
126 + '_' + LowerCase(gMapInfo
.MapName
);
128 // Filter out special characters
129 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '/', '', [rfReplaceAll
]);
130 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '\', '', [rfReplaceAll
]);
131 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, ':', '', [rfReplaceAll
]);
132 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '*', '', [rfReplaceAll
]);
133 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '?', '', [rfReplaceAll
]);
134 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '"', '', [rfReplaceAll
]);
135 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '<', '', [rfReplaceAll
]);
136 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '>', '', [rfReplaceAll
]);
137 SaveDialog
.FileName
:= StringReplace(SaveDialog
.FileName
, '|', '', [rfReplaceAll
]);
139 if SaveDialog
.FileName
= '_' then
140 SaveDialog
.FileName
:= '';
142 if SaveDialog
.Execute() then
144 bmp
:= TBitmap
.Create();
146 if cbScale
.ItemIndex
= 0 then
151 w
:= (gMapInfo
.Width
div (16 div Scale
))+4;
152 h
:= (gMapInfo
.Height
div (16 div Scale
))+4;
157 DrawMiniMap(bmp
.Canvas
);
159 bmp
.SaveToFile(SaveDialog
.FileName
);
166 SaveMiniMapForm
:= TSaveMiniMapForm
.Create(Application
);