Move Global controller adapters into InputManager, it's a step in the right direction

This commit is contained in:
adelikat 2020-03-15 17:50:48 -05:00
parent 1f617221fc
commit 6d5c444252
23 changed files with 226 additions and 229 deletions

View File

@ -359,7 +359,7 @@ namespace BizHawk.Client.ApiHawk
{
if (joypad.Inputs == 0)
{
AutoFireStickyXorAdapter joypadAdapter = Global.AutofireStickyXORAdapter;
AutoFireStickyXorAdapter joypadAdapter = Global.InputManager.AutofireStickyXorAdapter;
joypadAdapter.ClearStickies();
}
else
@ -368,7 +368,7 @@ namespace BizHawk.Client.ApiHawk
{
if (joypad.Inputs.HasFlag(button))
{
AutoFireStickyXorAdapter joypadAdapter = Global.AutofireStickyXORAdapter;
AutoFireStickyXorAdapter joypadAdapter = Global.InputManager.AutofireStickyXorAdapter;
joypadAdapter.SetSticky(
RunningSystem == SystemInfo.GB
? $"{JoypadConverter.ConvertBack(button, RunningSystem)}"
@ -408,7 +408,7 @@ namespace BizHawk.Client.ApiHawk
/// </summary>
private static void GetAllInputs()
{
var joypadAdapter = Global.AutofireStickyXORAdapter;
var joypadAdapter = Global.InputManager.AutofireStickyXorAdapter;
var pressedButtons = joypadAdapter.Definition.BoolButtons
.Where(b => joypadAdapter.IsPressed(b));

View File

@ -18,12 +18,12 @@ namespace BizHawk.Client.Common
public IDictionary<string, dynamic> Get(int? controller = null)
{
return Global.AutofireStickyXORAdapter.ToDictionary(controller);
return Global.InputManager.AutofireStickyXorAdapter.ToDictionary(controller);
}
public IDictionary<string, dynamic> GetImmediate(int? controller = null)
{
return Global.ActiveController.ToDictionary(controller);
return Global.InputManager.ActiveController.ToDictionary(controller);
}
public void SetFromMnemonicStr(string inputLogEntry)
@ -38,13 +38,13 @@ namespace BizHawk.Client.Common
LogCallback($"invalid mnemonic string: {inputLogEntry}");
return;
}
foreach (var button in lg.Definition.BoolButtons) Global.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
foreach (var floatButton in lg.Definition.FloatControls) Global.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
foreach (var button in lg.Definition.BoolButtons) Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
foreach (var floatButton in lg.Definition.FloatControls) Global.InputManager.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
}
public void Set(Dictionary<string, bool> buttons, int? controller = null)
{
foreach (var button in Global.ActiveController.Definition.BoolButtons)
foreach (var button in Global.InputManager.ActiveController.Definition.BoolButtons)
{
Set(button, buttons.TryGetValue(button, out var state) ? state : (bool?) null, controller);
}
@ -55,9 +55,9 @@ namespace BizHawk.Client.Common
try
{
var buttonToSet = controller == null ? button : $"P{controller} {button}";
if (state == null) Global.ButtonOverrideAdapter.UnSet(buttonToSet);
else Global.ButtonOverrideAdapter.SetButton(buttonToSet, state.Value);
Global.ActiveController.Overrides(Global.ButtonOverrideAdapter);
if (state == null) Global.InputManager.ButtonOverrideAdapter.UnSet(buttonToSet);
else Global.InputManager.ButtonOverrideAdapter.SetButton(buttonToSet, state.Value);
Global.InputManager.ActiveController.Overrides(Global.InputManager.ButtonOverrideAdapter);
}
catch
{
@ -74,7 +74,7 @@ namespace BizHawk.Client.Common
{
try
{
Global.StickyXORAdapter.SetFloat(controller == null ? control : $"P{controller} {control}", value);
Global.InputManager.StickyXorAdapter.SetFloat(controller == null ? control : $"P{controller} {control}", value);
}
catch
{

View File

@ -26,50 +26,6 @@ namespace BizHawk.Client.Common
public static InputManager InputManager { get; } = new InputManager();
// the movie will be spliced in between these if it is present
public static CopyControllerAdapter MovieInputSourceAdapter { get; } = new CopyControllerAdapter();
public static CopyControllerAdapter MovieOutputHardpoint { get; } = new CopyControllerAdapter();
public static MultitrackRewiringControllerAdapter MultitrackRewiringAdapter { get; } = new MultitrackRewiringControllerAdapter();
// don't take my word for it, since the final word is actually in RewireInputChain, but here is a guide...
// user -> Input -> ActiveController -> UDLR -> StickyXORPlayerInputAdapter -> TurboAdapter(TBD) -> Lua(?TBD?) -> ..
// .. -> MultitrackRewiringControllerAdapter -> MovieInputSourceAdapter -> (MovieSession) -> MovieOutputAdapter -> ControllerOutput(1) -> Game
// (1)->Input Display
// the original source controller, bound to the user, sort of the "input" port for the chain, i think
public static Controller ActiveController { get; set; }
// rapid fire version on the user controller, has its own key bindings and is OR'ed against ActiveController
public static AutofireController AutoFireController { get; set; }
// the "output" port for the controller chain.
public static CopyControllerAdapter ControllerOutput { get; } = new CopyControllerAdapter();
public static UdlrControllerAdapter UD_LR_ControllerAdapter { get; } = new UdlrControllerAdapter();
public static AutoFireStickyXorAdapter AutofireStickyXORAdapter { get; } = new AutoFireStickyXorAdapter();
/// <summary>
/// provides an opportunity to mutate the player's input in an autohold style
/// </summary>
public static StickyXorAdapter StickyXORAdapter { get; } = new StickyXorAdapter();
/// <summary>
/// Used to AND to another controller, used for <see cref="JoypadApi.Set(Dictionary{string, bool}, int?)">JoypadApi.Set</see>
/// </summary>
public static OverrideAdapter ButtonOverrideAdapter { get; } = new OverrideAdapter();
/// <summary>
/// fire off one-frame logical button clicks here. useful for things like ti-83 virtual pad and reset buttons
/// </summary>
public static ClickyVirtualPadController ClickyVirtualPadController { get; } = new ClickyVirtualPadController();
public static Controller ClientControls { get; set; }
// Input state for game controller inputs are coalesced here
// This relies on a client specific implementation!
public static SimpleController ControllerInputCoalescer { get; set; }
public static Dictionary<string, object> UserBag { get; set; } = new Dictionary<string, object>();
}
}

View File

@ -5,33 +5,77 @@ using BizHawk.Client.Common.InputAdapterExtensions;
namespace BizHawk.Client.Common
{
// don't take my word for it, but here is a guide...
// user -> Input -> ActiveController -> UDLR -> StickyXORPlayerInputAdapter -> TurboAdapter(TBD) -> Lua(?TBD?) -> ..
// .. -> MultitrackRewiringControllerAdapter -> MovieInputSourceAdapter -> (MovieSession) -> MovieOutputAdapter -> ControllerOutput(1) -> Game
// (1)->Input Display
public class InputManager
{
// the movie will be spliced in between these if it is present
public CopyControllerAdapter MovieInputSourceAdapter { get; } = new CopyControllerAdapter();
public CopyControllerAdapter MovieOutputHardpoint { get; } = new CopyControllerAdapter();
public MultitrackRewiringControllerAdapter MultitrackRewiringAdapter { get; } = new MultitrackRewiringControllerAdapter();
// the original source controller, bound to the user, sort of the "input" port for the chain, i think
public Controller ActiveController { get; set; } // TODO: private setter, add a method that takes both controllers in
// rapid fire version on the user controller, has its own key bindings and is OR'ed against ActiveController
public AutofireController AutoFireController { get; set; } // TODO: private setter, add a method that takes both controllers in
// the "output" port for the controller chain.
public CopyControllerAdapter ControllerOutput { get; } = new CopyControllerAdapter();
public UdlrControllerAdapter UdLRControllerAdapter { get; } = new UdlrControllerAdapter();
public AutoFireStickyXorAdapter AutofireStickyXorAdapter { get; } = new AutoFireStickyXorAdapter();
/// <summary>
/// provides an opportunity to mutate the player's input in an autohold style
/// </summary>
public StickyXorAdapter StickyXorAdapter { get; } = new StickyXorAdapter();
/// <summary>
/// Used to AND to another controller, used for <see cref="JoypadApi.Set(Dictionary{string, bool}, int?)">JoypadApi.Set</see>
/// </summary>
public OverrideAdapter ButtonOverrideAdapter { get; } = new OverrideAdapter();
/// <summary>
/// fire off one-frame logical button clicks here. useful for things like ti-83 virtual pad and reset buttons
/// </summary>
public ClickyVirtualPadController ClickyVirtualPadController { get; } = new ClickyVirtualPadController();
// Input state for game controller inputs are coalesced here
// This relies on a client specific implementation!
public SimpleController ControllerInputCoalescer { get; set; }
public Controller ClientControls { get; set; }
public void RewireInputChain()
{
Global.ControllerInputCoalescer.Clear();
Global.ControllerInputCoalescer.Definition = Global.ActiveController.Definition;
ControllerInputCoalescer.Clear();
ControllerInputCoalescer.Definition = ActiveController.Definition;
Global.UD_LR_ControllerAdapter.Source = Global.ActiveController.Or(Global.AutoFireController);
UdLRControllerAdapter.Source = ActiveController.Or(AutoFireController);
Global.StickyXORAdapter.Source = Global.UD_LR_ControllerAdapter;
Global.AutofireStickyXORAdapter.Source = Global.StickyXORAdapter;
StickyXorAdapter.Source = UdLRControllerAdapter;
AutofireStickyXorAdapter.Source = StickyXorAdapter;
Global.MultitrackRewiringAdapter.Source = Global.AutofireStickyXORAdapter;
Global.MovieInputSourceAdapter.Source = Global.MultitrackRewiringAdapter;
Global.ControllerOutput.Source = Global.MovieOutputHardpoint;
MultitrackRewiringAdapter.Source = AutofireStickyXorAdapter;
MovieInputSourceAdapter.Source = MultitrackRewiringAdapter;
ControllerOutput.Source = MovieOutputHardpoint;
Global.MovieSession.MovieControllerAdapter.Definition = Global.MovieInputSourceAdapter.Definition;
Global.MovieSession.MovieControllerAdapter.Definition = MovieInputSourceAdapter.Definition;
// connect the movie session before MovieOutputHardpoint if it is doing anything
// otherwise connect the MovieInputSourceAdapter to it, effectively bypassing the movie session
if (Global.MovieSession != null)
{
Global.MovieOutputHardpoint.Source = Global.MovieSession.MovieControllerAdapter;
MovieOutputHardpoint.Source = Global.MovieSession.MovieControllerAdapter;
}
else
{
Global.MovieOutputHardpoint.Source = Global.MovieInputSourceAdapter;
MovieOutputHardpoint.Source = MovieInputSourceAdapter;
}
}
@ -39,13 +83,13 @@ namespace BizHawk.Client.Common
{
var def = emulator.ControllerDefinition;
Global.ActiveController = BindToDefinition(def, config.AllTrollers, config.AllTrollersAnalog);
Global.AutoFireController = BindToDefinitionAF(def, emulator, config.AllTrollersAutoFire);
ActiveController = BindToDefinition(def, config.AllTrollers, config.AllTrollersAnalog);
AutoFireController = BindToDefinitionAF(def, emulator, config.AllTrollersAutoFire);
// allow propagating controls that are in the current controller definition but not in the prebaked one
// these two lines shouldn't be required anymore under the new system?
Global.ActiveController.ForceType(new ControllerDefinition(def));
Global.ClickyVirtualPadController.Definition = new ControllerDefinition(def);
ActiveController.ForceType(new ControllerDefinition(def));
ClickyVirtualPadController.Definition = new ControllerDefinition(def);
RewireInputChain();
}

View File

@ -147,7 +147,7 @@ namespace BizHawk.Client.Common
MovieControllerAdapter.LatchFromSource(input);
if (MultiTrack.IsActive)
{
Global.MultitrackRewiringAdapter.Source = MovieControllerAdapter;
Global.InputManager.MultitrackRewiringAdapter.Source = MovieControllerAdapter;
}
}
@ -237,7 +237,7 @@ namespace BizHawk.Client.Common
{
if (!Movie.IsActive())
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
}
else if (Movie.IsFinished())
{
@ -248,7 +248,7 @@ namespace BizHawk.Client.Common
}
else
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
}
}
else if (Movie.IsPlaying())
@ -264,20 +264,20 @@ namespace BizHawk.Client.Common
// Movie may go into finished mode as a result from latching
if (!Movie.IsFinished())
{
if (Global.ClientControls.IsPressed("Scrub Input"))
if (Global.InputManager.ClientControls.IsPressed("Scrub Input"))
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
ClearFrame();
}
else if (Global.Config.MoviePlaybackPokeMode)
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
var lg = Movie.LogGeneratorInstance();
lg.SetSource(Global.MovieOutputHardpoint);
lg.SetSource(Global.InputManager.MovieOutputHardpoint);
if (!lg.IsEmpty)
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
Movie.PokeFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
Movie.PokeFrame(Global.Emulator.Frame, Global.InputManager.MovieOutputHardpoint);
}
else
{
@ -305,17 +305,17 @@ namespace BizHawk.Client.Common
{
if (MultiTrack.IsActive)
{
LatchMultitrackPlayerInput(Global.MultitrackRewiringAdapter);
LatchMultitrackPlayerInput(Global.InputManager.MultitrackRewiringAdapter);
}
else
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
}
}
// the movie session makes sure that the correct input has been read and merged to its MovieControllerAdapter;
// this has been wired to Global.MovieOutputHardpoint in RewireInputChain
Movie.RecordFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint);
Movie.RecordFrame(Global.Emulator.Frame, Global.InputManager.MovieOutputHardpoint);
}
public void HandleMovieAfterFrameLoop()
@ -368,7 +368,7 @@ namespace BizHawk.Client.Common
}
else if (Movie.IsFinished())
{
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
}
}
else

View File

@ -153,7 +153,7 @@ namespace BizHawk.Client.Common
{
foreach (var button in Definition.BoolButtons)
{
_myBoolButtons[button] = Global.AutofireStickyXORAdapter.IsSticky(button);
_myBoolButtons[button] = Global.InputManager.AutofireStickyXorAdapter.IsSticky(button);
}
// float controls don't have sticky logic, so latch default value

View File

@ -289,7 +289,7 @@ namespace BizHawk.Client.Common
protected void WriteRawInputLog(TextWriter writer)
{
var lg = new Bk2LogEntryGenerator(LogKey);
lg.SetSource(Global.MovieOutputHardpoint);
lg.SetSource(Global.InputManager.MovieOutputHardpoint);
writer.WriteLine(lg.GenerateLogKey());

View File

@ -396,7 +396,7 @@ namespace BizHawk.Client.Common
Global.MovieSession.MovieControllerAdapter.LatchSticky();
var lg = LogGeneratorInstance();
lg.SetSource(Global.MovieOutputHardpoint); // account for autohold. needs autohold pattern to be already recorded in the current frame
lg.SetSource(Global.InputManager.MovieOutputHardpoint); // account for autohold. needs autohold pattern to be already recorded in the current frame
for (int i = 0; i < numFrames; i++)
{

View File

@ -11,7 +11,7 @@ namespace BizHawk.Client.EmuHawk
public Dictionary<string, bool> Get()
{
var buttons = new Dictionary<string, bool>();
foreach (var kvp in Global.ControllerInputCoalescer.BoolButtons().Where(kvp => kvp.Value)) buttons[kvp.Key] = true;
foreach (var kvp in Global.InputManager.ControllerInputCoalescer.BoolButtons().Where(kvp => kvp.Value)) buttons[kvp.Key] = true;
return buttons;
}

View File

@ -197,7 +197,7 @@ namespace BizHawk.Client.EmuHawk
public string InputStrImmediate()
{
var lg = Global.MovieSession.LogGeneratorInstance();
lg.SetSource(Global.AutofireStickyXORAdapter);
lg.SetSource(Global.InputManager.AutofireStickyXorAdapter);
return lg.GenerateInputDisplay();
}
@ -226,7 +226,7 @@ namespace BizHawk.Client.EmuHawk
var lg = Global.MovieSession.LogGeneratorInstance();
lg.SetSource(Global.AutofireStickyXORAdapter.Or(m));
lg.SetSource(Global.InputManager.AutofireStickyXorAdapter.Or(m));
return lg.GenerateInputDisplay();
}
@ -246,7 +246,7 @@ namespace BizHawk.Client.EmuHawk
: Global.MovieSession.MovieControllerInstance();
var lg = Global.MovieSession.LogGeneratorInstance();
lg.SetSource(Global.AutofireStickyXORAdapter.And(m));
lg.SetSource(Global.InputManager.AutofireStickyXorAdapter.And(m));
return lg.GenerateInputDisplay();
}
@ -323,7 +323,7 @@ namespace BizHawk.Client.EmuHawk
// basically we're tinting whatever is pressed because it's sticky specially
// in order to achieve this we want to avoid drawing anything pink that isn't actually held down right now
// so we make an AND adapter and combine it using immediate & sticky
var autoString = MakeStringFor(Global.StickyXORAdapter.Source.Xor(Global.AutofireStickyXORAdapter).And(Global.AutofireStickyXORAdapter));
var autoString = MakeStringFor(Global.InputManager.StickyXorAdapter.Source.Xor(Global.InputManager.AutofireStickyXorAdapter).And(Global.InputManager.AutofireStickyXorAdapter));
g.DrawString(autoString, MessageFont, autoColor, point.X, point.Y);
//recolor everything that's changed from the previous input
@ -358,16 +358,16 @@ namespace BizHawk.Client.EmuHawk
DrawOsdMessage(g, rerecordCount, FixedMessagesColor, point.X, point.Y);
}
if (Global.ClientControls["Autohold"] || Global.ClientControls["Autofire"])
if (Global.InputManager.ClientControls["Autohold"] || Global.InputManager.ClientControls["Autofire"])
{
var sb = new StringBuilder("Held: ");
foreach (string sticky in Global.StickyXORAdapter.CurrentStickies)
foreach (string sticky in Global.InputManager.StickyXorAdapter.CurrentStickies)
{
sb.Append(sticky).Append(' ');
}
foreach (string autoSticky in Global.AutofireStickyXORAdapter.CurrentStickies)
foreach (string autoSticky in Global.InputManager.AutofireStickyXorAdapter.CurrentStickies)
{
sb
.Append("Auto-")

View File

@ -1011,7 +1011,7 @@ namespace BizHawk.Client.EmuHawk
private void AutofireMenuItem_Click(object sender, EventArgs e)
{
using var form = new AutofireConfig(Config, AutoFireController, AutofireStickyXORAdapter);
using var form = new AutofireConfig(Config, InputManager.AutoFireController, InputManager.AutofireStickyXorAdapter);
var result = form.ShowDialog();
AddOnScreenMessage(result.IsOk()
? "Autofire settings saved"
@ -1658,7 +1658,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click("FDS Eject");
InputManager.ClickyVirtualPadController.Click("FDS Eject");
AddOnScreenMessage("FDS disk ejected.");
}
}
@ -1670,7 +1670,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click("Insert Coin P1");
InputManager.ClickyVirtualPadController.Click("Insert Coin P1");
AddOnScreenMessage("P1 Coin Inserted");
}
}
@ -1683,7 +1683,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click("Insert Coin P2");
InputManager.ClickyVirtualPadController.Click("Insert Coin P2");
AddOnScreenMessage("P2 Coin Inserted");
}
}
@ -1696,7 +1696,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click("Service Switch");
InputManager.ClickyVirtualPadController.Click("Service Switch");
AddOnScreenMessage("Service Switch Pressed");
}
}

