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)
|
if (joypad.Inputs == 0)
|
||||||
{
|
{
|
||||||
AutoFireStickyXorAdapter joypadAdapter = Global.AutofireStickyXORAdapter;
|
AutoFireStickyXorAdapter joypadAdapter = Global.InputManager.AutofireStickyXorAdapter;
|
||||||
joypadAdapter.ClearStickies();
|
joypadAdapter.ClearStickies();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -368,7 +368,7 @@ namespace BizHawk.Client.ApiHawk
|
||||||
{
|
{
|
||||||
if (joypad.Inputs.HasFlag(button))
|
if (joypad.Inputs.HasFlag(button))
|
||||||
{
|
{
|
||||||
AutoFireStickyXorAdapter joypadAdapter = Global.AutofireStickyXORAdapter;
|
AutoFireStickyXorAdapter joypadAdapter = Global.InputManager.AutofireStickyXorAdapter;
|
||||||
joypadAdapter.SetSticky(
|
joypadAdapter.SetSticky(
|
||||||
RunningSystem == SystemInfo.GB
|
RunningSystem == SystemInfo.GB
|
||||||
? $"{JoypadConverter.ConvertBack(button, RunningSystem)}"
|
? $"{JoypadConverter.ConvertBack(button, RunningSystem)}"
|
||||||
|
@ -408,7 +408,7 @@ namespace BizHawk.Client.ApiHawk
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static void GetAllInputs()
|
private static void GetAllInputs()
|
||||||
{
|
{
|
||||||
var joypadAdapter = Global.AutofireStickyXORAdapter;
|
var joypadAdapter = Global.InputManager.AutofireStickyXorAdapter;
|
||||||
|
|
||||||
var pressedButtons = joypadAdapter.Definition.BoolButtons
|
var pressedButtons = joypadAdapter.Definition.BoolButtons
|
||||||
.Where(b => joypadAdapter.IsPressed(b));
|
.Where(b => joypadAdapter.IsPressed(b));
|
||||||
|
|
|
@ -18,12 +18,12 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public IDictionary<string, dynamic> Get(int? controller = null)
|
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)
|
public IDictionary<string, dynamic> GetImmediate(int? controller = null)
|
||||||
{
|
{
|
||||||
return Global.ActiveController.ToDictionary(controller);
|
return Global.InputManager.ActiveController.ToDictionary(controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetFromMnemonicStr(string inputLogEntry)
|
public void SetFromMnemonicStr(string inputLogEntry)
|
||||||
|
@ -38,13 +38,13 @@ namespace BizHawk.Client.Common
|
||||||
LogCallback($"invalid mnemonic string: {inputLogEntry}");
|
LogCallback($"invalid mnemonic string: {inputLogEntry}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
foreach (var button in lg.Definition.BoolButtons) Global.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
|
foreach (var button in lg.Definition.BoolButtons) Global.InputManager.ButtonOverrideAdapter.SetButton(button, lg.IsPressed(button));
|
||||||
foreach (var floatButton in lg.Definition.FloatControls) Global.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
|
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)
|
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);
|
Set(button, buttons.TryGetValue(button, out var state) ? state : (bool?) null, controller);
|
||||||
}
|
}
|
||||||
|
@ -55,9 +55,9 @@ namespace BizHawk.Client.Common
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var buttonToSet = controller == null ? button : $"P{controller} {button}";
|
var buttonToSet = controller == null ? button : $"P{controller} {button}";
|
||||||
if (state == null) Global.ButtonOverrideAdapter.UnSet(buttonToSet);
|
if (state == null) Global.InputManager.ButtonOverrideAdapter.UnSet(buttonToSet);
|
||||||
else Global.ButtonOverrideAdapter.SetButton(buttonToSet, state.Value);
|
else Global.InputManager.ButtonOverrideAdapter.SetButton(buttonToSet, state.Value);
|
||||||
Global.ActiveController.Overrides(Global.ButtonOverrideAdapter);
|
Global.InputManager.ActiveController.Overrides(Global.InputManager.ButtonOverrideAdapter);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -74,7 +74,7 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.SetFloat(controller == null ? control : $"P{controller} {control}", value);
|
Global.InputManager.StickyXorAdapter.SetFloat(controller == null ? control : $"P{controller} {control}", value);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,50 +26,6 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public static InputManager InputManager { get; } = new InputManager();
|
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>();
|
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
|
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
|
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()
|
public void RewireInputChain()
|
||||||
{
|
{
|
||||||
Global.ControllerInputCoalescer.Clear();
|
ControllerInputCoalescer.Clear();
|
||||||
Global.ControllerInputCoalescer.Definition = Global.ActiveController.Definition;
|
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;
|
StickyXorAdapter.Source = UdLRControllerAdapter;
|
||||||
Global.AutofireStickyXORAdapter.Source = Global.StickyXORAdapter;
|
AutofireStickyXorAdapter.Source = StickyXorAdapter;
|
||||||
|
|
||||||
Global.MultitrackRewiringAdapter.Source = Global.AutofireStickyXORAdapter;
|
MultitrackRewiringAdapter.Source = AutofireStickyXorAdapter;
|
||||||
Global.MovieInputSourceAdapter.Source = Global.MultitrackRewiringAdapter;
|
MovieInputSourceAdapter.Source = MultitrackRewiringAdapter;
|
||||||
Global.ControllerOutput.Source = Global.MovieOutputHardpoint;
|
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
|
// connect the movie session before MovieOutputHardpoint if it is doing anything
|
||||||
// otherwise connect the MovieInputSourceAdapter to it, effectively bypassing the movie session
|
// otherwise connect the MovieInputSourceAdapter to it, effectively bypassing the movie session
|
||||||
if (Global.MovieSession != null)
|
if (Global.MovieSession != null)
|
||||||
{
|
{
|
||||||
Global.MovieOutputHardpoint.Source = Global.MovieSession.MovieControllerAdapter;
|
MovieOutputHardpoint.Source = Global.MovieSession.MovieControllerAdapter;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Global.MovieOutputHardpoint.Source = Global.MovieInputSourceAdapter;
|
MovieOutputHardpoint.Source = MovieInputSourceAdapter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,13 +83,13 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
var def = emulator.ControllerDefinition;
|
var def = emulator.ControllerDefinition;
|
||||||
|
|
||||||
Global.ActiveController = BindToDefinition(def, config.AllTrollers, config.AllTrollersAnalog);
|
ActiveController = BindToDefinition(def, config.AllTrollers, config.AllTrollersAnalog);
|
||||||
Global.AutoFireController = BindToDefinitionAF(def, emulator, config.AllTrollersAutoFire);
|
AutoFireController = BindToDefinitionAF(def, emulator, config.AllTrollersAutoFire);
|
||||||
|
|
||||||
// allow propagating controls that are in the current controller definition but not in the prebaked one
|
// 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?
|
// these two lines shouldn't be required anymore under the new system?
|
||||||
Global.ActiveController.ForceType(new ControllerDefinition(def));
|
ActiveController.ForceType(new ControllerDefinition(def));
|
||||||
Global.ClickyVirtualPadController.Definition = new ControllerDefinition(def);
|
ClickyVirtualPadController.Definition = new ControllerDefinition(def);
|
||||||
RewireInputChain();
|
RewireInputChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ namespace BizHawk.Client.Common
|
||||||
MovieControllerAdapter.LatchFromSource(input);
|
MovieControllerAdapter.LatchFromSource(input);
|
||||||
if (MultiTrack.IsActive)
|
if (MultiTrack.IsActive)
|
||||||
{
|
{
|
||||||
Global.MultitrackRewiringAdapter.Source = MovieControllerAdapter;
|
Global.InputManager.MultitrackRewiringAdapter.Source = MovieControllerAdapter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
if (!Movie.IsActive())
|
if (!Movie.IsActive())
|
||||||
{
|
{
|
||||||
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
|
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
|
||||||
}
|
}
|
||||||
else if (Movie.IsFinished())
|
else if (Movie.IsFinished())
|
||||||
{
|
{
|
||||||
|
@ -248,7 +248,7 @@ namespace BizHawk.Client.Common
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
|
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Movie.IsPlaying())
|
else if (Movie.IsPlaying())
|
||||||
|
@ -264,20 +264,20 @@ namespace BizHawk.Client.Common
|
||||||
// Movie may go into finished mode as a result from latching
|
// Movie may go into finished mode as a result from latching
|
||||||
if (!Movie.IsFinished())
|
if (!Movie.IsFinished())
|
||||||
{
|
{
|
||||||
if (Global.ClientControls.IsPressed("Scrub Input"))
|
if (Global.InputManager.ClientControls.IsPressed("Scrub Input"))
|
||||||
{
|
{
|
||||||
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
|
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
|
||||||
ClearFrame();
|
ClearFrame();
|
||||||
}
|
}
|
||||||
else if (Global.Config.MoviePlaybackPokeMode)
|
else if (Global.Config.MoviePlaybackPokeMode)
|
||||||
{
|
{
|
||||||
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
|
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
|
||||||
var lg = Movie.LogGeneratorInstance();
|
var lg = Movie.LogGeneratorInstance();
|
||||||
lg.SetSource(Global.MovieOutputHardpoint);
|
lg.SetSource(Global.InputManager.MovieOutputHardpoint);
|
||||||
if (!lg.IsEmpty)
|
if (!lg.IsEmpty)
|
||||||
{
|
{
|
||||||
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
|
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
|
||||||
Movie.PokeFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint);
|
Movie.PokeFrame(Global.Emulator.Frame, Global.InputManager.MovieOutputHardpoint);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -305,17 +305,17 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
if (MultiTrack.IsActive)
|
if (MultiTrack.IsActive)
|
||||||
{
|
{
|
||||||
LatchMultitrackPlayerInput(Global.MultitrackRewiringAdapter);
|
LatchMultitrackPlayerInput(Global.InputManager.MultitrackRewiringAdapter);
|
||||||
}
|
}
|
||||||
else
|
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;
|
// 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
|
// 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()
|
public void HandleMovieAfterFrameLoop()
|
||||||
|
@ -368,7 +368,7 @@ namespace BizHawk.Client.Common
|
||||||
}
|
}
|
||||||
else if (Movie.IsFinished())
|
else if (Movie.IsFinished())
|
||||||
{
|
{
|
||||||
LatchInputFromPlayer(Global.MovieInputSourceAdapter);
|
LatchInputFromPlayer(Global.InputManager.MovieInputSourceAdapter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -153,7 +153,7 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
foreach (var button in Definition.BoolButtons)
|
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
|
// float controls don't have sticky logic, so latch default value
|
||||||
|
|
|
@ -289,7 +289,7 @@ namespace BizHawk.Client.Common
|
||||||
protected void WriteRawInputLog(TextWriter writer)
|
protected void WriteRawInputLog(TextWriter writer)
|
||||||
{
|
{
|
||||||
var lg = new Bk2LogEntryGenerator(LogKey);
|
var lg = new Bk2LogEntryGenerator(LogKey);
|
||||||
lg.SetSource(Global.MovieOutputHardpoint);
|
lg.SetSource(Global.InputManager.MovieOutputHardpoint);
|
||||||
|
|
||||||
writer.WriteLine(lg.GenerateLogKey());
|
writer.WriteLine(lg.GenerateLogKey());
|
||||||
|
|
||||||
|
|
|
@ -396,7 +396,7 @@ namespace BizHawk.Client.Common
|
||||||
Global.MovieSession.MovieControllerAdapter.LatchSticky();
|
Global.MovieSession.MovieControllerAdapter.LatchSticky();
|
||||||
|
|
||||||
var lg = LogGeneratorInstance();
|
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++)
|
for (int i = 0; i < numFrames; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
public Dictionary<string, bool> Get()
|
public Dictionary<string, bool> Get()
|
||||||
{
|
{
|
||||||
var buttons = new Dictionary<string, bool>();
|
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;
|
return buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
public string InputStrImmediate()
|
public string InputStrImmediate()
|
||||||
{
|
{
|
||||||
var lg = Global.MovieSession.LogGeneratorInstance();
|
var lg = Global.MovieSession.LogGeneratorInstance();
|
||||||
lg.SetSource(Global.AutofireStickyXORAdapter);
|
lg.SetSource(Global.InputManager.AutofireStickyXorAdapter);
|
||||||
|
|
||||||
return lg.GenerateInputDisplay();
|
return lg.GenerateInputDisplay();
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
var lg = Global.MovieSession.LogGeneratorInstance();
|
var lg = Global.MovieSession.LogGeneratorInstance();
|
||||||
|
|
||||||
lg.SetSource(Global.AutofireStickyXORAdapter.Or(m));
|
lg.SetSource(Global.InputManager.AutofireStickyXorAdapter.Or(m));
|
||||||
return lg.GenerateInputDisplay();
|
return lg.GenerateInputDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
: Global.MovieSession.MovieControllerInstance();
|
: Global.MovieSession.MovieControllerInstance();
|
||||||
|
|
||||||
var lg = Global.MovieSession.LogGeneratorInstance();
|
var lg = Global.MovieSession.LogGeneratorInstance();
|
||||||
lg.SetSource(Global.AutofireStickyXORAdapter.And(m));
|
lg.SetSource(Global.InputManager.AutofireStickyXorAdapter.And(m));
|
||||||
return lg.GenerateInputDisplay();
|
return lg.GenerateInputDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
// basically we're tinting whatever is pressed because it's sticky specially
|
// 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
|
// 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
|
// 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);
|
g.DrawString(autoString, MessageFont, autoColor, point.X, point.Y);
|
||||||
|
|
||||||
//recolor everything that's changed from the previous input
|
//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);
|
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: ");
|
var sb = new StringBuilder("Held: ");
|
||||||
|
|
||||||
foreach (string sticky in Global.StickyXORAdapter.CurrentStickies)
|
foreach (string sticky in Global.InputManager.StickyXorAdapter.CurrentStickies)
|
||||||
{
|
{
|
||||||
sb.Append(sticky).Append(' ');
|
sb.Append(sticky).Append(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (string autoSticky in Global.AutofireStickyXORAdapter.CurrentStickies)
|
foreach (string autoSticky in Global.InputManager.AutofireStickyXorAdapter.CurrentStickies)
|
||||||
{
|
{
|
||||||
sb
|
sb
|
||||||
.Append("Auto-")
|
.Append("Auto-")
|
||||||
|
|
|
@ -1011,7 +1011,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void AutofireMenuItem_Click(object sender, EventArgs e)
|
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();
|
var result = form.ShowDialog();
|
||||||
AddOnScreenMessage(result.IsOk()
|
AddOnScreenMessage(result.IsOk()
|
||||||
? "Autofire settings saved"
|
? "Autofire settings saved"
|
||||||
|
@ -1658,7 +1658,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click("FDS Eject");
|
InputManager.ClickyVirtualPadController.Click("FDS Eject");
|
||||||
AddOnScreenMessage("FDS disk ejected.");
|
AddOnScreenMessage("FDS disk ejected.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1670,7 +1670,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click("Insert Coin P1");
|
InputManager.ClickyVirtualPadController.Click("Insert Coin P1");
|
||||||
AddOnScreenMessage("P1 Coin Inserted");
|
AddOnScreenMessage("P1 Coin Inserted");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1683,7 +1683,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click("Insert Coin P2");
|
InputManager.ClickyVirtualPadController.Click("Insert Coin P2");
|
||||||
AddOnScreenMessage("P2 Coin Inserted");
|
AddOnScreenMessage("P2 Coin Inserted");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1696,7 +1696,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click("Service Switch");
|
InputManager.ClickyVirtualPadController.Click("Service Switch");
|
||||||
AddOnScreenMessage("Service Switch Pressed");
|
AddOnScreenMessage("Service Switch Pressed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -206,7 +206,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
MessageCallback = AddOnScreenMessage
|
MessageCallback = AddOnScreenMessage
|
||||||
};
|
};
|
||||||
|
|
||||||
Global.ControllerInputCoalescer = new ControllerInputCoalescer();
|
Global.InputManager.ControllerInputCoalescer = new ControllerInputCoalescer();
|
||||||
Global.FirmwareManager = new FirmwareManager();
|
Global.FirmwareManager = new FirmwareManager();
|
||||||
MovieSession = new MovieSession
|
MovieSession = new MovieSession
|
||||||
{
|
{
|
||||||
|
@ -325,9 +325,9 @@ namespace BizHawk.Client.EmuHawk
|
||||||
Input.Initialize(this);
|
Input.Initialize(this);
|
||||||
InitControls();
|
InitControls();
|
||||||
|
|
||||||
Global.ActiveController = new Controller(NullController.Instance.Definition);
|
Global.InputManager.ActiveController = new Controller(NullController.Instance.Definition);
|
||||||
Global.AutoFireController = _autofireNullControls;
|
Global.InputManager.AutoFireController = _autofireNullControls;
|
||||||
Global.AutofireStickyXORAdapter.SetOnOffPatternFromConfig();
|
Global.InputManager.AutofireStickyXorAdapter.SetOnOffPatternFromConfig();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
GlobalWin.Sound = new Sound(Handle);
|
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
|
// handle events and dispatch as a hotkey action, or a hotkey button, or an input button
|
||||||
ProcessInput();
|
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);
|
(Emulator is N64 && Config.N64UseCircularAnalogConstraint) ? "Natural Circle" : null);
|
||||||
|
|
||||||
Global.ActiveController.OR_FromLogical(ClickyVirtualPadController);
|
Global.InputManager.ActiveController.OR_FromLogical(InputManager.ClickyVirtualPadController);
|
||||||
AutoFireController.LatchFromPhysical(Global.ControllerInputCoalescer);
|
InputManager.AutoFireController.LatchFromPhysical(Global.InputManager.ControllerInputCoalescer);
|
||||||
|
|
||||||
if (ClientControls["Autohold"])
|
if (InputManager.ClientControls["Autohold"])
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.MassToggleStickyState(Global.ActiveController.PressedButtons);
|
Global.InputManager.StickyXorAdapter.MassToggleStickyState(Global.InputManager.ActiveController.PressedButtons);
|
||||||
Global.AutofireStickyXORAdapter.MassToggleStickyState(AutoFireController.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
|
// 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)
|
if (Tools.Has<LuaConsole>() && !SuppressLua)
|
||||||
{
|
{
|
||||||
|
@ -734,7 +734,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public bool IsSeeking => PauseOnFrame.HasValue;
|
public bool IsSeeking => PauseOnFrame.HasValue;
|
||||||
private bool IsTurboSeeking => PauseOnFrame.HasValue && Config.TurboSeek;
|
private bool IsTurboSeeking => PauseOnFrame.HasValue && Config.TurboSeek;
|
||||||
public bool IsTurboing => ClientControls["Turbo"] || IsTurboSeeking;
|
public bool IsTurboing => InputManager.ClientControls["Turbo"] || IsTurboSeeking;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -747,8 +747,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void ClearHolds()
|
public void ClearHolds()
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.ClearStickies();
|
Global.InputManager.StickyXorAdapter.ClearStickies();
|
||||||
Global.AutofireStickyXORAdapter.ClearStickies();
|
Global.InputManager.AutofireStickyXorAdapter.ClearStickies();
|
||||||
|
|
||||||
if (Tools.Has<VirtualpadTool>())
|
if (Tools.Has<VirtualpadTool>())
|
||||||
{
|
{
|
||||||
|
@ -844,14 +844,10 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private Sound Sound => GlobalWin.Sound;
|
private Sound Sound => GlobalWin.Sound;
|
||||||
private CheatCollection CheatList => Global.CheatList;
|
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 Rewinder Rewinder { get; }
|
||||||
|
|
||||||
private FirmwareManager FirmwareManager => Global.FirmwareManager;
|
private FirmwareManager FirmwareManager => Global.FirmwareManager;
|
||||||
private Controller ClientControls => Global.ClientControls;
|
|
||||||
|
|
||||||
protected override void OnActivated(EventArgs e)
|
protected override void OnActivated(EventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -867,7 +863,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void ProcessInput()
|
private void ProcessInput()
|
||||||
{
|
{
|
||||||
var conInput = (ControllerInputCoalescer)Global.ControllerInputCoalescer;
|
var conInput = (ControllerInputCoalescer)Global.InputManager.ControllerInputCoalescer;
|
||||||
|
|
||||||
for (; ; )
|
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
|
// 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
|
// 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)
|
if (triggers.Count == 0)
|
||||||
{
|
{
|
||||||
// Maybe it is a system alt-key which hasn't been overridden
|
// Maybe it is a system alt-key which hasn't been overridden
|
||||||
|
@ -933,7 +929,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
break;
|
break;
|
||||||
case 1: // Input overrides Hotkeys
|
case 1: // Input overrides Hotkeys
|
||||||
conInput.Receive(ie);
|
conInput.Receive(ie);
|
||||||
if (!Global.ActiveController.HasBinding(ie.LogicalButton.ToString()))
|
if (!Global.InputManager.ActiveController.HasBinding(ie.LogicalButton.ToString()))
|
||||||
{
|
{
|
||||||
handled = false;
|
handled = false;
|
||||||
if (ie.EventType == Input.InputEventType.Press)
|
if (ie.EventType == Input.InputEventType.Press)
|
||||||
|
@ -1174,7 +1170,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
// prohibit this operation if the current controls include LMouse
|
// prohibit this operation if the current controls include LMouse
|
||||||
if (allowSuppress)
|
if (allowSuppress)
|
||||||
{
|
{
|
||||||
if (Global.ActiveController.HasBinding("WMouse L"))
|
if (Global.InputManager.ActiveController.HasBinding("WMouse L"))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1977,7 +1973,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
controls.BindMulti(b.DisplayName, b.Bindings);
|
controls.BindMulti(b.DisplayName, b.Bindings);
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.ClientControls = controls;
|
Global.InputManager.ClientControls = controls;
|
||||||
_autofireNullControls = new AutofireController(NullController.Instance.Definition, Emulator);
|
_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
|
// 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
|
// method is selected, but the clock throttle determines that by itself and
|
||||||
// everything appears normal here.
|
// everything appears normal here.
|
||||||
var rewind = Rewinder.RewindActive && (ClientControls["Rewind"] || PressRewind);
|
var rewind = Rewinder.RewindActive && (InputManager.ClientControls["Rewind"] || PressRewind);
|
||||||
var fastForward = ClientControls["Fast Forward"] || FastForward;
|
var fastForward = InputManager.ClientControls["Fast Forward"] || FastForward;
|
||||||
var turbo = IsTurboing;
|
var turbo = IsTurboing;
|
||||||
|
|
||||||
int speedPercent = fastForward ? Config.SpeedPercentAlternate : Config.SpeedPercent;
|
int speedPercent = fastForward ? Config.SpeedPercentAlternate : Config.SpeedPercent;
|
||||||
|
@ -2415,7 +2411,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click("Reset");
|
InputManager.ClickyVirtualPadController.Click("Reset");
|
||||||
AddOnScreenMessage("Reset button pressed.");
|
AddOnScreenMessage("Reset button pressed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2428,7 +2424,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click("Power");
|
InputManager.ClickyVirtualPadController.Click("Power");
|
||||||
AddOnScreenMessage("Power button pressed.");
|
AddOnScreenMessage("Power button pressed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2710,7 +2706,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (MovieSession.Movie.Mode != MovieMode.Play)
|
if (MovieSession.Movie.Mode != MovieMode.Play)
|
||||||
{
|
{
|
||||||
ClickyVirtualPadController.Click(button);
|
InputManager.ClickyVirtualPadController.Click(button);
|
||||||
AddOnScreenMessage(msg);
|
AddOnScreenMessage(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2842,7 +2838,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
runFrame = true;
|
runFrame = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ClientControls["Frame Advance"] || PressFrameAdvance || HoldFrameAdvance)
|
if (InputManager.ClientControls["Frame Advance"] || PressFrameAdvance || HoldFrameAdvance)
|
||||||
{
|
{
|
||||||
_runloopFrameAdvance = true;
|
_runloopFrameAdvance = true;
|
||||||
|
|
||||||
|
@ -2887,7 +2883,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
if (runFrame || force)
|
if (runFrame || force)
|
||||||
{
|
{
|
||||||
var isFastForwarding = ClientControls["Fast Forward"] || IsTurboing || InvisibleEmulation;
|
var isFastForwarding = InputManager.ClientControls["Fast Forward"] || IsTurboing || InvisibleEmulation;
|
||||||
var isFastForwardingOrRewinding = isFastForwarding || isRewinding || _unthrottled;
|
var isFastForwardingOrRewinding = isFastForwarding || isRewinding || _unthrottled;
|
||||||
|
|
||||||
if (isFastForwardingOrRewinding != _lastFastForwardingOrRewinding)
|
if (isFastForwardingOrRewinding != _lastFastForwardingOrRewinding)
|
||||||
|
@ -2903,8 +2899,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
CheatList.Pulse();
|
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
|
// 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();
|
InputManager.ClickyVirtualPadController.FrameTick();
|
||||||
Global.ButtonOverrideAdapter.FrameTick();
|
Global.InputManager.ButtonOverrideAdapter.FrameTick();
|
||||||
|
|
||||||
if (Tools.Has<LuaConsole>() && !SuppressLua)
|
if (Tools.Has<LuaConsole>() && !SuppressLua)
|
||||||
{
|
{
|
||||||
|
@ -2967,7 +2963,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
bool render = !InvisibleEmulation && (!_throttle.skipNextFrame || (_currAviWriter?.UsesVideo ?? false));
|
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();
|
MovieSession.HandleMovieAfterFrameLoop();
|
||||||
|
|
||||||
|
@ -2985,10 +2981,10 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
if (IsLagFrame && Config.AutofireLagFrames)
|
if (IsLagFrame && Config.AutofireLagFrames)
|
||||||
{
|
{
|
||||||
AutoFireController.IncrementStarts();
|
InputManager.AutoFireController.IncrementStarts();
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.AutofireStickyXORAdapter.IncrementLoops(IsLagFrame);
|
Global.InputManager.AutofireStickyXorAdapter.IncrementLoops(IsLagFrame);
|
||||||
|
|
||||||
PressFrameAdvance = false;
|
PressFrameAdvance = false;
|
||||||
|
|
||||||
|
@ -3045,7 +3041,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ClientControls["Rewind"] || PressRewind)
|
if (InputManager.ClientControls["Rewind"] || PressRewind)
|
||||||
{
|
{
|
||||||
UpdateToolsAfter();
|
UpdateToolsAfter();
|
||||||
}
|
}
|
||||||
|
@ -3816,9 +3812,9 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
Rewinder.Initialize();
|
Rewinder.Initialize();
|
||||||
|
|
||||||
Global.StickyXORAdapter.ClearStickies();
|
Global.InputManager.StickyXorAdapter.ClearStickies();
|
||||||
Global.StickyXORAdapter.ClearStickyFloats();
|
Global.InputManager.StickyXorAdapter.ClearStickyFloats();
|
||||||
Global.AutofireStickyXORAdapter.ClearStickies();
|
Global.InputManager.AutofireStickyXorAdapter.ClearStickies();
|
||||||
|
|
||||||
RewireSound();
|
RewireSound();
|
||||||
Tools.UpdateCheatRelatedTools(null, null);
|
Tools.UpdateCheatRelatedTools(null, null);
|
||||||
|
@ -3940,8 +3936,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
Emulator.Dispose();
|
Emulator.Dispose();
|
||||||
Emulator = new NullEmulator();
|
Emulator = new NullEmulator();
|
||||||
ClientApi.UpdateEmulatorAndVP(Emulator);
|
ClientApi.UpdateEmulatorAndVP(Emulator);
|
||||||
Global.ActiveController = new Controller(NullController.Instance.Definition);
|
Global.InputManager.ActiveController = new Controller(NullController.Instance.Definition);
|
||||||
Global.AutoFireController = _autofireNullControls;
|
Global.InputManager.AutoFireController = _autofireNullControls;
|
||||||
RewireSound();
|
RewireSound();
|
||||||
RebootStatusBarIcon.Visible = false;
|
RebootStatusBarIcon.Visible = false;
|
||||||
GameIsClosing = false;
|
GameIsClosing = false;
|
||||||
|
@ -3956,7 +3952,6 @@ namespace BizHawk.Client.EmuHawk
|
||||||
if (Tools.AskSave())
|
if (Tools.AskSave())
|
||||||
{
|
{
|
||||||
CloseGame(clearSram);
|
CloseGame(clearSram);
|
||||||
var coreComm = CreateCoreComm();
|
|
||||||
Emulator = new NullEmulator();
|
Emulator = new NullEmulator();
|
||||||
Global.Game = GameInfo.NullInstance;
|
Global.Game = GameInfo.NullInstance;
|
||||||
|
|
||||||
|
@ -4068,7 +4063,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
Tools.UpdateToolsBefore(fromLua);
|
Tools.UpdateToolsBefore(fromLua);
|
||||||
UpdateToolsAfter(fromLua);
|
UpdateToolsAfter(fromLua);
|
||||||
UpdateToolsLoadstate();
|
UpdateToolsLoadstate();
|
||||||
AutoFireController.ClearStarts();
|
InputManager.AutoFireController.ClearStarts();
|
||||||
|
|
||||||
if (!IsRewindSlave && MovieSession.Movie.IsActive())
|
if (!IsRewindSlave && MovieSession.Movie.IsActive())
|
||||||
{
|
{
|
||||||
|
@ -4413,7 +4408,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
if (IsRewindSlave)
|
if (IsRewindSlave)
|
||||||
{
|
{
|
||||||
if (ClientControls["Rewind"] || PressRewind)
|
if (InputManager.ClientControls["Rewind"] || PressRewind)
|
||||||
{
|
{
|
||||||
if (_frameRewindTimestamp == 0)
|
if (_frameRewindTimestamp == 0)
|
||||||
{
|
{
|
||||||
|
@ -4461,7 +4456,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return isRewinding;
|
return isRewinding;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Rewinder.RewindActive && (ClientControls["Rewind"] || PressRewind))
|
if (Rewinder.RewindActive && (InputManager.ClientControls["Rewind"] || PressRewind))
|
||||||
{
|
{
|
||||||
if (EmulatorPaused)
|
if (EmulatorPaused)
|
||||||
{
|
{
|
||||||
|
|
|
@ -785,7 +785,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
foreach (var button in lg.Definition.BoolButtons)
|
foreach (var button in lg.Definition.BoolButtons)
|
||||||
{
|
{
|
||||||
// TODO: make an input adapter specifically for the bot?
|
// 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
|
else
|
||||||
|
@ -923,7 +923,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
double probability = _cachedControlProbabilities[button];
|
double probability = _cachedControlProbabilities[button];
|
||||||
bool pressed = !(rand.Next(100) < probability);
|
bool pressed = !(rand.Next(100) < probability);
|
||||||
|
|
||||||
Global.ClickyVirtualPadController.SetBool(button, pressed);
|
Global.InputManager.ClickyVirtualPadController.SetBool(button, pressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
_currentBotAttempt.Log.Add(_logGenerator.GenerateLogEntry());
|
_currentBotAttempt.Log.Add(_logGenerator.GenerateLogEntry());
|
||||||
|
@ -977,7 +977,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
MessageLabel.Text = "Running...";
|
MessageLabel.Text = "Running...";
|
||||||
_cachedControlProbabilities = ControlProbabilities;
|
_cachedControlProbabilities = ControlProbabilities;
|
||||||
_logGenerator = Global.MovieSession.LogGeneratorInstance();
|
_logGenerator = Global.MovieSession.LogGeneratorInstance();
|
||||||
_logGenerator.SetSource(Global.ClickyVirtualPadController);
|
_logGenerator.SetSource(Global.InputManager.ClickyVirtualPadController);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string CanStart()
|
private string CanStart()
|
||||||
|
|
|
@ -469,7 +469,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoPatternBool p = BoolPatterns[index];
|
AutoPatternBool p = BoolPatterns[index];
|
||||||
Global.AutofireStickyXORAdapter.SetSticky(button, isOn.Value, p);
|
Global.InputManager.AutofireStickyXorAdapter.SetSticky(button, isOn.Value, p);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -489,7 +489,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoPatternFloat p = FloatPatterns[index];
|
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)
|
foreach (var column in TasView.VisibleColumns)
|
||||||
{
|
{
|
||||||
if (Global.StickyXORAdapter.IsSticky(column.Name))
|
if (Global.InputManager.StickyXorAdapter.IsSticky(column.Name))
|
||||||
{
|
{
|
||||||
column.Emphasis = true;
|
column.Emphasis = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,12 +32,12 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
foreach (var button in lg.Definition.BoolButtons)
|
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)
|
foreach (var floatButton in lg.Definition.FloatControls)
|
||||||
{
|
{
|
||||||
Global.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
|
Global.InputManager.ButtonOverrideAdapter.SetFloat(floatButton, lg.GetFloat(floatButton));
|
||||||
}
|
}
|
||||||
|
|
||||||
return lg;
|
return lg;
|
||||||
|
|
|
@ -20,6 +20,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
[ConfigPersist]
|
[ConfigPersist]
|
||||||
public bool TI83ToolTips { get; set; } = true;
|
public bool TI83ToolTips { get; set; } = true;
|
||||||
|
|
||||||
|
private ClickyVirtualPadController ClickyVirtualPadController => Global.InputManager.ClickyVirtualPadController;
|
||||||
|
|
||||||
private void TI83KeyPad_Load(object sender, EventArgs e)
|
private void TI83KeyPad_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (TI83ToolTips)
|
if (TI83ToolTips)
|
||||||
|
@ -147,252 +149,252 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void EnterButton_Click(object sender, EventArgs e)
|
private void EnterButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("ENTER");
|
ClickyVirtualPadController.Click("ENTER");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DashButton_Click(object sender, EventArgs e)
|
private void DashButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("DASH");
|
ClickyVirtualPadController.Click("DASH");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OneButton_Click(object sender, EventArgs e)
|
private void OneButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("1");
|
ClickyVirtualPadController.Click("1");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TwoButton_Click(object sender, EventArgs e)
|
private void TwoButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("2");
|
ClickyVirtualPadController.Click("2");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ThreeButton_Click(object sender, EventArgs e)
|
private void ThreeButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("3");
|
ClickyVirtualPadController.Click("3");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FourButton_Click(object sender, EventArgs e)
|
private void FourButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("4");
|
ClickyVirtualPadController.Click("4");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FiveButton_Click(object sender, EventArgs e)
|
private void FiveButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("5");
|
ClickyVirtualPadController.Click("5");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SixButton_Click(object sender, EventArgs e)
|
private void SixButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("6");
|
ClickyVirtualPadController.Click("6");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SevenButton_Click(object sender, EventArgs e)
|
private void SevenButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("7");
|
ClickyVirtualPadController.Click("7");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EightButton_Click(object sender, EventArgs e)
|
private void EightButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("8");
|
ClickyVirtualPadController.Click("8");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void NineButton_Click(object sender, EventArgs e)
|
private void NineButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("9");
|
ClickyVirtualPadController.Click("9");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnButton_Click(object sender, EventArgs e)
|
private void OnButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("ON");
|
ClickyVirtualPadController.Click("ON");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StoButton_Click(object sender, EventArgs e)
|
private void StoButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("STO");
|
ClickyVirtualPadController.Click("STO");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PlusButton_Click(object sender, EventArgs e)
|
private void PlusButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("PLUS");
|
ClickyVirtualPadController.Click("PLUS");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LnButton_Click(object sender, EventArgs e)
|
private void LnButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("LN");
|
ClickyVirtualPadController.Click("LN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MinusButton_Click(object sender, EventArgs e)
|
private void MinusButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("MINUS");
|
ClickyVirtualPadController.Click("MINUS");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LogButton_Click(object sender, EventArgs e)
|
private void LogButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("LOG");
|
ClickyVirtualPadController.Click("LOG");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MultiplyButton_Click(object sender, EventArgs e)
|
private void MultiplyButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("MULTIPLY");
|
ClickyVirtualPadController.Click("MULTIPLY");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SquaredButton_Click(object sender, EventArgs e)
|
private void SquaredButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("SQUARED");
|
ClickyVirtualPadController.Click("SQUARED");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CommaButton_Click(object sender, EventArgs e)
|
private void CommaButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("COMMA");
|
ClickyVirtualPadController.Click("COMMA");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ParaOpenButton_Click(object sender, EventArgs e)
|
private void ParaOpenButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("PARAOPEN");
|
ClickyVirtualPadController.Click("PARAOPEN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ParaCloseButton_Click(object sender, EventArgs e)
|
private void ParaCloseButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("PARACLOSE");
|
ClickyVirtualPadController.Click("PARACLOSE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DivideButton_Click(object sender, EventArgs e)
|
private void DivideButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("DIVIDE");
|
ClickyVirtualPadController.Click("DIVIDE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Neg1Button_Click(object sender, EventArgs e)
|
private void Neg1Button_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("NEG1");
|
ClickyVirtualPadController.Click("NEG1");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SinButton_Click(object sender, EventArgs e)
|
private void SinButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("SIN");
|
ClickyVirtualPadController.Click("SIN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CosButton_Click(object sender, EventArgs e)
|
private void CosButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("COS");
|
ClickyVirtualPadController.Click("COS");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TanButton_Click(object sender, EventArgs e)
|
private void TanButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("TAN");
|
ClickyVirtualPadController.Click("TAN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExpButton_Click(object sender, EventArgs e)
|
private void ExpButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("EXP");
|
ClickyVirtualPadController.Click("EXP");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MathButton_Click(object sender, EventArgs e)
|
private void MathButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("MATH");
|
ClickyVirtualPadController.Click("MATH");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MaxtrixButton_Click(object sender, EventArgs e)
|
private void MaxtrixButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("MATRIX");
|
ClickyVirtualPadController.Click("MATRIX");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PrgmButton_Click(object sender, EventArgs e)
|
private void PrgmButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("PRGM");
|
ClickyVirtualPadController.Click("PRGM");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VarsButton_Click(object sender, EventArgs e)
|
private void VarsButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("VARS");
|
ClickyVirtualPadController.Click("VARS");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ClearButton_Click(object sender, EventArgs e)
|
private void ClearButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("CLEAR");
|
ClickyVirtualPadController.Click("CLEAR");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AlphaButton_Click(object sender, EventArgs e)
|
private void AlphaButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("ALPHA");
|
ClickyVirtualPadController.Click("ALPHA");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void XButton_Click(object sender, EventArgs e)
|
private void XButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("X");
|
ClickyVirtualPadController.Click("X");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void StatButton_Click(object sender, EventArgs e)
|
private void StatButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("STAT");
|
ClickyVirtualPadController.Click("STAT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SecondButton_Click(object sender, EventArgs e)
|
private void SecondButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("2ND");
|
ClickyVirtualPadController.Click("2ND");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ModeButton_Click(object sender, EventArgs e)
|
private void ModeButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("MODE");
|
ClickyVirtualPadController.Click("MODE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DelButton_Click(object sender, EventArgs e)
|
private void DelButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("DEL");
|
ClickyVirtualPadController.Click("DEL");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LeftButton_Click(object sender, EventArgs e)
|
private void LeftButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("LEFT");
|
ClickyVirtualPadController.Click("LEFT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DownButton_Click(object sender, EventArgs e)
|
private void DownButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("DOWN");
|
ClickyVirtualPadController.Click("DOWN");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RightButton_Click(object sender, EventArgs e)
|
private void RightButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("RIGHT");
|
ClickyVirtualPadController.Click("RIGHT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpButton_Click(object sender, EventArgs e)
|
private void UpButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("UP");
|
ClickyVirtualPadController.Click("UP");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void YButton_Click(object sender, EventArgs e)
|
private void YButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("Y");
|
ClickyVirtualPadController.Click("Y");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WindowButton_Click(object sender, EventArgs e)
|
private void WindowButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("WINDOW");
|
ClickyVirtualPadController.Click("WINDOW");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ZoomButton_Click(object sender, EventArgs e)
|
private void ZoomButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("ZOOM");
|
ClickyVirtualPadController.Click("ZOOM");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TraceButton_Click(object sender, EventArgs e)
|
private void TraceButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("TRACE");
|
ClickyVirtualPadController.Click("TRACE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GraphButton_Click(object sender, EventArgs e)
|
private void GraphButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("GRAPH");
|
ClickyVirtualPadController.Click("GRAPH");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PeriodButton_Click(object sender, EventArgs e)
|
private void PeriodButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("DOT");
|
ClickyVirtualPadController.Click("DOT");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ZeroButton_Click(object sender, EventArgs e)
|
private void ZeroButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Global.ClickyVirtualPadController.Click("0");
|
ClickyVirtualPadController.Click("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -34,7 +34,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void UpdateValues()
|
public void UpdateValues()
|
||||||
{
|
{
|
||||||
if (AnalogTrackBar.Value != (int)Global.StickyXORAdapter.GetFloat(Name))
|
if (AnalogTrackBar.Value != (int)Global.InputManager.StickyXorAdapter.GetFloat(Name))
|
||||||
{
|
{
|
||||||
RefreshWidgets();
|
RefreshWidgets();
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.Unset(Name);
|
Global.InputManager.StickyXorAdapter.Unset(Name);
|
||||||
IsSet = false;
|
IsSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
if (!_programmaticallyChangingValue)
|
if (!_programmaticallyChangingValue)
|
||||||
{
|
{
|
||||||
CurrentValue = AnalogTrackBar.Value;
|
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)
|
if (!_isSet)
|
||||||
{
|
{
|
||||||
_programmaticallyChangingValue = true;
|
_programmaticallyChangingValue = true;
|
||||||
AnalogTrackBar.Value = (int)Global.StickyXORAdapter.GetFloat(Name);
|
AnalogTrackBar.Value = (int)Global.InputManager.StickyXorAdapter.GetFloat(Name);
|
||||||
ValueLabel.Text = AnalogTrackBar.Value.ToString();
|
ValueLabel.Text = AnalogTrackBar.Value.ToString();
|
||||||
_programmaticallyChangingValue = false;
|
_programmaticallyChangingValue = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,10 +78,10 @@ namespace BizHawk.Client.EmuHawk
|
||||||
manualR.Value = 0;
|
manualR.Value = 0;
|
||||||
manualTheta.Value = 0;
|
manualTheta.Value = 0;
|
||||||
//see HOOMOO
|
//see HOOMOO
|
||||||
Global.AutofireStickyXORAdapter.SetSticky(AnalogStick.XName, false);
|
Global.InputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.XName, false);
|
||||||
Global.StickyXORAdapter.Unset(AnalogStick.XName);
|
Global.InputManager.StickyXorAdapter.Unset(AnalogStick.XName);
|
||||||
Global.AutofireStickyXORAdapter.SetSticky(AnalogStick.YName, false);
|
Global.InputManager.AutofireStickyXorAdapter.SetSticky(AnalogStick.YName, false);
|
||||||
Global.StickyXORAdapter.Unset(AnalogStick.YName);
|
Global.InputManager.StickyXorAdapter.Unset(AnalogStick.YName);
|
||||||
AnalogStick.HasValue = false;
|
AnalogStick.HasValue = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
RightClicked = false;
|
RightClicked = false;
|
||||||
Checked = false;
|
Checked = false;
|
||||||
//HOOMOO
|
//HOOMOO
|
||||||
Global.AutofireStickyXORAdapter.SetSticky(Name, false);
|
Global.InputManager.AutofireStickyXorAdapter.SetSticky(Name, false);
|
||||||
Global.StickyXORAdapter.SetSticky(Name, false);
|
Global.InputManager.StickyXorAdapter.SetSticky(Name, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (RightClicked)
|
if (RightClicked)
|
||||||
{
|
{
|
||||||
Global.AutofireStickyXORAdapter.SetSticky(Name, Checked);
|
Global.InputManager.AutofireStickyXorAdapter.SetSticky(Name, Checked);
|
||||||
|
|
||||||
if (Checked == false)
|
if (Checked == false)
|
||||||
{
|
{
|
||||||
|
@ -145,7 +145,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.SetSticky(Name, Checked);
|
Global.InputManager.StickyXorAdapter.SetSticky(Name, Checked);
|
||||||
|
|
||||||
if (Checked == false)
|
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 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);
|
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
|
#endif
|
||||||
|
|
||||||
//emergency measure: if no selection, set no disc
|
//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)
|
private void btnClose_Click(object sender, EventArgs e)
|
||||||
|
|
|
@ -41,8 +41,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.Unset(XName);
|
Global.InputManager.StickyXorAdapter.Unset(XName);
|
||||||
Global.StickyXORAdapter.Unset(YName);
|
Global.InputManager.StickyXorAdapter.Unset(YName);
|
||||||
_overrideX = null;
|
_overrideX = null;
|
||||||
_overrideY = null;
|
_overrideY = null;
|
||||||
_isSet = false;
|
_isSet = false;
|
||||||
|
@ -164,7 +164,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
public int X
|
public int X
|
||||||
{
|
{
|
||||||
get => _overrideX ?? (int)(Global.StickyXORAdapter.GetFloat(XName) / MultiplierX);
|
get => _overrideX ?? (int)(Global.InputManager.StickyXorAdapter.GetFloat(XName) / MultiplierX);
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
|
@ -181,13 +181,13 @@ namespace BizHawk.Client.EmuHawk
|
||||||
XNumeric.Value = XNumeric.Maximum;
|
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;
|
_isSet = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public int Y
|
public int Y
|
||||||
{
|
{
|
||||||
get => _overrideY ?? (int)(Global.StickyXORAdapter.GetFloat(YName) / MultiplierY);
|
get => _overrideY ?? (int)(Global.InputManager.StickyXorAdapter.GetFloat(YName) / MultiplierY);
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
|
@ -203,7 +203,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
YNumeric.Value = YNumeric.Maximum;
|
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;
|
_isSet = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,8 +164,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private void SetAnalog()
|
private void SetAnalog()
|
||||||
{
|
{
|
||||||
Global.StickyXORAdapter.SetFloat(XName, HasValue ? X : (int?)null);
|
Global.InputManager.StickyXorAdapter.SetFloat(XName, HasValue ? X : (int?)null);
|
||||||
Global.StickyXORAdapter.SetFloat(YName, HasValue ? Y : (int?)null);
|
Global.InputManager.StickyXorAdapter.SetFloat(YName, HasValue ? Y : (int?)null);
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue