/// <summary> /// Called when the plugin is first loaded by IPA (either when the game starts or when the plugin is enabled if it starts disabled). /// [Init] methods that use a Constructor or called before regular methods like InitWithConfig. /// Only use [Init] with one Constructor. /// </summary> public void Init(IPALogger logger, IPA.Config.Config conf) { instance = this; Logger.log = logger; PluginConfig.Instance = conf.Generated <PluginConfig>(); Logger.log.Debug("Logger initialized."); }
public Plugin(IPALogger logger, IPA.Config.Config config) { Configuration.Instance = config.Generated <Configuration>(); instance = this; Logger.log = logger; Logger.log.Debug("Logger initialized."); }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector) { Logger.Log = logger; zenjector.OnApp <LevelTweaksCoreInstaller>().WithParameters(conf.Generated <Config>()); zenjector.OnMenu <LevelTweaksMenuInstaller>(); harmony = new Harmony("dev.auros.leveltweaks"); }
public Plugin(IPALogger logger, IPAConfig config, Zenjector zenject) { Instance = this; DateTime time = DateTime.UtcNow; isAprilFools = time.Month == 4 && time.Day == 1; zenject.UseLogger(logger); zenject.UseMetadataBinder <Plugin>(); if (isAprilFools) { zenject.Expose <CoreGameHUDController>("Environment"); } zenject.Expose <GameEnergyUIPanel>("Environment"); zenject.Expose <ComboUIController>("Environment"); zenject.Expose <ScoreMultiplierUIController>("Environment"); zenject.Expose <SongProgressUIController>("Environment"); zenject.Expose <ImmediateRankUIPanel>("Environment"); // Multiplayer support broke with Sira3... maybe someday I'll look into it. zenject.Install <AppConfigInstaller>(Location.App, config.Generated <PluginConfig>()); zenject.Install <MenuUIInstaller>(Location.Menu); zenject.Install <PanelModifierInstaller>(Location.StandardPlayer | Location.CampaignPlayer); }
public void Init(Conf conf, IPALogger logger) { Logger.log = logger; try { Harmony harmony = new Harmony("com.monkeymanboy.BeatSaberMarkupLanguage"); harmony.PatchAll(Assembly.GetExecutingAssembly()); } catch (Exception e) { Logger.log.Error(e.Message); } AnimationController.instance.InitializeLoadingAnimation(); SceneManager.activeSceneChanged += OnActiveSceneChanged; config = conf.Generated <Config>(); // Old Config Migration Task.Run(() => { var folder = Path.Combine(UnityGame.UserDataPath, "BSML.ini"); if (File.Exists(folder)) { string[] lines = File.ReadAllLines(folder); string pinnnedModsLine = lines.FirstOrDefault(x => x.StartsWith("Pinned Mods")) ?? ""; var splitLine = pinnnedModsLine.Split('='); if (splitLine.Length > 1) { var mods = splitLine[1].Split(','); config.PinnedMods.AddRange(mods.Where(x => !string.IsNullOrWhiteSpace(x) && x != " " && !config.PinnedMods.Contains(x))); } File.Delete(folder); } }); }
public Plugin(IPA.Config.Config conf, IPALogger logger, PluginMetadata metadata) { Log = logger; Config config = conf.Generated <Config>(); Harmony = new Harmony("dev.auros.sirautil"); // Set Config Verison config.Version = metadata.Version; // Setup Zenjector _zenjectManager = new ZenjectManager(); PluginInitInjector.AddInjector(typeof(Zenjector), (prev, __, meta) => { if (prev != null) { return(prev); } var zen = new Zenjector(meta.Id); _zenjectManager.Add(zen); return(zen); }); // Setup Own Zenject Stuff var zenjector = new Zenjector("SiraUtil"); _zenjectManager.Add(zenjector); zenjector.OnApp <SiraInstaller>().WithParameters(config); zenjector.OnGame <SiraSaberInstaller>(); zenjector.OnGame <SiraSaberEffectInstaller>() .Mutate <SaberBurnMarkArea>((ctx, obj) => { var burnArea = obj as SaberBurnMarkArea; // Override (or modify) the component BEFORE it's installed var siraBurnArea = burnArea.gameObject.AddComponent <SiraSaberBurnMarkArea>(); ctx.Container.QueueForInject(siraBurnArea); ctx.Container.Bind <SaberBurnMarkArea>().To <SiraSaberBurnMarkArea>().FromInstance(siraBurnArea).AsCached(); }) .Mutate <SaberBurnMarkSparkles>((ctx, obj) => { var burnSparkles = obj as SaberBurnMarkSparkles; var siraBurnSparkles = burnSparkles.gameObject.AddComponent <SiraSaberBurnMarkSparkles>(); ctx.Container.QueueForInject(siraBurnSparkles); ctx.Container.Bind <SaberBurnMarkSparkles>().To <SiraSaberBurnMarkSparkles>().FromInstance(siraBurnSparkles).AsCached(); }) .Mutate <ObstacleSaberSparkleEffectManager>((ctx, obj) => { var obstacleSparkles = obj as ObstacleSaberSparkleEffectManager; var siraObstacleSparkles = obstacleSparkles.gameObject.AddComponent <SiraObstacleSaberSparkleEffectManager>(); UnityEngine.Object.Destroy(obstacleSparkles); ctx.Container.QueueForInject(siraObstacleSparkles); ctx.Container.Bind <ObstacleSaberSparkleEffectManager>().To <SiraObstacleSaberSparkleEffectManager>().FromInstance(siraObstacleSparkles).AsCached(); }) .ShortCircuitForMultiplayer(); zenjector.OnGame <SiraGameInstaller>().ShortCircuitForMultiplayer(); }
public Plugin(IPALogger logger, Conf conf, Zenjector zenjector) { Log = logger; Config = conf.Generated <Config>(); _harmony = new Harmony(HarmonyID); zenjector.OnApp <LocalizerInstaller>(); }
public void Init(IPALogger logger, IPA.Config.Config config) { PluginConfig.Instance = config.Generated <PluginConfig>(); Log = logger; Log.Info("CoverColorSaber initialized."); new Harmony("CoverSaber").PatchAll(Assembly.GetExecutingAssembly()); GameplaySetup.instance.AddTab("Cover Color Saber", "CoverColorSaber.Settings.Panel.bsml", Settings.Menu.instance); }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector) { Log = logger; _harmony = new Harmony(kHarmonyId); zenjector.OnApp <SiraLocalizerCoreInstaller>().WithParameters(conf.Generated <Config>()); zenjector.OnMenu <SiraLocalizerUIInstaller>(); }
public Plugin(IPALogger logger, IPA.Config.Config conf) { instance = this; Logger.log = logger; Logger.log.Debug("Logger initialized."); Configuration.PluginConfig.Instance = conf.Generated <Configuration.PluginConfig>(); Logger.log.Debug("Config loaded."); }
/// <summary> /// Called when the plugin is first loaded by IPA (either when the game starts or when the plugin is enabled if it starts disabled). /// [Init] methods that use a Constructor or called before regular methods like InitWithConfig. /// Only use [Init] with one Constructor. /// </summary> public void Init(IPALogger logger, IPA.Config.Config config) { Instance = this; Log = logger; Config = config.Generated <PluginConfig>(); // Modifiers tab (in-lobby) LobbyConfigPanel.RegisterGameplayModifierTab(); }
public void InitWithConfig(IPA.Config.Config conf, IPALogger logger, Zenjector zenjector) { instance = this; Logger.Log = logger; Logger.Log.Debug("Logger initialized."); Configuration.PluginConfig.Instance = conf.Generated <Configuration.PluginConfig>(); Logger.Log.Debug("Config loaded"); zenjector.OnMenu <PlaylistEditerInstaller>(); }
public void InitWithConfig(IPALogger logger, IPA.Config.Config conf) { instance = this; Log = logger; this.AddIncriemtGCModeText(); Log.Debug("Logger initialized."); Configuration.PluginConfig.Instance = conf.Generated <Configuration.PluginConfig>(); Log.Debug("Config loaded"); }
/// <summary> /// Called when the plugin is first loaded by IPA (either when the game starts or when the plugin is enabled if it starts disabled). /// [Init] methods that use a Constructor or called before regular methods like InitWithConfig. /// Only use [Init] with one Constructor. /// </summary> public void Init(IPALogger logger, IPA.Config.Config conf, Zenjector zenjector) { Instance = this; Logger.Log = logger; Logger.Log.Debug("Logger initialized."); Configuration.PluginConfig.Instance = conf.Generated <Configuration.PluginConfig>(); Logger.Log.Debug("Config loaded"); zenjector.OnMenu <SyncSaberInstaller>(); }
/// <summary> /// Called when the plugin is first loaded by IPA (either when the game starts or when the plugin is enabled if it starts disabled). /// [Init] methods that use a Constructor or called before regular methods like InitWithConfig. /// Only use [Init] with one Constructor. /// </summary> public void Init(IPALogger logger, IPA.Config.Config config) { Instance = this; Log = logger; Config = config.Generated <PluginConfig>(); // Modifiers tab (in-lobby) - register needs to happen really early for now // (https://github.com/monkeymanboy/BeatSaberMarkupLanguage/issues/67) LobbyConfigPanel.RegisterGameplayModifierTab(); }
public void Init(IPALogger logger, IPA.Config.Config conf) { Instance = this; Log = logger; Log.Info("VisibleHitboxes initialized."); Config.Instance = conf.Generated <Config>(); Log.Debug("Config loaded"); }
public Plugin(IPA.Logging.Logger logger, IPA.Config.Config config) { log = logger; PluginConfig.Instance = config.Generated <PluginConfig>(); randColor = ScriptableObject.CreateInstance <RainbowMaker3000>(); warmColor = ScriptableObject.CreateInstance <WarmthGiver3000>(); coolColor = ScriptableObject.CreateInstance <MinecraftIceBlock>(); pastelColor = ScriptableObject.CreateInstance <PastelPainting>(); darkColor = ScriptableObject.CreateInstance <DarknessInside>(); log.Info("JustRainbowLights has initialized successfully"); }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector) { zenjector.UseLogger(logger); zenjector.Install <PluginInstaller>(Location.App, conf.Generated <PluginConfig>()); zenjector.Install <PresenceMenuInstaller>(Location.Menu); zenjector.Expose <CoreGameHUDController>("Gameplay"); zenjector.Install <PresenceGameInstaller>(Location.StandardPlayer); zenjector.Install <PresenceGameInstaller>(Location.CampaignPlayer); zenjector.Install <PresenceTutorialInstaller>(Location.Tutorial); zenjector.Install <PresenceMultiplayerInstaller>(Location.MultiPlayer); }
public Plugin(Conf conf, IPALogger logger) { Log = logger; Instance = this; var chatcore = ChatCoreInstance.Create(); Config.Instance = conf.Generated <Config>(); ChatCoreMultiplexer = chatcore.RunAllServices(); MenuButton = new MenuButton("Custom Alerts", ShowMainFlowCoordinator); }
public Plugin(IPALogger logger, IPA.Config.Config conf) { Log = logger; Log.Info("LovenseBSControl initialized."); PluginConfig.Instance = conf.Generated <PluginConfig>(); CheckConnections(); Control = new Classes.Control(); Control.LoadToysAsync().ConfigureAwait(true); }
public Plugin(Conf conf, IPALogger log, Zenjector zenjector, PluginMetadata metadata) { var config = conf.Generated <Config>(); _harmony = new Harmony(_harmonyID); config.Version = metadata.Version; zenjector .On <PCAppInit>() .Pseudo(Container => { log?.Debug("Initializing Core Bindings"); Container.BindLoggerAsSiraLogger(log); Container.BindInstance(config).AsSingle(); }); zenjector.OnMenu <DisoMenuInstaller>(); zenjector .On <MenuInstaller>() .Register <CommonSoundInstaller>() .Pseudo((ctx, Container) => { if (config.MusicPlayerEnabled) { log?.Debug("Upgrading to our DiPlayer"); var binding = ctx.GetComponent <ZenjectBinding>(); var original = (binding.Components.FirstOrDefault(x => x is SongPreviewPlayer) as SongPreviewPlayer) !; var fader = original.GetComponent <FadeOutSongPreviewPlayerOnSceneTransitionStart>(); var focus = original.GetComponent <SongPreviewPlayerPauseOnInputFocusLost>(); var newPlayer = original.Upgrade <SongPreviewPlayer, DisoPreviewPlayer>(); Container.QueueForInject(newPlayer); Container.Unbind <SongPreviewPlayer>(); Container.Bind(typeof(SongPreviewPlayer), typeof(DisoPreviewPlayer)).To <DisoPreviewPlayer>().FromInstance(newPlayer).AsSingle(); fader.SetField <FadeOutSongPreviewPlayerOnSceneTransitionStart, SongPreviewPlayer>("_songPreviewPlayer", newPlayer); focus.SetField <SongPreviewPlayerPauseOnInputFocusLost, SongPreviewPlayer>("_songPreviewPlayer", newPlayer); } log?.Debug("Exposing UI Audio Manager"); var audioManager = ctx.GetRootGameObjects().ElementAt(0).GetComponentInChildren <BasicUIAudioManager>(); Container.Bind <BasicUIAudioManager>().FromInstance(audioManager).AsSingle(); var gameObject = new GameObject("Audio Sourcer"); var mixer = audioManager.GetField <AudioSource, BasicUIAudioManager>("_audioSource").outputAudioMixerGroup; var clone = gameObject.AddComponent <AudioSource>(); clone.outputAudioMixerGroup = mixer; Container.BindInstance(clone).WithId("audio.sourcer").AsSingle(); }) .Initialized((ctx, Container) => { var manager = Container.ResolveId <SiraUtil.Interfaces.IRegistrar <AudioClip> >(nameof(Managers.DiClickManager)); }); }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector, PluginMetadata metadata) { Log = logger; Config config = conf.Generated <Config>(); _harmony = new Harmony("dev.auros.dicolors"); config.Version = metadata.HVersion; zenjector.OnApp <DiCInstaller>().WithParameters(config, metadata.HVersion); //zenjector.OnGame<DiCGameInstaller>(false); zenjector.OnMenu <DiCMenuInstaller>(); }
public Plugin(IPA.Config.Config conf, IPALogger logger) { Log = logger; Config config = conf.Generated <Config>(); Harmony = new Harmony("dev.auros.sirautil"); Version version = Assembly.GetExecutingAssembly().GetName().Version; config.MajorVersion = version.Major; config.MinorVersion = version.Minor; config.BuildVersion = version.Build; _siraInstallerInit = new SiraInstallerInit(config); }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector) { Log = logger; _harmony = new Harmony(kHarmonyId); if (Environment.GetCommandLineArgs().Contains("--dump-localization")) { new LocalizationExporter().DumpBaseGameLocalization(); } zenjector.OnApp <SiraLocalizerCoreInstaller>().WithParameters(conf.Generated <Config>()); zenjector.OnMenu <SiraLocalizerUIInstaller>(); }
public Plugin(IPALogger logger, IPA.Config.Config config) { Log = logger; Log.Info("Initializing"); SceneManager.activeSceneChanged += SceneChanged; PluginConfig.Instance = config.Generated <PluginConfig>(); Instance = this; MenuButtons.instance.RegisterButton(new MenuButton("Forecast", "See your Weather", new System.Action(LoadForCastUI))); PluginConfig.Instance.audioSFXVolume = Mathf.Clamp(PluginConfig.Instance.audioSFXVolume, 0f, 1f); MiscConfig.Read(); var harmony = new Harmony("com.FutureMapper.Weather"); harmony.PatchAll(Assembly.GetExecutingAssembly()); }
public void Init(IPALogger logger, IPAConfig conf, PluginMetadata plugin) { SemVer.Version semver = plugin.Version; version = semver.Major + "." + semver.Minor + "." + semver.Patch + (semver.PreRelease == null ? "" : "-pre-" + semver.PreRelease); instance = this; Logger.log = logger; Logger.log.Debug("Logger initialized."); config = conf.Generated <Config>(); LoadConfig(); }
public void InitWithConfig(IPALogger logger, IPA.Config.Config conf, Zenjector zenject) { Instance = this; Logger.logger = logger; Log = logger; Log.Info("HRCounter initialized."); Configuration.PluginConfig.Instance = conf.Generated <Configuration.PluginConfig>(); Log.Debug("Config loaded"); AssetBundleManager.LoadAssetBundle(); zenject.Install <GameplayHearRateInstaller>(Location.Player); zenject.Install <Installers.GameplayCoreInstaller>(Location.Player); // we don't want to popup the pause menu during multiplayer, that's not gonna help anything! zenject.Install <GamePauseInstaller>(Location.StandardPlayer | Location.CampaignPlayer); Log.Debug("Installers!"); }
public Plugin(IPALogger logger, IPAConfig config, Zenjector zenjector) { PluginConfig conf = config.Generated <PluginConfig>(); zenjector.OnApp <AppInstaller>().WithParameters(logger, conf); zenjector.OnMenu <Installers.MenuInstaller>(); zenjector.OnGame <GameInstaller>().Expose <LevelFailedTextEffect>().OnlyForStandard(); zenjector.OnGame <GameInstaller>(false).Expose <LevelFailedTextEffect>().OnlyForMultiplayer(); bool dir = Directory.Exists($@"{UnityGame.UserDataPath}\CustomFailText\"); if (!dir) { Directory.CreateDirectory($@"{UnityGame.UserDataPath}\CustomFailText\"); } }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector, PluginMetadata metadata) { Log = logger; Config config = conf.Generated <Config>(); Config.Value = config; if (config.Version.ToString() == "0.0.0" && config.Clock.Position == new UnityEngine.Vector3(0f, 2.8f, 2.45f)) { config.Clock.Position = new UnityEngine.Vector3(0f, 3f, 3.9f); } config.Version = metadata.HVersion; _harmony = new Harmony("dev.auros.enhancements"); zenjector.Install <XInstaller>(Location.App, config, metadata.HVersion); zenjector.Install <XGameInstaller>(Location.Player); zenjector.Install <XMenuInstaller>(Location.Menu); }
public Plugin(Conf conf, IPALogger logger, Zenjector zenjector, PluginMetadata metadata) { Log = logger; Config config = conf.Generated <Config>(); Config.Value = config; if (config.Version.ToString() == "0.0.0" && config.Clock.Position == new UnityEngine.Vector3(0f, 2.8f, 2.45f)) { config.Clock.Position = new UnityEngine.Vector3(0f, 3f, 3.9f); } config.Version = metadata.Version; _harmony = new Harmony("dev.auros.enhancements"); zenjector.OnApp <XInstaller>().WithParameters(config, metadata.Version); zenjector.OnGame <XGameInstaller>(false).ShortCircuitForTutorial(); zenjector.OnMenu <XMenuInstaller>(); }