Ejemplo n.º 1
0
 /// <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.");
 }
Ejemplo n.º 2
0
 public Plugin(IPALogger logger, IPA.Config.Config config)
 {
     Configuration.Instance = config.Generated <Configuration>();
     instance   = this;
     Logger.log = logger;
     Logger.log.Debug("Logger initialized.");
 }
Ejemplo n.º 3
0
 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");
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
                }
            });
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        public Plugin(IPALogger logger, Conf conf, Zenjector zenjector)
        {
            Log      = logger;
            Config   = conf.Generated <Config>();
            _harmony = new Harmony(HarmonyID);

            zenjector.OnApp <LocalizerInstaller>();
        }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
        public Plugin(Conf conf, IPALogger logger, Zenjector zenjector)
        {
            Log = logger;

            _harmony = new Harmony(kHarmonyId);

            zenjector.OnApp <SiraLocalizerCoreInstaller>().WithParameters(conf.Generated <Config>());
            zenjector.OnMenu <SiraLocalizerUIInstaller>();
        }
Ejemplo n.º 10
0
        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.");
        }
Ejemplo n.º 11
0
        /// <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();
        }
Ejemplo n.º 12
0
 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>();
 }
Ejemplo n.º 13
0
 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");
 }
Ejemplo n.º 14
0
 /// <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>();
 }
Ejemplo n.º 15
0
        /// <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();
        }
Ejemplo n.º 16
0
        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");
        }
Ejemplo n.º 17
0
 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");
 }
Ejemplo n.º 18
0
 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);
 }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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));
            });
        }
Ejemplo n.º 22
0
        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>();
        }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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>();
        }
Ejemplo n.º 25
0
        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());
        }
Ejemplo n.º 26
0
        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();
        }
Ejemplo n.º 27
0
        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!");
        }
Ejemplo n.º 28
0
        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\");
            }
        }
Ejemplo n.º 29
0
        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);
        }
Ejemplo n.º 30
0
        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>();
        }