X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Feditor%2Ff_main.pas;h=5624e6a3def924542f32448cd3f59d6138b67cef;hb=5fd28f40b978042653b18006bd33ff5c93152518;hp=d543e3fdb5048e130d0def4a71730acb1db1ff47;hpb=629df7b7167e490fee02d458ce229a3a68ff22c6;p=d2df-editor.git diff --git a/src/editor/f_main.pas b/src/editor/f_main.pas index d543e3f..5624e6a 100644 --- a/src/editor/f_main.pas +++ b/src/editor/f_main.pas @@ -336,10 +336,10 @@ uses 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; @@ -442,7 +442,6 @@ var MouseRDown: Boolean; MouseLDownPos: Types.TPoint; MouseRDownPos: Types.TPoint; - WASDOffset: TPoint; SelectFlag: Byte = SELECTFLAG_NONE; MouseAction: Byte = MOUSEACTION_NONE; @@ -1482,7 +1481,7 @@ begin 3: str := _lc[I_PROP_TR_SHOT_AIM_3]; else str := _lc[I_PROP_TR_SHOT_AIM_0]; end; - with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_AIM], str, True)-1] do + with ItemProps[InsertRow(_lc[I_PROP_TR_SHOT_AIM], str, True)] do begin EditStyle := esPickList; ReadOnly := True; @@ -2619,23 +2618,15 @@ var 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); @@ -2644,14 +2635,15 @@ begin 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); @@ -4115,10 +4107,8 @@ begin 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 // Меняем размер выделенного объекта: @@ -4127,10 +4117,8 @@ begin 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; @@ -4142,11 +4130,10 @@ begin 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; @@ -4384,7 +4371,12 @@ begin 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); @@ -4395,7 +4387,12 @@ begin 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); @@ -4410,7 +4407,12 @@ begin 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); @@ -4421,7 +4423,12 @@ begin 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); @@ -6150,69 +6157,48 @@ end; 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;