3 {$INCLUDE ../shared/a_modes.inc}
5 interface
7 uses
11 type
16 // Сохранить в:
20 // Имя карты:
23 // Текстуры:
27 // Небо:
31 // Музыка:
35 // Дополнительно:
43 private
44 { Private declarations }
45 public
46 { Public declarations }
49 var
52 implementation
54 uses
58 {$R *.lfm}
60 const
66 begin
74 var
77 begin
80 else
85 begin
86 (* Write resource only if it does not exists *)
89 begin
95 end
96 else
97 begin
98 //MessageBox(0, PChar(Format(_lc[I_MSG_WAD_ERROR], [ExtractFileName(filename)])), PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR);
99 MessageBox(0, PChar(Format(_lc[I_MSG_RES_ERROR], [filename, section, resource])), PChar(_lc[I_MSG_ERROR]), MB_OK + MB_ICONERROR);
101 end
105 var
115 begin
117 Exit;
119 Exit;
125 // Сохраняем карту в память:
128 Exit;
130 // Не перезаписывать WAD, а дополнить:
135 // Читаем карту из памяти:
140 // Получаем текстуры:
143 // Нужно копировать текстуры:
146 begin
149 Continue;
153 // Не записывать стандартные текстуры:
157 begin
158 // Копируем ресурс текстуры:
160 begin
162 Exit;
165 // Переименовываем ресурс текстуры:
172 // Получаем заголовок карты:
175 // Нужно копировать небо:
177 begin
181 // Не записывать стандартное небо:
185 begin
186 // Копируем ресурс неба:
188 begin
190 Exit;
193 // Переименовываем ресурс неба:
200 // Нужно копировать музыку:
202 begin
206 // Не записывать стандартную музыку:
210 begin
211 // Копируем ресурс музыки:
213 begin
215 Exit;
218 // Переименовываем ресурс музыки:
225 {
226 // Нужно копировать дополнительные текстуры:
227 if cbTextrures.Checked and (textures <> nil) and
228 (gPanels <> nil) and (gTriggers <> nil) then
229 begin
230 for a := 0 to High(gPanels) do
231 begin
232 ok := False;
234 // Ссылаются ли на эту панель триггеры:
235 for b := 0 to High(gTriggers) do
236 if ( (gTriggers[b].TriggerType in [TRIGGER_OPENDOOR,
237 TRIGGER_CLOSEDOOR, TRIGGER_DOOR, TRIGGER_DOOR5,
238 TRIGGER_CLOSETRAP, TRIGGER_TRAP, TRIGGER_LIFTUP,
239 TRIGGER_LIFTDOWN, TRIGGER_LIFT]) and
240 (gTriggers[b].Data.PanelID = a) ) or
241 (gTriggers[b].TexturePanel = a) then
242 begin
243 ok := True;
244 Break;
245 end;
247 // Есть триггеры на эту панель:
248 if ok and (gPanels[a].TextureName <> '') and
249 (not IsSpecialTexture(gPanels[a].TextureName) and
250 g_Texture_NumNameFindStart(gPanels[a].TextureName) then
251 begin
252 while True do
253 begin
254 r := g_Texture_NumNameFindNext(res);
255 case r of
256 NNF_NAME_FOUND: ;
257 NNF_NAME_EQUALS: Continue;
258 else Break;
259 end;
261 if res = '' then
262 Break;
264 g_ProcessResourceStr(res, @filename, @section, @resource);
266 // Не записывать стандартные дополнительные текстуры:
267 if (not cbNonStandart.Checked) or
268 ( (AnsiLowerCase(filename) <> STANDART_WAD) and
269 (AnsiLowerCase(filename) <> SHRSHADE_WAD) ) then
270 begin
271 // Копируем ресурс дополнительной текстуры:
272 if f_packmap.ProcessResource(eWAD.Text, tsection, filename, section, resource) then
273 begin
275 Нужно проверять есть такая текстура textures и есть ли она вообще?
276 // Переименовываем ресурс текстуры:
277 res := utf2win(Format(':%s\%s', [tsection, resource]));
278 ZeroMemory(@textures[a].Resource[0], 64);
279 CopyMemory(@textures[a].Resource[0], @res[1], Min(Length(res), 64));
283 end;
284 end;
285 end; // while True
286 end;
287 end;
288 end;
289 }
291 // Записываем изменения карты:
302 // Сохраняем карту из памяти под новым именем в WAD-файл:
310 MessageDlg(Format(_lc[I_MSG_PACKED], [eResource.Text, ExtractFileName(eWAD.Text)]), mtInformation, [mbOK], 0);
314 begin