From ac055a0b5042e78a4506590b94004db11fd00961 Mon Sep 17 00:00:00 2001 From: puzl Date: Sat, 26 Aug 2006 17:45:11 +0000 Subject: [PATCH] o fixed commander keyboard scrolling ( +scrollleft, +scrollright, +scrollup and +scrolldown ) git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@586 67975925-1194-0748-b3d5-c16f83f1a3a1 --- releases/3.2.0/source/mod/AvHHud.cpp | 16 ++--- .../3.2.0/source/mod/AvHScrollHandler.cpp | 62 +++++++++++++++++++ releases/3.2.0/source/mod/AvHScrollHandler.h | 10 +++ 3 files changed, 80 insertions(+), 8 deletions(-) diff --git a/releases/3.2.0/source/mod/AvHHud.cpp b/releases/3.2.0/source/mod/AvHHud.cpp index 065e85b6..07f3e9d8 100644 --- a/releases/3.2.0/source/mod/AvHHud.cpp +++ b/releases/3.2.0/source/mod/AvHHud.cpp @@ -720,17 +720,17 @@ void AvHHud::AddCommands() gEngfuncs.pfnAddCommand ("-mousepopupmenu", AvHPieMenuHandler::ClosePieMenu); // Add scrolling commands - gEngfuncs.pfnAddCommand ("+scrollup", AvHScrollHandler::ScrollUp); - gEngfuncs.pfnAddCommand ("-scrollup", AvHScrollHandler::StopScroll); + gEngfuncs.pfnAddCommand ("+scrollup", AvHScrollHandler::KeyScrollUp); + gEngfuncs.pfnAddCommand ("-scrollup", AvHScrollHandler::KeyScrollUpStop); - gEngfuncs.pfnAddCommand ("+scrolldown", AvHScrollHandler::ScrollDown); - gEngfuncs.pfnAddCommand ("-scrolldown", AvHScrollHandler::StopScroll); + gEngfuncs.pfnAddCommand ("+scrolldown", AvHScrollHandler::KeyScrollDown); + gEngfuncs.pfnAddCommand ("-scrolldown", AvHScrollHandler::KeyScrollDownStop); - gEngfuncs.pfnAddCommand ("+scrollleft", AvHScrollHandler::ScrollLeft); - gEngfuncs.pfnAddCommand ("-scrollleft", AvHScrollHandler::StopScroll); + gEngfuncs.pfnAddCommand ("+scrollleft", AvHScrollHandler::KeyScrollLeft); + gEngfuncs.pfnAddCommand ("-scrollleft", AvHScrollHandler::KeyScrollLeftStop); - gEngfuncs.pfnAddCommand ("+scrollright", AvHScrollHandler::ScrollRight); - gEngfuncs.pfnAddCommand ("-scrollright", AvHScrollHandler::StopScroll); + gEngfuncs.pfnAddCommand ("+scrollright", AvHScrollHandler::KeyScrollRight); + gEngfuncs.pfnAddCommand ("-scrollright", AvHScrollHandler::KeyScrollRightStop); gEngfuncs.pfnAddCommand ("toggleeditps", AvHParticleEditorHandler::ToggleEdit); diff --git a/releases/3.2.0/source/mod/AvHScrollHandler.cpp b/releases/3.2.0/source/mod/AvHScrollHandler.cpp index b107e9a0..ce70417f 100644 --- a/releases/3.2.0/source/mod/AvHScrollHandler.cpp +++ b/releases/3.2.0/source/mod/AvHScrollHandler.cpp @@ -7,6 +7,7 @@ #include "mod/AvHActionButtons.h" #include "ui/UIUtil.h" + int AvHScrollHandler::sScrollX = 0; int AvHScrollHandler::sScrollY = 0; int AvHScrollHandler::sScrollZ = 0; @@ -18,9 +19,11 @@ int AvHScrollHandler::sLastMouseUpX = 0; int AvHScrollHandler::sLastMouseUpY = 0; bool AvHScrollHandler::sMouseOneDown = false; bool AvHScrollHandler::sMouseTwoDown = false; +int AvHScrollHandler::sKeyDown = 0; AvHScrollHandler::AvHScrollHandler() { + sKeyDown = 0; } bool AvHScrollHandler::GetMouseOneDown() const @@ -63,6 +66,62 @@ void AvHScrollHandler::ClearScrollHeight() sScrollZ = 0; } +void AvHScrollHandler::KeyScrollLeft() +{ + if ( sKeyDown < 0 ) sKeyDown=0; + sKeyDown++; + ScrollLeft(); +} + +void AvHScrollHandler::KeyScrollRight() +{ + if ( sKeyDown < 0 ) sKeyDown=0; + sKeyDown++; + ScrollRight(); +} + +void AvHScrollHandler::KeyScrollUp() +{ + if ( sKeyDown < 0 ) sKeyDown=0; + sKeyDown++; + ScrollUp(); +} + +void AvHScrollHandler::KeyScrollDown() +{ + if ( sKeyDown < 0 ) sKeyDown=0; + sKeyDown++; + ScrollDown(); +} + +void AvHScrollHandler::KeyScrollDownStop() +{ + sKeyDown--; + if ( sKeyDown < 0 ) sKeyDown=0; + ScrollDown(); +} + +void AvHScrollHandler::KeyScrollLeftStop() +{ + sKeyDown--; + if ( sKeyDown < 0 ) sKeyDown=0; + sScrollX=0; +} + +void AvHScrollHandler::KeyScrollRightStop() +{ + sKeyDown--; + if ( sKeyDown < 0 ) sKeyDown=0; + sScrollX=0; +} + +void AvHScrollHandler::KeyScrollUpStop() +{ + sKeyDown--; + if ( sKeyDown < 0 ) sKeyDown=0; + sScrollY=0; +} + void AvHScrollHandler::ScrollLeft() { sScrollX = -1; @@ -102,6 +161,9 @@ void AvHScrollHandler::StopScroll() void AvHScrollHandler::cursorMoved(int x, int y, Panel* inPanel) { + if ( sKeyDown > 0 ) + return; + char theMessage[256]; int theRandNumber = rand() % 10; sprintf(theMessage, "Cursor moved, %d, %d, rand = %d", x, y, theRandNumber); diff --git a/releases/3.2.0/source/mod/AvHScrollHandler.h b/releases/3.2.0/source/mod/AvHScrollHandler.h index 08555a06..21fb128a 100644 --- a/releases/3.2.0/source/mod/AvHScrollHandler.h +++ b/releases/3.2.0/source/mod/AvHScrollHandler.h @@ -19,6 +19,14 @@ public: bool GetMouseTwoDown() const; static void ClearScrollHeight(); + static void KeyScrollLeft(); + static void KeyScrollRight(); + static void KeyScrollUp(); + static void KeyScrollDown(); + static void KeyScrollLeftStop(); + static void KeyScrollRightStop(); + static void KeyScrollUpStop(); + static void KeyScrollDownStop(); static void ScrollLeft(); static void ScrollRight(); static void ScrollUp(); @@ -40,6 +48,7 @@ public: virtual void keyFocusTicked(Panel* panel) {} private: + static int sScrollX; static int sScrollY; static int sScrollZ; @@ -51,6 +60,7 @@ private: static int sLastMouseUpY; static bool sMouseOneDown; static bool sMouseTwoDown; + static int sKeyDown; }; #endif