Fixing mouse buttons getting stuck and aligning mouse speed minmaxes to what dosbox expects
This commit is contained in:
parent
88d2a58e44
commit
c7b5459fa1
|
@ -62,8 +62,8 @@ namespace BizHawk.Emulation.Cores.Computers.DOS
|
|||
controller.BoolButtons.Add(Inputs.Mouse + " " + MouseInputs.RightButton);
|
||||
controller.AddAxis(Inputs.Mouse + " " + MouseInputs.PosX, (0).RangeTo(LibDOSBox.SVGA_MAX_WIDTH), LibDOSBox.SVGA_MAX_WIDTH / 2);
|
||||
controller.AddAxis(Inputs.Mouse + " " + MouseInputs.PosY, (0).RangeTo(LibDOSBox.SVGA_MAX_HEIGHT), LibDOSBox.SVGA_MAX_HEIGHT / 2);
|
||||
controller.AddAxis(Inputs.Mouse + " " + MouseInputs.SpeedX, (-LibDOSBox.SVGA_MAX_WIDTH / 2).RangeTo(LibDOSBox.SVGA_MAX_WIDTH / 2), 0);
|
||||
controller.AddAxis(Inputs.Mouse + " " + MouseInputs.SpeedY, (-LibDOSBox.SVGA_MAX_HEIGHT / 2).RangeTo(LibDOSBox.SVGA_MAX_HEIGHT / 2), 0);
|
||||
controller.AddAxis(Inputs.Mouse + " " + MouseInputs.SpeedX, (-32769).RangeTo(32768), 0); // This is
|
||||
controller.AddAxis(Inputs.Mouse + " " + MouseInputs.SpeedY, (-32769).RangeTo(32768), 0);
|
||||
}
|
||||
|
||||
// Adding drive management buttons
|
||||
|
|
|
@ -375,25 +375,29 @@ namespace BizHawk.Emulation.Cores.Computers.DOS
|
|||
fi.mouse.dY = deltaY != 0 ? deltaY : fi.mouse.posY - _mouseState.posY;
|
||||
|
||||
// Button pressed criteria:
|
||||
bool isMouseLeftButtonPressed = controller.IsPressed($"{Inputs.Mouse} {MouseInputs.LeftButton}");
|
||||
bool isMouseMiddleButtonPressed = controller.IsPressed($"{Inputs.Mouse} {MouseInputs.MiddleButton}");
|
||||
bool isMouseRightButtonPressed = controller.IsPressed($"{Inputs.Mouse} {MouseInputs.RightButton}");
|
||||
|
||||
// If the input is made in this frame and the button is not held from before
|
||||
fi.mouse.leftButtonPressed = controller.IsPressed($"{Inputs.Mouse} {MouseInputs.LeftButton}") && !_mouseState.leftButtonHeld ? 1 : 0;
|
||||
fi.mouse.middleButtonPressed = controller.IsPressed($"{Inputs.Mouse} {MouseInputs.MiddleButton}") && !_mouseState.middleButtonHeld ? 1 : 0;
|
||||
fi.mouse.rightButtonPressed = controller.IsPressed($"{Inputs.Mouse} {MouseInputs.RightButton}") && !_mouseState.rightButtonHeld ? 1 : 0;
|
||||
fi.mouse.leftButtonPressed = isMouseLeftButtonPressed && !_mouseState.leftButtonHeld ? 1 : 0;
|
||||
fi.mouse.middleButtonPressed = isMouseMiddleButtonPressed && !_mouseState.middleButtonHeld ? 1 : 0;
|
||||
fi.mouse.rightButtonPressed = isMouseRightButtonPressed && !_mouseState.rightButtonHeld ? 1 : 0;
|
||||
|
||||
// Button released criteria:
|
||||
// If the input is not pressed in this frame and the button is held from before
|
||||
fi.mouse.leftButtonReleased = !controller.IsPressed($"{Inputs.Mouse} {MouseInputs.LeftButton}") && _mouseState.leftButtonHeld ? 1 : 0;
|
||||
fi.mouse.middleButtonReleased = !controller.IsPressed($"{Inputs.Mouse} {MouseInputs.MiddleButton}") && _mouseState.middleButtonHeld ? 1 : 0;
|
||||
fi.mouse.rightButtonReleased = !controller.IsPressed($"{Inputs.Mouse} {MouseInputs.RightButton}") && _mouseState.rightButtonHeld ? 1 : 0;
|
||||
fi.mouse.leftButtonReleased = !isMouseLeftButtonPressed && _mouseState.leftButtonHeld ? 1 : 0;
|
||||
fi.mouse.middleButtonReleased = !isMouseMiddleButtonPressed && _mouseState.middleButtonHeld ? 1 : 0;
|
||||
fi.mouse.rightButtonReleased = !isMouseRightButtonPressed && _mouseState.rightButtonHeld ? 1 : 0;
|
||||
fi.mouse.sensitivity = _syncSettings.MouseSensitivity;
|
||||
|
||||
// Getting new mouse state values
|
||||
var nextState = new DOSBox.MouseState();
|
||||
nextState.posX = fi.mouse.posX;
|
||||
nextState.posY = fi.mouse.posY;
|
||||
if (fi.mouse.leftButtonPressed > 0) nextState.leftButtonHeld = true;
|
||||
if (fi.mouse.middleButtonPressed > 0) nextState.middleButtonHeld = true;
|
||||
if (fi.mouse.rightButtonPressed > 0) nextState.rightButtonHeld = true;
|
||||
nextState.leftButtonHeld = isMouseLeftButtonPressed;
|
||||
nextState.middleButtonHeld = isMouseMiddleButtonPressed;
|
||||
nextState.rightButtonHeld = isMouseRightButtonPressed;
|
||||
|
||||
// Updating mouse state
|
||||
_mouseState = nextState;
|
||||
|
|
Loading…
Reference in New Issue