Fix glitchy mouse input in Wallbuster menu.
This commit is contained in:
parent
6ebd9358c8
commit
130261aeed
2 changed files with 59 additions and 67 deletions
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r281 \cu(Tue 9 Aug 00:53:32 CEST 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r281 \cu(2022-08-09 00:53:32)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r282 \cu(Tue 9 Aug 01:20:17 CEST 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r282 \cu(2022-08-09 01:20:17)\c-";
|
||||
|
|
|
|||
|
|
@ -213,50 +213,53 @@ Class WallbusterReloadMenu : GenericMenu
|
|||
|
||||
override bool MouseEvent( int type, int mx, int my )
|
||||
{
|
||||
bool res = Super.MouseEvent(type,mx,my);
|
||||
if ( (type != MOUSE_CLICK) && (type != MOUSE_RELEASE) ) return false;
|
||||
Vector2 mpos = (mx/hs,my/hs)-origin;
|
||||
if ( type == MOUSE_Click )
|
||||
int wset = -1;
|
||||
int ox = 6;
|
||||
for ( int i=0; i<4; i++ )
|
||||
{
|
||||
int wset = -1;
|
||||
int ox = 6;
|
||||
for ( int i=0; i<4; i++ )
|
||||
if ( (mpos.x >= ox) && (mpos.x < ox+27) && (mpos.y >= 0) && (mpos.y < 13) )
|
||||
{
|
||||
if ( (mpos.x >= ox) && (mpos.x < ox+27) && (mpos.y >= 0) && (mpos.y < 13) )
|
||||
{
|
||||
wset = i;
|
||||
break;
|
||||
}
|
||||
ox += 27;
|
||||
}
|
||||
if ( wset != -1 ) sel0 = wset;
|
||||
bool inside = (wset!=-1);
|
||||
if ( (mpos.x >= 0) && (mpos.x < 120) && (mpos.y >= 15) && (mpos.y < 28) ) inside = true;
|
||||
if ( isrclick )
|
||||
{
|
||||
// right click inside: pop
|
||||
// right click outside: clear (empty if already clear)
|
||||
if ( inside || multiclk ) MenuEvent(multiclk?MKEY_PAGEUP:MKEY_UP,false);
|
||||
else
|
||||
{
|
||||
if ( queue.Size() == 0 )
|
||||
{
|
||||
for ( int i=0; i<4; i++ ) AmmoSets[i] = 0;
|
||||
MenuSound("menu/democlose");
|
||||
EventHandler.SendNetworkEvent("swwmcbt.EMPTY",consoleplayer);
|
||||
Close();
|
||||
}
|
||||
else MenuEvent(MKEY_CLEAR,false);
|
||||
}
|
||||
wset = i;
|
||||
break;
|
||||
}
|
||||
ox += 27;
|
||||
}
|
||||
if ( (wset != -1) && (type == MOUSE_CLICK) && (wset != sel0) )
|
||||
{
|
||||
MenuSound("menu/demotab");
|
||||
sel0 = wset;
|
||||
CVar.FindCVar('swwm_cbtlast').SetInt(sel0);
|
||||
}
|
||||
bool inside = (wset!=-1);
|
||||
if ( type != MOUSE_RELEASE ) return false;
|
||||
if ( (mpos.x >= 0) && (mpos.x < 120) && (mpos.y >= 15) && (mpos.y < 28) ) inside = true;
|
||||
if ( isrclick )
|
||||
{
|
||||
// right click inside: pop
|
||||
// right click outside: clear (empty if already clear)
|
||||
if ( inside || multiclk ) MenuEvent(multiclk?MKEY_PAGEUP:MKEY_UP,false);
|
||||
else
|
||||
{
|
||||
// left click inside: push
|
||||
// left click outside: commit
|
||||
if ( inside || multiclk ) MenuEvent(multiclk?MKEY_PAGEDOWN:MKEY_DOWN,false);
|
||||
else MenuEvent(MKEY_ENTER,false);
|
||||
if ( queue.Size() == 0 )
|
||||
{
|
||||
for ( int i=0; i<4; i++ ) AmmoSets[i] = 0;
|
||||
MenuSound("menu/democlose");
|
||||
EventHandler.SendNetworkEvent("swwmcbt.EMPTY",consoleplayer);
|
||||
Close();
|
||||
}
|
||||
else MenuEvent(MKEY_CLEAR,false);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
else
|
||||
{
|
||||
// left click inside: push
|
||||
// left click outside: commit
|
||||
if ( inside || multiclk ) MenuEvent(multiclk?MKEY_PAGEDOWN:MKEY_DOWN,false);
|
||||
else MenuEvent(MKEY_ENTER,false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
override bool OnInputEvent( InputEvent ev )
|
||||
|
|
@ -289,55 +292,44 @@ Class WallbusterReloadMenu : GenericMenu
|
|||
MenuSound("menu/democlose");
|
||||
EventHandler.SendNetworkEvent("swwmcbt.EMPTY",consoleplayer);
|
||||
Close();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case UIEvent.Type_LButtonDown:
|
||||
{
|
||||
isrclick = false;
|
||||
multiclk = false;
|
||||
bool res = MouseEvent(MOUSE_Click,ev.MouseX,ev.MouseY);
|
||||
if ( res ) SetCapture(true);
|
||||
return res;
|
||||
}
|
||||
MouseEvent(MOUSE_Click,ev.MouseX,ev.MouseY);
|
||||
break;
|
||||
case UIEvent.Type_LButtonUp:
|
||||
isrclick = false;
|
||||
multiclk = false;
|
||||
MouseEvent(MOUSE_Release,ev.MouseX,ev.MouseY);
|
||||
break;
|
||||
case UIEvent.Type_RButtonDown:
|
||||
{
|
||||
isrclick = true;
|
||||
multiclk = false;
|
||||
bool res = MouseEvent(MOUSE_Click,ev.MouseX,ev.MouseY);
|
||||
if ( res ) SetCapture(true);
|
||||
return res;
|
||||
}
|
||||
MouseEvent(MOUSE_Click,ev.MouseX,ev.MouseY);
|
||||
break;
|
||||
case UIEvent.Type_RButtonUp:
|
||||
isrclick = true;
|
||||
multiclk = false;
|
||||
MouseEvent(MOUSE_Release,ev.MouseX,ev.MouseY);
|
||||
break;
|
||||
case UIEvent.Type_WheelDown:
|
||||
{
|
||||
// wheel down: push 5
|
||||
isrclick = false;
|
||||
multiclk = true;
|
||||
bool res = MouseEvent(MOUSE_Click,int(curmouse.x),int(curmouse.y));
|
||||
SetCapture(false);
|
||||
return res;
|
||||
}
|
||||
MouseEvent(MOUSE_Click,int(curmouse.x),int(curmouse.y));
|
||||
MouseEvent(MOUSE_Release,int(curmouse.x),int(curmouse.y));
|
||||
break;
|
||||
case UIEvent.Type_WheelUp:
|
||||
{
|
||||
// wheel up: pop 5
|
||||
isrclick = true;
|
||||
multiclk = true;
|
||||
bool res = MouseEvent(MOUSE_Click,int(curmouse.x),int(curmouse.y));
|
||||
SetCapture(false);
|
||||
return res;
|
||||
}
|
||||
case UIEvent.Type_LButtonUp:
|
||||
case UIEvent.Type_RButtonUp:
|
||||
if ( mMouseCapture )
|
||||
{
|
||||
SetCapture(false);
|
||||
return MouseEvent(MOUSE_Release,ev.MouseX,ev.MouseY);
|
||||
}
|
||||
MouseEvent(MOUSE_Click,int(curmouse.x),int(curmouse.y));
|
||||
MouseEvent(MOUSE_Release,int(curmouse.x),int(curmouse.y));
|
||||
break;
|
||||
case UIEvent.Type_MouseMove:
|
||||
curmouse = (ev.MouseX,ev.MouseY);
|
||||
if ( mMouseCapture || (m_use_mouse == 1) )
|
||||
return MouseEvent(MOUSE_Move,ev.MouseX,ev.MouseY);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue