Move Global controller adapters into InputManager, it's a step in the right direction
This commit is contained in:
parent
1f617221fc
commit
6d5c444252
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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++)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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-")
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue