lang: ru: fix translation Enable Monsters -> Включить монстров
[d2df-editor.git] / src / editor / f_saveminimap.pas
blob211a877282129cf138781b4577d9648780bf2f12
1 unit f_saveminimap;
3 {$INCLUDE ../shared/a_modes.inc}
5 interface
7 uses
8 LCLIntf, LCLType, LMessages, Messages, SysUtils, Variants, Classes,
9 Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
11 type
12 TSaveMiniMapForm = class(TForm)
13 var
14 SaveDialog: TSaveDialog;
15 pbMiniMap: TPaintBox;
16 Panel1: TPanel;
17 LabelScale: TLabel;
18 cbScale: TComboBox;
19 bSave: TButton;
20 bClose: TButton;
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);
28 private
29 procedure DrawMiniMap(canv: TCanvas);
30 public
31 { Public declarations }
32 end;
34 var
35 SaveMiniMapForm: TSaveMiniMapForm;
37 implementation
39 uses
40 e_graphics, g_map, MAPDEF, Math, f_main;
42 {$R *.lfm}
44 procedure TSaveMiniMapForm.DrawMiniMap(canv: TCanvas);
45 var
46 a, w, h, Scale, aX, aY, aX2, aY2: Integer;
47 c: TRGB;
49 begin
50 if cbScale.ItemIndex = 0 then
51 Scale := 1
52 else
53 Scale := 2;
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);
64 if gPanels = nil then
65 Exit;
67 for a := 0 to High(gPanels) do
68 with gPanels[a] do
69 if PanelType <> 0 then
70 begin
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
75 aX2 := aX+1
76 else
77 aX2 := aX+Width div (16 div Scale);
79 if Height div (16 div Scale) = 0 then
80 aY2 := aY+1
81 else
82 aY2 := aY+Height div (16 div Scale);
84 case PanelType of
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);
91 else Continue;
92 end;
94 canv.Brush.Color := c.R+c.G*256+c.B*256*256;
95 canv.FillRect(Rect(aX, aY, aX2, aY2));
96 end;
97 end;
99 procedure TSaveMiniMapForm.bCloseClick(Sender: TObject);
100 begin
101 Close();
102 end;
104 procedure TSaveMiniMapForm.cbScaleChange(Sender: TObject);
105 begin
106 DrawMiniMap(pbMiniMap.Canvas)
107 end;
109 procedure TSaveMiniMapForm.FormActivate(Sender: TObject);
110 begin
111 DrawMiniMap(pbMiniMap.Canvas);
112 end;
114 procedure TSaveMiniMapForm.pbMiniMapPaint(Sender: TObject);
115 begin
116 DrawMiniMap(pbMiniMap.Canvas);
117 end;
119 procedure TSaveMiniMapForm.bSaveClick(Sender: TObject);
121 bmp: TBitmap;
122 Scale, w, h: Integer;
124 begin
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
143 begin
144 bmp := TBitmap.Create();
146 if cbScale.ItemIndex = 0 then
147 Scale := 1
148 else
149 Scale := 2;
151 w := (gMapInfo.Width div (16 div Scale))+4;
152 h := (gMapInfo.Height div (16 div Scale))+4;
154 bmp.Width := w;
155 bmp.Height := h;
157 DrawMiniMap(bmp.Canvas);
159 bmp.SaveToFile(SaveDialog.FileName);
161 bmp.Free();
162 end;
163 end;
165 initialization
166 SaveMiniMapForm := TSaveMiniMapForm.Create(Application);
167 end.