Add "SNES mouse (buttons only)" input device

This is intended for use with Lua scripts that update a mouse cursor's position directly
This commit is contained in:
NovaSquirrel 2021-06-30 17:39:34 -04:00
parent c0e249e993
commit 7af0bbcefc
7 changed files with 10 additions and 4 deletions

View file

@ -113,6 +113,7 @@ shared_ptr<BaseControlDevice> ControlManager::CreateControllerDevice(ControllerT
case ControllerType::SnesMouse: device.reset(new SnesMouse(console, port)); break;
case ControllerType::SuperScope: device.reset(new SuperScope(console, port, cfg.Controllers[port].Keys)); break;
case ControllerType::Multitap: device.reset(new Multitap(console, port, cfg.Controllers[port].Keys, cfg.Controllers[2].Keys, cfg.Controllers[3].Keys, cfg.Controllers[4].Keys)); break;
case ControllerType::SnesMouseButtonsOnly: device.reset(new SnesMouse(console, port)); break;
}
return device;

View file

@ -165,7 +165,7 @@ void InputHud::DrawControllers(OverscanDimensions overscan, int frameNumber)
hud->DrawRectangle(pos.X - 1, pos.Y - 1, 3, 3, 0x00111111, true, 1, frameNumber);
hud->DrawRectangle(pos.X - 1, pos.Y - 1, 3, 3, 0x80CCCCCC, false, 1, frameNumber);
}
} else if(controllerData[i].Type == ControllerType::SnesMouse) {
} else if(controllerData[i].Type == ControllerType::SnesMouse || controllerData[i].Type == ControllerType::SnesMouseButtonsOnly) {
if(cfg.DisplayInputPort[i]) {
SnesMouse mouse(_console, 0);
mouse.SetRawState(controllerData[i].State);

View file

@ -28,7 +28,8 @@ const vector<string> ControllerTypeNames = {
"SnesController",
"SnesMouse",
"SuperScope",
"Multitap"
"Multitap",
"SnesMouseButtonsOnly"
};
const vector<string> RamStateNames = {

View file

@ -157,7 +157,8 @@ enum class ControllerType
SnesController = 1,
SnesMouse = 2,
SuperScope = 3,
Multitap = 4
Multitap = 4,
SnesMouseButtonsOnly = 5
};
struct KeyMapping

View file

@ -132,7 +132,8 @@ namespace Mesen.GUI.Config
SnesController = 1,
SnesMouse = 2,
SuperScope = 3,
Multitap = 4
Multitap = 4,
SnesMouseButtonsOnly = 5
}
public enum InputDisplayPosition

View file

@ -862,6 +862,7 @@
<Value ID="SnesMouse">SNES Mouse</Value>
<Value ID="SuperScope">Super Scope</Value>
<Value ID="Multitap">Super Multitap</Value>
<Value ID="SnesMouseButtonsOnly">SNES Mouse (buttons only)</Value>
</Enum>
<Enum ID="VideoAspectRatio">
<Value ID="NoStretching">Default (No Stretching)</Value>

View file

@ -165,6 +165,7 @@ namespace Mesen.GUI.Emulation
switch(ConfigApi.GetControllerType(i)) {
case ControllerType.SnesMouse:
return true;
// Do not allow mouse capture on SnesMouseButtonsOnly because that's the whole point of that input method
}
}
return false;