From 7a31b51c1ab63b62ee8818cbdb9f4f6b4d40a8dd Mon Sep 17 00:00:00 2001 From: jsalmon3 <> Date: Tue, 9 Apr 2002 21:37:13 +0000 Subject: [PATCH] Added feature #422167 - Mouse cursor is restricted to minimap when dragged --- src/ui/mouse.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/ui/mouse.cpp b/src/ui/mouse.cpp index d9004c609..723cfad26 100644 --- a/src/ui/mouse.cpp +++ b/src/ui/mouse.cpp @@ -582,6 +582,37 @@ global void HandleMouseExit(void) GameCursor = TheUI.Point.Cursor; } +/** +** Restrict mouse cursor to minimap +*/ +local void RestrictCursorToMinimap(void) +{ + if( CursorX<TheUI.MinimapX+24 ) { + CursorStartX=TheUI.MinimapX+24; + } + else if( CursorX>=TheUI.MinimapX+24+MINIMAP_W ) { + CursorStartX=TheUI.MinimapX+24+MINIMAP_W-1; + } + else { + CursorStartX=CursorX; + } + + if( CursorY<TheUI.MinimapY+2 ) { + CursorStartY=TheUI.MinimapY+2; + } + else if( CursorY>=TheUI.MinimapY+2+MINIMAP_H ) { + CursorStartY=TheUI.MinimapY+2+MINIMAP_H-1; + } + else { + CursorStartY=CursorY; + } + + CursorX=TheUI.WarpX=CursorStartX; + CursorY=TheUI.WarpY=CursorStartY; + CursorOn=CursorOnMinimap; +} + + /** ** Handle movement of the cursor. ** @@ -592,7 +623,9 @@ global void UIHandleMouseMove(int x,int y) { int mx; int my; + enum _cursor_on_ OldCursorOn; + OldCursorOn=CursorOn; // // Selecting units. // @@ -646,6 +679,15 @@ global void UIHandleMouseMove(int x,int y) HandleMouseOn(x,y); DebugLevel3("MouseOn %d\n",CursorOn); + // Restrict mouse to minimap when dragging + if( OldCursorOn==CursorOnMinimap && CursorOn!=CursorOnMinimap && + (MouseButtons&LeftButton) ) { + RestrictCursorToMinimap(); + MapSetViewpoint(ScreenMinimap2MapX(CursorX)-MapWidth/2 + ,ScreenMinimap2MapY(CursorY)-MapHeight/2); + return; + } + // // User may be draging with button pressed. // @@ -732,6 +774,8 @@ global void UIHandleMouseMove(int x,int y) // MapSetViewpoint(ScreenMinimap2MapX(CursorX)-MapWidth/2 ,ScreenMinimap2MapY(CursorY)-MapHeight/2); + CursorStartX=CursorX; + CursorStartY=CursorY; return; } }