View File

@ -206,7 +206,7 @@ namespace BizHawk.Client.EmuHawk
MessageCallback = AddOnScreenMessage
};
Global.ControllerInputCoalescer = new ControllerInputCoalescer();
Global.InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
Global.FirmwareManager = new FirmwareManager();
MovieSession = new MovieSession
{
@ -325,9 +325,9 @@ namespace BizHawk.Client.EmuHawk
Input.Initialize(this);
InitControls();
Global.ActiveController = new Controller(NullController.Instance.Definition);
Global.AutoFireController = _autofireNullControls;
Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig();
Global.InputManager.ActiveController = new Controller(NullController.Instance.Definition);
Global.InputManager.AutoFireController = _autofireNullControls;
Global.InputManager.AutofireStickyXorAdapter.SetOnOffPatternFromConfig();
try
{
GlobalWin.Sound = new Sound(Handle);
@ -563,28 +563,28 @@ namespace BizHawk.Client.EmuHawk
// handle events and dispatch as a hotkey action, or a hotkey button, or an input button
ProcessInput();
ClientControls.LatchFromPhysical(_hotkeyCoalescer);
InputManager.ClientControls.LatchFromPhysical(_hotkeyCoalescer);
Global.ActiveController.LatchFromPhysical(Global.ControllerInputCoalescer);
Global.InputManager.ActiveController.LatchFromPhysical(Global.InputManager.ControllerInputCoalescer);
Global.ActiveController.ApplyAxisConstraints(
Global.InputManager.ActiveController.ApplyAxisConstraints(
(Emulator is N64 && Config.N64UseCircularAnalogConstraint) ? "Natural Circle" : null);
Global.ActiveController.OR_FromLogical(ClickyVirtualPadController);
AutoFireController.LatchFromPhysical(Global.ControllerInputCoalescer);
Global.InputManager.ActiveController.OR_FromLogical(InputManager.ClickyVirtualPadController);
InputManager.AutoFireController.LatchFromPhysical(Global.InputManager.ControllerInputCoalescer);
if (ClientControls["Autohold"])
if (InputManager.ClientControls["Autohold"])
{
Global.StickyXORAdapter.MassToggleStickyState(Global.ActiveController.PressedButtons);
Global.AutofireStickyXORAdapter.MassToggleStickyState(AutoFireController.PressedButtons);
Global.InputManager.StickyXorAdapter.MassToggleStickyState(Global.InputManager.ActiveController.PressedButtons);
Global.InputManager.AutofireStickyXorAdapter.MassToggleStickyState(InputManager.AutoFireController.PressedButtons);
}
else if (ClientControls["Autofire"])
else if (InputManager.ClientControls["Autofire"])
{
Global.AutofireStickyXORAdapter.MassToggleStickyState(Global.ActiveController.PressedButtons);
Global.InputManager.AutofireStickyXorAdapter.MassToggleStickyState(Global.InputManager.ActiveController.PressedButtons);
}
// autohold/autofire must not be affected by the following inputs
Global.ActiveController.Overrides(Global.ButtonOverrideAdapter);
Global.InputManager.ActiveController.Overrides(Global.InputManager.ButtonOverrideAdapter);
if (Tools.Has<LuaConsole>() && !SuppressLua)
{
@ -734,7 +734,7 @@ namespace BizHawk.Client.EmuHawk
public bool IsSeeking => PauseOnFrame.HasValue;
private bool IsTurboSeeking => PauseOnFrame.HasValue && Config.TurboSeek;
public bool IsTurboing => ClientControls["Turbo"] || IsTurboSeeking;
public bool IsTurboing => InputManager.ClientControls["Turbo"] || IsTurboSeeking;
#endregion
@ -747,8 +747,8 @@ namespace BizHawk.Client.EmuHawk
public void ClearHolds()
{
Global.StickyXORAdapter.ClearStickies();
Global.AutofireStickyXORAdapter.ClearStickies();
Global.InputManager.StickyXorAdapter.ClearStickies();
Global.InputManager.AutofireStickyXorAdapter.ClearStickies();
if (Tools.Has<VirtualpadTool>())
{
@ -844,14 +844,10 @@ namespace BizHawk.Client.EmuHawk
private Sound Sound => GlobalWin.Sound;
private CheatCollection CheatList => Global.CheatList;
private AutofireController AutoFireController => Global.AutoFireController;
private AutoFireStickyXorAdapter AutofireStickyXORAdapter => Global.AutofireStickyXORAdapter;
private ClickyVirtualPadController ClickyVirtualPadController => Global.ClickyVirtualPadController;
private Rewinder Rewinder { get; }
private FirmwareManager FirmwareManager => Global.FirmwareManager;
private Controller ClientControls => Global.ClientControls;
protected override void OnActivated(EventArgs e)
{
@ -867,7 +863,7 @@ namespace BizHawk.Client.EmuHawk
private void ProcessInput()
{
var conInput = (ControllerInputCoalescer)Global.ControllerInputCoalescer;
var conInput = (ControllerInputCoalescer)Global.InputManager.ControllerInputCoalescer;
for (; ; )
{
@ -884,7 +880,7 @@ namespace BizHawk.Client.EmuHawk
// TODO - wonder what happens if we pop up something interactive as a response to one of these hotkeys? may need to purge further processing
// look for hotkey bindings for this key
var triggers = ClientControls.SearchBindings(ie.LogicalButton.ToString());
var triggers = InputManager.ClientControls.SearchBindings(ie.LogicalButton.ToString());
if (triggers.Count == 0)
{
// Maybe it is a system alt-key which hasn't been overridden
@ -933,7 +929,7 @@ namespace BizHawk.Client.EmuHawk
break;
case 1: // Input overrides Hotkeys
conInput.Receive(ie);
if (!Global.ActiveController.HasBinding(ie.LogicalButton.ToString()))
if (!Global.InputManager.ActiveController.HasBinding(ie.LogicalButton.ToString()))
{
handled = false;
if (ie.EventType == Input.InputEventType.Press)
@ -1174,7 +1170,7 @@ namespace BizHawk.Client.EmuHawk
// prohibit this operation if the current controls include LMouse
if (allowSuppress)
{
if (Global.ActiveController.HasBinding("WMouse L"))
if (Global.InputManager.ActiveController.HasBinding("WMouse L"))
{
return;
}
@ -1977,7 +1973,7 @@ namespace BizHawk.Client.EmuHawk
controls.BindMulti(b.DisplayName, b.Bindings);
}
Global.ClientControls = controls;
Global.InputManager.ClientControls = controls;
_autofireNullControls = new AutofireController(NullController.Instance.Definition, Emulator);
}
@ -2051,8 +2047,8 @@ namespace BizHawk.Client.EmuHawk
// skips outputting the audio. There's also a third way which is when no throttle
// method is selected, but the clock throttle determines that by itself and
// everything appears normal here.
var rewind = Rewinder.RewindActive && (ClientControls["Rewind"] || PressRewind);
var fastForward = ClientControls["Fast Forward"] || FastForward;
var rewind = Rewinder.RewindActive && (InputManager.ClientControls["Rewind"] || PressRewind);
var fastForward = InputManager.ClientControls["Fast Forward"] || FastForward;
var turbo = IsTurboing;
int speedPercent = fastForward ? Config.SpeedPercentAlternate : Config.SpeedPercent;
@ -2415,7 +2411,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click("Reset");
InputManager.ClickyVirtualPadController.Click("Reset");
AddOnScreenMessage("Reset button pressed.");
}
}
@ -2428,7 +2424,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click("Power");
InputManager.ClickyVirtualPadController.Click("Power");
AddOnScreenMessage("Power button pressed.");
}
}
@ -2710,7 +2706,7 @@ namespace BizHawk.Client.EmuHawk
{
if (MovieSession.Movie.Mode != MovieMode.Play)
{
ClickyVirtualPadController.Click(button);
InputManager.ClickyVirtualPadController.Click(button);
AddOnScreenMessage(msg);
}
}
@ -2842,7 +2838,7 @@ namespace BizHawk.Client.EmuHawk
runFrame = true;
}
if (ClientControls["Frame Advance"] || PressFrameAdvance || HoldFrameAdvance)
if (InputManager.ClientControls["Frame Advance"] || PressFrameAdvance || HoldFrameAdvance)
{
_runloopFrameAdvance = true;
@ -2887,7 +2883,7 @@ namespace BizHawk.Client.EmuHawk
if (runFrame || force)
{
var isFastForwarding = ClientControls["Fast Forward"] || IsTurboing || InvisibleEmulation;
var isFastForwarding = InputManager.ClientControls["Fast Forward"] || IsTurboing || InvisibleEmulation;
var isFastForwardingOrRewinding = isFastForwarding || isRewinding || _unthrottled;
if (isFastForwardingOrRewinding != _lastFastForwardingOrRewinding)
@ -2903,8 +2899,8 @@ namespace BizHawk.Client.EmuHawk
CheatList.Pulse();
// zero 03-may-2014 - moved this before call to UpdateToolsBefore(), since it seems to clear the state which a lua event.framestart is going to want to alter
ClickyVirtualPadController.FrameTick();
Global.ButtonOverrideAdapter.FrameTick();
InputManager.ClickyVirtualPadController.FrameTick();
Global.InputManager.ButtonOverrideAdapter.FrameTick();
if (Tools.Has<LuaConsole>() && !SuppressLua)
{
@ -2967,7 +2963,7 @@ namespace BizHawk.Client.EmuHawk
}
bool render = !InvisibleEmulation && (!_throttle.skipNextFrame || (_currAviWriter?.UsesVideo ?? false));
bool newFrame = Emulator.FrameAdvance(Global.ControllerOutput, render, renderSound);
bool newFrame = Emulator.FrameAdvance(Global.InputManager.ControllerOutput, render, renderSound);
MovieSession.HandleMovieAfterFrameLoop();
@ -2985,10 +2981,10 @@ namespace BizHawk.Client.EmuHawk
if (IsLagFrame && Config.AutofireLagFrames)
{
AutoFireController.IncrementStarts();
InputManager.AutoFireController.IncrementStarts();
}
Global.AutofireStickyXORAdapter.IncrementLoops(IsLagFrame);
Global.InputManager.AutofireStickyXorAdapter.IncrementLoops(IsLagFrame);
PressFrameAdvance = false;
@ -3045,7 +3041,7 @@ namespace BizHawk.Client.EmuHawk
}
}
if (ClientControls["Rewind"] || PressRewind)
if (InputManager.ClientControls["Rewind"] || PressRewind)
{
UpdateToolsAfter();
}
@ -3816,9 +3812,9 @@ namespace BizHawk.Client.EmuHawk
Rewinder.Initialize();
Global.StickyXORAdapter.ClearStickies();
Global.StickyXORAdapter.ClearStickyFloats();
Global.AutofireStickyXORAdapter.ClearStickies();
Global.InputManager.StickyXorAdapter.ClearStickies();
Global.InputManager.StickyXorAdapter.ClearStickyFloats();
Global.InputManager.AutofireStickyXorAdapter.ClearStickies();
RewireSound();
Tools.UpdateCheatRelatedTools(null, null);
@ -3940,8 +3936,8 @@ namespace BizHawk.Client.EmuHawk
Emulator.Dispose();
Emulator = new NullEmulator();
ClientApi.UpdateEmulatorAndVP(Emulator);
Global.ActiveController = new Controller(NullController.Instance.Definition);
Global.AutoFireController = _autofireNullControls;
Global.InputManager.ActiveController = new Controller(NullController.Instance.Definition);
Global.InputManager.AutoFireController = _autofireNullControls;
RewireSound();
RebootStatusBarIcon.Visible = false;
GameIsClosing = false;
@ -3956,7 +3952,6 @@ namespace BizHawk.Client.EmuHawk
if (Tools.AskSave())
{
CloseGame(clearSram);
var coreComm = CreateCoreComm();
Emulator = new NullEmulator();
Global.Game = GameInfo.NullInstance;
@ -4068,7 +4063,7 @@ namespace BizHawk.Client.EmuHawk
Tools.UpdateToolsBefore(fromLua);
UpdateToolsAfter(fromLua);
UpdateToolsLoadstate();
AutoFireController.ClearStarts();
InputManager.AutoFireController.ClearStarts();
if (!IsRewindSlave && MovieSession.Movie.IsActive())
{
@ -4413,7 +4408,7 @@ namespace BizHawk.Client.EmuHawk
if (IsRewindSlave)
{
if (ClientControls["Rewind"] || PressRewind)
if (InputManager.ClientControls["Rewind"] || PressRewind)
{
if (_frameRewindTimestamp == 0)
{
@ -4461,7 +4456,7 @@ namespace BizHawk.Client.EmuHawk
return isRewinding;
}
if (Rewinder.RewindActive && (ClientControls["Rewind"] || PressRewind))
if (Rewinder.RewindActive && (InputManager.ClientControls["Rewind"] || PressRewind))
{
if (EmulatorPaused)
{

View File

@ -785,7 +785,7 @@ namespace BizHawk.Client.EmuHawk
foreach (var button in lg.Definition.BoolButtons)
{
// TODO: make an input adapter specifically for the bot?
Global.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
}
}
else
@ -923,7 +923,7 @@ namespace BizHawk.Client.EmuHawk
double probability = _cachedControlProbabilities[button];
bool pressed = !(rand.Next(100) < probability);
Global.ClickyVirtualPadController.SetBool(button, pressed);
Global.InputManager.ClickyVirtualPadController.SetBool(button, pressed);
}
_currentBotAttempt.Log.Add(_logGenerator.GenerateLogEntry());
@ -977,7 +977,7 @@ namespace BizHawk.Client.EmuHawk
MessageLabel.Text = "Running...";
_cachedControlProbabilities = ControlProbabilities;
_logGenerator = Global.MovieSession.LogGeneratorInstance();
_logGenerator.SetSource(Global.ClickyVirtualPadController);
_logGenerator.SetSource(Global.InputManager.ClickyVirtualPadController);
}
private string CanStart()

View File

@ -469,7 +469,7 @@ namespace BizHawk.Client.EmuHawk
}
AutoPatternBool p = BoolPatterns[index];
Global.AutofireStickyXORAdapter.SetSticky(button, isOn.Value, p);
Global.InputManager.AutofireStickyXorAdapter.SetSticky(button, isOn.Value, p);
}
else
{
@ -489,7 +489,7 @@ namespace BizHawk.Client.EmuHawk
}
AutoPatternFloat p = FloatPatterns[index];
Global.AutofireStickyXORAdapter.SetFloat(button, value, p);
Global.InputManager.AutofireStickyXorAdapter.SetFloat(button, value, p);
}
}

View File

@ -811,7 +811,7 @@ namespace BizHawk.Client.EmuHawk
{
foreach (var column in TasView.VisibleColumns)
{
if (Global.StickyXORAdapter.IsSticky(column.Name))
if (Global.InputManager.StickyXorAdapter.IsSticky(column.Name))
{
column.Emphasis = true;
}

View File

@ -32,12 +32,12 @@ namespace BizHawk.Client.EmuHawk
foreach (var button in lg.Definition.BoolButtons)
{
Global.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
}
foreach (var floatButton in lg.Definition.FloatControls)
{
Global.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
Global.InputManager.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
}
return lg;

View File

@ -20,6 +20,8 @@ namespace BizHawk.Client.EmuHawk
[ConfigPersist]
public bool TI83ToolTips { get; set; } = true;
private ClickyVirtualPadController ClickyVirtualPadController => Global.InputManager.ClickyVirtualPadController;
private void TI83KeyPad_Load(object sender, EventArgs e)
{
if (TI83ToolTips)
@ -147,252 +149,252 @@ namespace BizHawk.Client.EmuHawk
private void EnterButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("ENTER");
ClickyVirtualPadController.Click("ENTER");
}
private void DashButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("DASH");
ClickyVirtualPadController.Click("DASH");
}
private void OneButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("1");
ClickyVirtualPadController.Click("1");
}
private void TwoButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("2");
ClickyVirtualPadController.Click("2");
}
private void ThreeButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("3");
ClickyVirtualPadController.Click("3");
}
private void FourButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("4");
ClickyVirtualPadController.Click("4");
}
private void FiveButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("5");
ClickyVirtualPadController.Click("5");
}
private void SixButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("6");
ClickyVirtualPadController.Click("6");
}
private void SevenButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("7");
ClickyVirtualPadController.Click("7");
}
private void EightButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("8");
ClickyVirtualPadController.Click("8");
}
private void NineButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("9");
ClickyVirtualPadController.Click("9");
}
private void OnButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("ON");
ClickyVirtualPadController.Click("ON");
}
private void StoButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("STO");
ClickyVirtualPadController.Click("STO");
}
private void PlusButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("PLUS");
ClickyVirtualPadController.Click("PLUS");
}
private void LnButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("LN");
ClickyVirtualPadController.Click("LN");
}
private void MinusButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("MINUS");
ClickyVirtualPadController.Click("MINUS");
}
private void LogButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("LOG");
ClickyVirtualPadController.Click("LOG");
}
private void MultiplyButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("MULTIPLY");
ClickyVirtualPadController.Click("MULTIPLY");
}
private void SquaredButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("SQUARED");
ClickyVirtualPadController.Click("SQUARED");
}
private void CommaButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("COMMA");
ClickyVirtualPadController.Click("COMMA");
}
private void ParaOpenButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("PARAOPEN");
ClickyVirtualPadController.Click("PARAOPEN");
}
private void ParaCloseButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("PARACLOSE");
ClickyVirtualPadController.Click("PARACLOSE");
}
private void DivideButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("DIVIDE");
ClickyVirtualPadController.Click("DIVIDE");
}
private void Neg1Button_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("NEG1");
ClickyVirtualPadController.Click("NEG1");
}
private void SinButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("SIN");
ClickyVirtualPadController.Click("SIN");
}
private void CosButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("COS");
ClickyVirtualPadController.Click("COS");
}
private void TanButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("TAN");
ClickyVirtualPadController.Click("TAN");
}
private void ExpButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("EXP");
ClickyVirtualPadController.Click("EXP");
}
private void MathButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("MATH");
ClickyVirtualPadController.Click("MATH");
}
private void MaxtrixButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("MATRIX");
ClickyVirtualPadController.Click("MATRIX");
}
private void PrgmButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("PRGM");
ClickyVirtualPadController.Click("PRGM");
}
private void VarsButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("VARS");
ClickyVirtualPadController.Click("VARS");
}
private void ClearButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("CLEAR");
ClickyVirtualPadController.Click("CLEAR");
}
private void AlphaButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("ALPHA");
ClickyVirtualPadController.Click("ALPHA");
}
private void XButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("X");
ClickyVirtualPadController.Click("X");
}
private void StatButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("STAT");
ClickyVirtualPadController.Click("STAT");
}
private void SecondButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("2ND");
ClickyVirtualPadController.Click("2ND");
}
private void ModeButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("MODE");
ClickyVirtualPadController.Click("MODE");
}
private void DelButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("DEL");
ClickyVirtualPadController.Click("DEL");
}
private void LeftButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("LEFT");
ClickyVirtualPadController.Click("LEFT");
}
private void DownButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("DOWN");
ClickyVirtualPadController.Click("DOWN");
}
private void RightButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("RIGHT");
ClickyVirtualPadController.Click("RIGHT");
}
private void UpButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("UP");
ClickyVirtualPadController.Click("UP");
}
private void YButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("Y");
ClickyVirtualPadController.Click("Y");
}
private void WindowButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("WINDOW");
ClickyVirtualPadController.Click("WINDOW");
}
private void ZoomButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("ZOOM");
ClickyVirtualPadController.Click("ZOOM");
}
private void TraceButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("TRACE");
ClickyVirtualPadController.Click("TRACE");
}
private void GraphButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("GRAPH");
ClickyVirtualPadController.Click("GRAPH");
}
private void PeriodButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("DOT");
ClickyVirtualPadController.Click("DOT");
}
private void ZeroButton_Click(object sender, EventArgs e)
{
Global.ClickyVirtualPadController.Click("0");
ClickyVirtualPadController.Click("0");
}
#endregion

View File

@ -34,7 +34,7 @@ namespace BizHawk.Client.EmuHawk
public void UpdateValues()
{
if (AnalogTrackBar.Value != (int)Global.StickyXORAdapter.GetFloat(Name))
if (AnalogTrackBar.Value != (int)Global.InputManager.StickyXorAdapter.GetFloat(Name))
{
RefreshWidgets();
}
@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk
public void Clear()
{
Global.StickyXORAdapter.Unset(Name);
Global.InputManager.StickyXorAdapter.Unset(Name);
IsSet = false;
}
@ -217,7 +217,7 @@ namespace BizHawk.Client.EmuHawk
if (!_programmaticallyChangingValue)
{
CurrentValue = AnalogTrackBar.Value;
Global.StickyXORAdapter.SetFloat(Name, AnalogTrackBar.Value);
Global.InputManager.StickyXorAdapter.SetFloat(Name, AnalogTrackBar.Value);
}
}
@ -226,7 +226,7 @@ namespace BizHawk.Client.EmuHawk
if (!_isSet)
{
_programmaticallyChangingValue = true;
AnalogTrackBar.Value = (int)Global.StickyXORAdapter.GetFloat(Name);
AnalogTrackBar.Value = (int)Global.InputManager.StickyXorAdapter.GetFloat(Name);
ValueLabel.Text = AnalogTrackBar.Value.ToString();
_programmaticallyChangingValue = false;
}

View File

@ -78,10 +78,10 @@ namespace BizHawk.Client.EmuHawk
manualR.Value = 0;
manualTheta.Value = 0;
//see HOOMOO
Global.AutofireStickyXORAdapter.SetSticky(AnalogStick.XName, false);
Global.StickyXORAdapter.Unset(AnalogStick.XName);
Global.AutofireStickyXORAdapter.SetSticky(AnalogStick.YName, false);
Global.StickyXORAdapter.Unset(AnalogStick.YName);
Global.InputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.XName, false);
Global.InputManager.StickyXorAdapter.Unset(AnalogStick.XName);
Global.InputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.YName, false);
Global.InputManager.StickyXorAdapter.Unset(AnalogStick.YName);
AnalogStick.HasValue = false;
}

View File

@ -32,8 +32,8 @@ namespace BizHawk.Client.EmuHawk
RightClicked = false;
Checked = false;
//HOOMOO
Global.AutofireStickyXORAdapter.SetSticky(Name, false);
Global.StickyXORAdapter.SetSticky(Name, false);
Global.InputManager.AutofireStickyXorAdapter.SetSticky(Name, false);
Global.InputManager.StickyXorAdapter.SetSticky(Name, false);
}
}
@ -136,7 +136,7 @@ namespace BizHawk.Client.EmuHawk
{
if (RightClicked)
{
Global.AutofireStickyXORAdapter.SetSticky(Name, Checked);
Global.InputManager.AutofireStickyXorAdapter.SetSticky(Name, Checked);
if (Checked == false)
{
@ -145,7 +145,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
Global.StickyXORAdapter.SetSticky(Name, Checked);
Global.InputManager.StickyXorAdapter.SetSticky(Name, Checked);
if (Checked == false)
{

View File

@ -140,11 +140,11 @@ namespace BizHawk.Client.EmuHawk
{
#if false // not a valid way to fight unselection, it results in craptons of ping-ponging logic and eventual malfunction
if (lvDiscs.SelectedIndices.Count == 0) lvDiscs.SelectedIndices.Add(0);
Global.StickyXORAdapter.SetFloat(_discSelectName, lvDiscs.SelectedIndices[0]);
Global.InputManager.StickyXORAdapter.SetFloat(_discSelectName, lvDiscs.SelectedIndices[0]);
#endif
//emergency measure: if no selection, set no disc
Global.StickyXORAdapter.SetFloat(_discSelectName, lvDiscs.SelectedIndices.Count == 0 ? 0 : lvDiscs.SelectedIndices[0]);
Global.InputManager.StickyXorAdapter.SetFloat(_discSelectName, lvDiscs.SelectedIndices.Count == 0 ? 0 : lvDiscs.SelectedIndices[0]);
}
private void btnClose_Click(object sender, EventArgs e)

View File

@ -41,8 +41,8 @@ namespace BizHawk.Client.EmuHawk
public void Clear()
{
Global.StickyXORAdapter.Unset(XName);
Global.StickyXORAdapter.Unset(YName);
Global.InputManager.StickyXorAdapter.Unset(XName);
Global.InputManager.StickyXorAdapter.Unset(YName);
_overrideX = null;
_overrideY = null;
_isSet = false;
@ -164,7 +164,7 @@ namespace BizHawk.Client.EmuHawk
public int X
{
get => _overrideX ?? (int)(Global.StickyXORAdapter.GetFloat(XName) / MultiplierX);
get => _overrideX ?? (int)(Global.InputManager.StickyXorAdapter.GetFloat(XName) / MultiplierX);
set
{
if (value < 0)
@ -181,13 +181,13 @@ namespace BizHawk.Client.EmuHawk
XNumeric.Value = XNumeric.Maximum;
}
Global.StickyXORAdapter.SetFloat(XName, (int)((float)XNumeric.Value * MultiplierX));
Global.InputManager.StickyXorAdapter.SetFloat(XName, (int)((float)XNumeric.Value * MultiplierX));
_isSet = true;
}
}
public int Y
{
get => _overrideY ?? (int)(Global.StickyXORAdapter.GetFloat(YName) / MultiplierY);
get => _overrideY ?? (int)(Global.InputManager.StickyXorAdapter.GetFloat(YName) / MultiplierY);
set
{
if (value < 0)
@ -203,7 +203,7 @@ namespace BizHawk.Client.EmuHawk
YNumeric.Value = YNumeric.Maximum;
}
Global.StickyXORAdapter.SetFloat(YName, (int)((float)YNumeric.Value * MultiplierY));
Global.InputManager.StickyXorAdapter.SetFloat(YName, (int)((float)YNumeric.Value * MultiplierY));
_isSet = true;
}
}

View File

@ -164,8 +164,8 @@ namespace BizHawk.Client.EmuHawk
private void SetAnalog()
{
Global.StickyXORAdapter.SetFloat(XName, HasValue ? X : (int?)null);
Global.StickyXORAdapter.SetFloat(YName, HasValue ? Y : (int?)null);
Global.InputManager.StickyXorAdapter.SetFloat(XName, HasValue ? X : (int?)null);
Global.InputManager.StickyXorAdapter.SetFloat(YName, HasValue ? Y : (int?)null);
Refresh();
}