diff --git a/src/editor/f_main.pas b/src/editor/f_main.pas
index 2b9ddee5a2a3f6a26c8311f6984b84d4655e3836..63f31f4a83d7edc3aaa77513e34b171e75e1f2e1 100644 (file)
--- a/src/editor/f_main.pas
+++ b/src/editor/f_main.pas
LayerEnabled: Array [LAYER_BACK..LAYER_TRIGGERS] of Boolean =
(True, True, True, True, True, True, True, True, True);
- PreviewMode: Boolean = False;
+ PreviewMode: Byte = 0;
gLanguage: String;
FormCaption: String;
MouseRDown: Boolean;
MouseLDownPos: Types.TPoint;
MouseRDownPos: Types.TPoint;
+ WASDOffset: TPoint;
SelectFlag: Byte = SELECTFLAG_NONE;
MouseAction: Byte = MOUSEACTION_NONE;
MapName: String;
idx: Integer;
begin
+ SelectMapForm.Caption := _lc[I_CAP_OPEN];
SelectMapForm.GetMaps(FileName);
if (FileName = OpenedWAD) and
end;
// Рисуем сетку:
- if DotEnable and (not PreviewMode) then
+ if DotEnable and (PreviewMode = 0) then
begin
if DotSize = 2 then
a := -1
// Превью текстуры:
if (lbTextureList.ItemIndex <> -1) and (cbPreview.Checked) and
- (not IsSpecialTextureSel()) and (not PreviewMode) then
+ (not IsSpecialTextureSel()) and (PreviewMode = 0) then
begin
if not g_GetTexture(SelectedTexture(), ID) then
g_GetTexture('NOTEXTURE', ID);
if MouseAction = MOUSEACTION_MOVEOBJ then
begin
MoveSelectedObjects(ssShift in Shift, ssCtrl in Shift,
- MousePos.X-LastMovePoint.X,
- MousePos.Y-LastMovePoint.Y);
+ MousePos.X-LastMovePoint.X+WASDOffset.X,
+ MousePos.Y-LastMovePoint.Y+WASDOffset.Y);
+ WASDOffset.X := 0;
+ WASDOffset.Y := 0;
end
else
// Меняем размер выделенного объекта:
if (SelectedObjectCount = 1) and
(SelectedObjects[GetFirstSelected].Live) then
begin
- dWidth := MousePos.X-LastMovePoint.X;
- dHeight := MousePos.Y-LastMovePoint.Y;
+ dWidth := MousePos.X-LastMovePoint.X+WASDOffset.X;
+ dHeight := MousePos.Y-LastMovePoint.Y+WASDOffset.Y;
+ WASDOffset.X := 0;
+ WASDOffset.Y := 0;
case ResizeType of
RESIZETYPE_VERTICAL: dWidth := 0;
if not (ssCtrl in Shift) then
begin
+ // Быстрое превью карты:
+ if Key = Ord('E') then
+ begin
+ if PreviewMode = 0 then
+ PreviewMode := 2;
+ end;
+
// Вертикальный скролл карты:
with sbVertical do
begin
if Key = Ord('W') then
begin
+ if (MouseLDown or MouseRDown) and (Position >= DotStep) then
+ begin
+ Dec(WASDOffset.Y, DotStep);
+ RenderPanelMouseMove(Sender, Shift, LastMovePoint.X, LastMovePoint.Y);
+ end;
Position := IfThen(Position > DotStep, Position-DotStep, 0);
MapOffset.Y := -Round(Position/16) * 16;
end;
if Key = Ord('S') then
begin
+ if (MouseLDown or MouseRDown) and (Position+DotStep <= Max) then
+ begin
+ Inc(WASDOffset.Y, DotStep);
+ RenderPanelMouseMove(Sender, Shift, LastMovePoint.X, LastMovePoint.Y);
+ end;
Position := IfThen(Position+DotStep < Max, Position+DotStep, Max);
MapOffset.Y := -Round(Position/16) * 16;
end;
begin
if Key = Ord('A') then
begin
+ if (MouseLDown or MouseRDown) and (Position >= DotStep) then
+ begin
+ Dec(WASDOffset.X, DotStep);
+ RenderPanelMouseMove(Sender, Shift, LastMovePoint.X, LastMovePoint.Y);
+ end;
Position := IfThen(Position > DotStep, Position-DotStep, 0);
MapOffset.X := -Round(Position/16) * 16;
end;
if Key = Ord('D') then
begin
+ if (MouseLDown or MouseRDown) and (Position+DotStep <= Max) then
+ begin
+ Inc(WASDOffset.X, DotStep);
+ RenderPanelMouseMove(Sender, Shift, LastMovePoint.X, LastMovePoint.Y);
+ end;
Position := IfThen(Position+DotStep < Max, Position+DotStep, Max);
MapOffset.X := -Round(Position/16) * 16;
end;
if i > 0 then
begin
g_ProcessResourceStr(OpenedMap, @FileName, nil, nil);
+ SelectMapForm.Caption := _lc[I_CAP_SELECT];
SelectMapForm.GetMaps(FileName);
if SelectMapForm.ShowModal() = mrOK then
else if Key = _lc[I_PROP_TR_NEXT_MAP] then
begin // Выбор следующей карты:
g_ProcessResourceStr(OpenedMap, @FileName, nil, nil);
+ SelectMapForm.Caption := _lc[I_CAP_SELECT];
SelectMapForm.GetMaps(FileName);
if SelectMapForm.ShowModal() = mrOK then
MapList := WAD.GetResourcesList('');
+ SelectMapForm.Caption := _lc[I_CAP_REMOVE];
SelectMapForm.lbMapList.Items.Clear();
if MapList <> nil then
procedure TMainForm.miMapPreviewClick(Sender: TObject);
begin
- if not PreviewMode then
+ if PreviewMode = 2 then
+ Exit;
+
+ if PreviewMode = 0 then
begin
Splitter2.Visible := False;
Splitter1.Visible := False;
sbVertical.Visible := True;
end;
- PreviewMode := not PreviewMode;
- (Sender as TMenuItem).Checked := PreviewMode;
+ PreviewMode := PreviewMode xor 1;
+ (Sender as TMenuItem).Checked := PreviewMode > 0;
FormResize(Self);
end;
(Key = Ord('V')) then
FillProperty();
end;
+// Быстрое превью карты:
+ if Key = Ord('E') then
+ begin
+ if PreviewMode = 2 then
+ PreviewMode := 0;
+ end;
end;
end.