2019-12-20 16:22:42 +00:00
using System.Collections.Generic ;
2017-05-17 16:16:55 +00:00
using BizHawk.Emulation.Common ;
2017-05-10 18:27:10 +00:00
2017-05-17 16:16:55 +00:00
// ReSharper disable StyleCop.SA1401
2013-10-27 16:26:37 +00:00
namespace BizHawk.Client.Common
2013-10-25 00:59:34 +00:00
{
public static class Global
{
public static IEmulator Emulator ;
public static Config Config ;
public static GameInfo Game ;
2013-11-16 16:30:20 +00:00
public static CheatCollection CheatList ;
2013-11-01 23:17:30 +00:00
public static FirmwareManager FirmwareManager ;
2013-10-25 00:59:34 +00:00
2015-02-22 23:23:36 +00:00
public static IMovieSession MovieSession = new MovieSession ( ) ;
2013-10-27 07:54:00 +00:00
/// <summary>
2015-01-13 04:21:32 +00:00
/// Used to disable secondary throttling (e.g. vsync, audio) for unthrottled modes or when the primary (clock) throttle is taking over (e.g. during fast forward/rewind).
2013-10-27 07:54:00 +00:00
/// </summary>
2015-01-13 04:21:32 +00:00
public static bool DisableSecondaryThrottling ;
2013-10-27 16:26:37 +00:00
2015-01-28 00:53:49 +00:00
/// <summary>
2017-05-17 16:16:55 +00:00
/// The maximum number of milliseconds the sound output buffer can go below full before causing a noticeable sound interruption.
2015-01-28 00:53:49 +00:00
/// </summary>
public static int SoundMaxBufferDeficitMs ;
2019-12-20 16:24:54 +00:00
// the movie will be spliced in between these if it is present
2017-05-19 18:17:07 +00:00
public static readonly CopyControllerAdapter MovieInputSourceAdapter = new CopyControllerAdapter ( ) ;
public static readonly CopyControllerAdapter MovieOutputHardpoint = new CopyControllerAdapter ( ) ;
public static readonly MultitrackRewiringControllerAdapter MultitrackRewiringAdapter = new MultitrackRewiringControllerAdapter ( ) ;
2013-10-27 16:26:37 +00:00
2017-04-14 19:59:01 +00:00
// dont 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
2013-10-27 16:26:37 +00:00
2017-04-14 19:59:01 +00:00
// the original source controller, bound to the user, sort of the "input" port for the chain, i think
2013-10-27 16:26:37 +00:00
public static Controller ActiveController ;
2017-05-09 18:19:55 +00:00
// rapid fire version on the user controller, has its own key bindings and is OR'ed against ActiveController
2013-10-27 16:26:37 +00:00
public static AutofireController AutoFireController ;
2017-04-14 19:59:01 +00:00
// the "output" port for the controller chain.
2017-05-19 18:17:07 +00:00
public static readonly CopyControllerAdapter ControllerOutput = new CopyControllerAdapter ( ) ;
2013-10-27 16:26:37 +00:00
2017-05-19 18:17:07 +00:00
public static readonly UD_LR_ControllerAdapter UD_LR_ControllerAdapter = new UD_LR_ControllerAdapter ( ) ;
2013-11-03 16:47:21 +00:00
2017-05-19 18:17:07 +00:00
public static readonly AutoFireStickyXorAdapter AutofireStickyXORAdapter = new AutoFireStickyXorAdapter ( ) ;
2013-11-03 16:47:21 +00:00
2013-11-01 22:56:55 +00:00
/// <summary>
/// provides an opportunity to mutate the player's input in an autohold style
/// </summary>
2017-05-19 18:17:07 +00:00
public static readonly StickyXorAdapter StickyXORAdapter = new StickyXorAdapter ( ) ;
2013-11-01 22:56:55 +00:00
/// <summary>
2019-12-16 05:04:35 +00:00
/// Used to AND to another controller, used for <see cref="JoypadApi.Set(System.Collections.Generic.Dictionary{string,bool},System.Nullable{int})">JoypadApi.Set</see>
2013-11-01 22:56:55 +00:00
/// </summary>
2019-12-16 05:04:35 +00:00
public static readonly OverrideAdaptor ButtonOverrideAdaptor = new OverrideAdaptor ( ) ;
2013-11-01 22:56:55 +00:00
/// <summary>
/// fire off one-frame logical button clicks here. useful for things like ti-83 virtual pad and reset buttons
/// </summary>
2017-05-19 18:17:07 +00:00
public static readonly ClickyVirtualPadController ClickyVirtualPadController = new ClickyVirtualPadController ( ) ;
2013-11-03 16:47:21 +00:00
public static Controller ClientControls ;
2013-12-24 21:37:51 +00:00
// Input state which has been estine for game controller inputs are coalesce here
// This relies on a client specific implementation!
public static SimpleController ControllerInputCoalescer ;
2014-05-30 22:00:16 +00:00
2015-06-30 22:54:42 +00:00
public static Dictionary < string , object > UserBag = new Dictionary < string , object > ( ) ;
2013-10-25 00:59:34 +00:00
}
}