diff --git a/src/editor/f_main.pas b/src/editor/f_main.pas
index e2635344a0977677c10d8bf4e71ec0a2470fcfb9..5624e6a3def924542f32448cd3f59d6138b67cef 100644 (file)
--- a/src/editor/f_main.pas
+++ b/src/editor/f_main.pas
f_mapoptions, g_basic, f_about, f_mapoptimization,
f_mapcheck, f_addresource_texture, g_textures,
f_activationtype, f_keys,
- MAPREADER, f_selectmap, f_savemap, WADEDITOR, WADSTRUCT, MAPDEF,
+ MAPREADER, f_selectmap, f_savemap, WADEDITOR, MAPDEF,
g_map, f_saveminimap, f_addresource, CONFIG, f_packmap,
f_addresource_sound, f_maptest, f_choosetype,
- g_language, f_selectlang, ClipBrd;
+ g_language, f_selectlang, ClipBrd, g_resources;
const
UNDO_DELETE_PANEL = 1;
MouseRDown: Boolean;
MouseLDownPos: Types.TPoint;
MouseRDownPos: Types.TPoint;
- WASDOffset: TPoint;
SelectFlag: Byte = SELECTFLAG_NONE;
MouseAction: Byte = MOUSEACTION_NONE;
cwdt, chgt: Byte;
spc: ShortInt;
ID: DWORD;
- wad: TWADEditor_1;
cfgdata: Pointer;
cfglen: Integer;
config: TConfig;
begin
- cfgdata := nil;
- cfglen := 0;
ID := 0;
-
- wad := TWADEditor_1.Create;
- if wad.ReadFile(EditorDir+'data/Game.wad') then
- wad.GetResource('FONTS', cfgres, cfgdata, cfglen);
- wad.Free();
-
- if cfglen <> 0 then
+ g_ReadResource(EditorDir + 'data/game.wad', 'FONTS', cfgres, cfgdata, cfglen);
+ if cfgdata <> nil then
begin
- if not g_CreateTextureWAD('FONT_STD', EditorDir+'data/Game.wad:FONTS\'+texture) then
+ if not g_CreateTextureWAD('FONT_STD', EditorDir + 'data/game.wad:FONTS\' + texture) then
e_WriteLog('ERROR ERROR ERROR', MSG_WARNING);
config := TConfig.CreateMem(cfgdata, cfglen);
spc := Min(Max(config.ReadInt('FontMap', 'Kerning', 0), -128), 127);
if g_GetTexture('FONT_STD', ID) then
- e_TextureFontBuild(ID, FontID, cwdt, chgt, spc-2);
+ e_TextureFontBuild(ID, FontID, cwdt, chgt, spc - 2);
config.Free();
+ FreeMem(cfgdata)
end
else
- e_WriteLog('Could not load FONT_STD', MSG_WARNING);
-
- if cfglen <> 0 then FreeMem(cfgdata);
+ begin
+ e_WriteLog('Could not load FONT_STD', MSG_WARNING)
+ end
end;
procedure TMainForm.FormCreate(Sender: TObject);
if MouseAction = MOUSEACTION_MOVEOBJ then
begin
MoveSelectedObjects(ssShift in Shift, ssCtrl in Shift,
- MousePos.X-LastMovePoint.X+WASDOffset.X,
- MousePos.Y-LastMovePoint.Y+WASDOffset.Y);
- WASDOffset.X := 0;
- WASDOffset.Y := 0;
+ MousePos.X-LastMovePoint.X,
+ MousePos.Y-LastMovePoint.Y);
end
else
// Меняем размер выделенного объекта:
if (SelectedObjectCount = 1) and
(SelectedObjects[GetFirstSelected].Live) then
begin
- dWidth := MousePos.X-LastMovePoint.X+WASDOffset.X;
- dHeight := MousePos.Y-LastMovePoint.Y+WASDOffset.Y;
- WASDOffset.X := 0;
- WASDOffset.Y := 0;
+ dWidth := MousePos.X-LastMovePoint.X;
+ dHeight := MousePos.Y-LastMovePoint.Y;
case ResizeType of
RESIZETYPE_VERTICAL: dWidth := 0;
RESIZEDIR_LEFT: dWidth := -dWidth;
end;
- ResizeObject(SelectedObjects[GetFirstSelected].ObjectType,
- SelectedObjects[GetFirstSelected].ID,
- dWidth, dHeight, ResizeDirection);
-
- LastMovePoint := MousePos;
+ if ResizeObject(SelectedObjects[GetFirstSelected].ObjectType,
+ SelectedObjects[GetFirstSelected].ID,
+ dWidth, dHeight, ResizeDirection) then
+ LastMovePoint := MousePos;
end;
end;
end;
begin
if (MouseLDown or MouseRDown) and (Position >= DotStep) then
begin
- Dec(WASDOffset.Y, DotStep);
+ if DrawRect <> nil then
+ begin
+ Inc(MouseLDownPos.y, DotStep);
+ Inc(MouseRDownPos.y, DotStep);
+ end;
+ Inc(LastMovePoint.Y, DotStep);
RenderPanelMouseMove(Sender, Shift, RenderMousePos().X, RenderMousePos().Y);
end;
Position := IfThen(Position > DotStep, Position-DotStep, 0);
begin
if (MouseLDown or MouseRDown) and (Position+DotStep <= Max) then
begin
- Inc(WASDOffset.Y, DotStep);
+ if DrawRect <> nil then
+ begin
+ Dec(MouseLDownPos.y, DotStep);
+ Dec(MouseRDownPos.y, DotStep);
+ end;
+ Dec(LastMovePoint.Y, DotStep);
RenderPanelMouseMove(Sender, Shift, RenderMousePos().X, RenderMousePos().Y);
end;
Position := IfThen(Position+DotStep < Max, Position+DotStep, Max);
begin
if (MouseLDown or MouseRDown) and (Position >= DotStep) then
begin
- Dec(WASDOffset.X, DotStep);
+ if DrawRect <> nil then
+ begin
+ Inc(MouseLDownPos.x, DotStep);
+ Inc(MouseRDownPos.x, DotStep);
+ end;
+ Inc(LastMovePoint.X, DotStep);
RenderPanelMouseMove(Sender, Shift, RenderMousePos().X, RenderMousePos().Y);
end;
Position := IfThen(Position > DotStep, Position-DotStep, 0);
begin
if (MouseLDown or MouseRDown) and (Position+DotStep <= Max) then
begin
- Inc(WASDOffset.X, DotStep);
+ if DrawRect <> nil then
+ begin
+ Dec(MouseLDownPos.x, DotStep);
+ Dec(MouseRDownPos.x, DotStep);
+ end;
+ Dec(LastMovePoint.X, DotStep);
RenderPanelMouseMove(Sender, Shift, RenderMousePos().X, RenderMousePos().Y);
end;
Position := IfThen(Position+DotStep < Max, Position+DotStep, Max);
procedure TMainForm.aDeleteMap(Sender: TObject);
var
- WAD: TWADEditor_1;
- MapList: SArray;
- MapName: Char16;
- a: Integer;
- str: String;
+ res: Integer;
+ FileName: String;
+ MapName: String;
begin
OpenDialog.Filter := _lc[I_FILE_FILTER_WAD];
if not OpenDialog.Execute() then
Exit;
- WAD := TWADEditor_1.Create();
-
- if not WAD.ReadFile(OpenDialog.FileName) then
- begin
- WAD.Free();
- Exit;
- end;
-
- WAD.CreateImage();
-
- MapList := WAD.GetResourcesList('');
-
+ FileName := OpenDialog.FileName;
SelectMapForm.Caption := _lc[I_CAP_REMOVE];
SelectMapForm.lbMapList.Items.Clear();
+ SelectMapForm.GetMaps(FileName);
- if MapList <> nil then
- for a := 0 to High(MapList) do
- SelectMapForm.lbMapList.Items.Add(win2utf(MapList[a]));
+ if SelectMapForm.ShowModal() <> mrOK then
+ Exit;
- if (SelectMapForm.ShowModal() = mrOK) then
- begin
- str := SelectMapForm.lbMapList.Items[SelectMapForm.lbMapList.ItemIndex];
- MapName := '';
- Move(str[1], MapName[0], Min(16, Length(str)));
-
- if MessageBox(0, PChar(Format(_lc[I_MSG_DELETE_MAP_PROMT],
- [MapName, OpenDialog.FileName])),
- PChar(_lc[I_MSG_DELETE_MAP]),
- MB_ICONQUESTION or MB_YESNO or
- MB_DEFBUTTON2) <> mrYes then
- Exit;
+ MapName := SelectMapForm.lbMapList.Items[SelectMapForm.lbMapList.ItemIndex];
+ if MessageBox(0, PChar(Format(_lc[I_MSG_DELETE_MAP_PROMT], [MapName, OpenDialog.FileName])), PChar(_lc[I_MSG_DELETE_MAP]), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) <> mrYes then
+ Exit;
- WAD.RemoveResource('', utf2win(MapName));
-
- MessageBox(0, PChar(Format(_lc[I_MSG_MAP_DELETED_PROMT],
- [MapName])),
- PChar(_lc[I_MSG_MAP_DELETED]),
- MB_ICONINFORMATION or MB_OK or
- MB_DEFBUTTON1);
+ g_DeleteResource(FileName, '', MapName, res);
+ if res <> 0 then
+ begin
+ MessageBox(0, PChar('Cant delete map res=' + IntToStr(res)), PChar('Map not deleted!'), MB_ICONINFORMATION or MB_OK or MB_DEFBUTTON1);
+ Exit
+ end;
- WAD.SaveTo(OpenDialog.FileName);
+ MessageBox(
+ 0,
+ PChar(Format(_lc[I_MSG_MAP_DELETED_PROMT], [MapName])),
+ PChar(_lc[I_MSG_MAP_DELETED]),
+ MB_ICONINFORMATION or MB_OK or MB_DEFBUTTON1
+ );
// Удалили текущую карту - сохранять по старому ее нельзя:
- if OpenedMap = (OpenDialog.FileName+':\'+MapName) then
- begin
- OpenedMap := '';
- OpenedWAD := '';
- MainForm.Caption := FormCaption;
- end;
- end;
-
- WAD.Free();
+ if OpenedMap = (FileName + ':\' + MapName) then
+ begin
+ OpenedMap := '';
+ OpenedWAD := '';
+ MainForm.Caption := FormCaption
+ end
end;
procedure TMainForm.vleObjectPropertyKeyDown(Sender: TObject;