/// <summary>
        /// Initializes the <see cref="PlatformManager"/>
        /// </summary>
        internal static void Init()
        {
            EnvironmentSceneOverrider.Init();
            Anchor.AddComponent <EasterEggs>();

            GSM.transitionDidStartEvent  += (float ignored) => { TransitionPrep(); };
            GSM.transitionDidFinishEvent += (ScenesTransitionSetupDataSO ignored1, DiContainer ignored2) => { TransitionFinalize(); };
            AllPlatforms = PlatformLoader.CreateAllPlatforms(Anchor.transform);

            CurrentPlatform = AllPlatforms[0];
            if (CONFIG.HasKey("Data", "CustomPlatformPath"))
            {
                string savedPath = CONFIG.GetString("Data", "CustomPlatformPath");
                for (int i = 0; i < AllPlatforms.Count; i++)
                {
                    if (savedPath == AllPlatforms[i].platName + AllPlatforms[i].platAuthor)
                    {
                        CurrentPlatform = AllPlatforms[i];
                        break;
                    }
                }
            }

            LoadHeart();
        }
示例#2
0
        public static void TempChangeToPlatform(int index)
        {
            Plugin.Log();
            Plugin.Log(index);

            if (kyleBuffer != null)
            {
                errBuffer = index;
                throw new StackedRequestsException();
            }
            else
            {
                kyleBuffer = index;
            }
            try {
                if (!GetCurrentEnvironment().name.StartsWith("Menu") && platformSpawned)
                {
                    DestroyCustomLights();
                    InternalTempChangeToPlatform();
                    PlatformLoader.AddManagers();
                    SpawnCustomLights();
                    Instance.StartCoroutine(ReplaceAllMaterialsAfterOneFrame());
                    EnvironmentArranger.RearrangeEnvironment();
                }
            } catch (EnvironmentSceneNotFoundException e) {
                IPA.Logging.Logger.Level L = IPA.Logging.Logger.Level.Warning;
                Plugin.Log("TempChangeToPlatform was called out of place. Please send me a bug report.", L);
                Plugin.Log(e, L);
            }
        }
示例#3
0
 void TransitionFinalize(ScenesTransitionSetupDataSO ignored1, DiContainer ignored2)
 {
     try {
         if (!GetCurrentEnvironment().name.StartsWith("Menu"))
         {
             try {
                 FindManager();
                 if (!Resources.FindObjectsOfTypeAll <PlayerDataModel>()[0].playerData.overrideEnvironmentSettings.overrideEnvironments)
                 {
                     InternalTempChangeToPlatform();
                     PlatformLoader.AddManagers();
                     SpawnCustomLights();
                     Instance.StartCoroutine(ReplaceAllMaterialsAfterOneFrame());
                     EnvironmentArranger.RearrangeEnvironment();
                     TubeLightManager.CreateAdditionalLightSwitchControllers();
                 }
             } catch (ManagerNotFoundException e) {
                 Plugin.Log(e);
             }
         }
         else
         {
             Heart.SetActive(showHeart);
             Heart.GetComponent <LightWithId>().ColorWasSet(Color.magenta);
         }
     } catch (EnvironmentSceneNotFoundException e) {
         Plugin.Log(e);
     }
 }
示例#4
0
 private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
 {
     // Load in the menu scene
     if (arg0.name == "Menu")
     {
         PlatformLoader.OnLoad();
         //Application.logMessageReceived += LogCallback;
     }
 }
        /// <summary>
        /// Allows dynamic loading of <see cref="CustomPlatform"/>s from files.
        /// </summary>
        /// <param name="path">The path of file containing the <see cref="CustomPlatform"/></param>
        /// <returns>The reference to the loaded <see cref="CustomPlatform"/></returns>
        public static CustomPlatform AddPlatform(string path)
        {
            CustomPlatform newPlatform = PlatformLoader.LoadPlatformBundle(path, Anchor.transform);

            if (newPlatform != null)
            {
                AllPlatforms.Add(newPlatform);
            }
            return(newPlatform);
        }
示例#6
0
        private void Start()
        {
            EnvironmentSceneOverrider.GetSceneInfos();
            EnvironmentSceneOverrider.OverrideEnvironmentScene();

            EnvHider       = new EnvironmentHider();
            platformLoader = new PlatformLoader();

            RefreshPlatforms();
            PlatformUI.OnLoad();
        }
示例#7
0
        /// <summary>
        /// Called when the GameObject is created.
        ///
        /// </summary>
        private void Awake()
        {
            if (Instance != null)
            {
                return;
            }
            Instance = this;

            BSSceneManager.activeSceneChanged += BSSceneManagerOnActiveSceneChanged;

            DontDestroyOnLoad(gameObject);
        }
 public PlatformManager(SiraLog siraLog, PluginConfig config, AssetLoader assetLoader, PlatformLoader platformLoader, [Inject(Id = "CustomPlatforms")] Transform anchor)
 {
     _siraLog        = siraLog;
     _config         = config;
     _assetLoader    = assetLoader;
     _platformLoader = platformLoader;
     _anchor         = anchor;
     _directoryPath  = Path.Combine(UnityGame.InstallPath, "CustomPlatforms");
     _cacheFilePath  = Path.Combine(DirectoryPath, "cache.dat");
     DefaultPlatform = CreateDefaultPlatform();
     RandomPlatform  = CreateRandomPlatform();
     AllPlatforms    = new ObservableCollection <CustomPlatform> {
         DefaultPlatform, RandomPlatform
     };
     SingleplayerPlatform = MultiplayerPlatform = A360Platform = MenuPlatform = ActivePlatform = DefaultPlatform;
 }
示例#9
0
        internal static void Reload()
        {
            AllPlatforms = PlatformLoader.CreateAllPlatforms(Anchor.transform);

            CurrentPlatform = AllPlatforms[0];
            if (CONFIG.HasKey("Data", "CustomPlatformPath"))
            {
                string savedPath = CONFIG.GetString("Data", "CustomPlatformPath");
                for (int i = 0; i < AllPlatforms.Count; i++)
                {
                    if (savedPath == AllPlatforms[i].platName + AllPlatforms[i].platAuthor)
                    {
                        CurrentPlatform = AllPlatforms[i];
                        break;
                    }
                }
            }

            LoadHeart();
        }
示例#10
0
        private void Start()
        {
            EnvironmentArranger.arrangement        = (EnvironmentArranger.Arrangement)Plugin.config.GetInt("Settings", "EnvironmentArrangement", 0, true);
            EnvironmentSceneOverrider.overrideMode = (EnvironmentSceneOverrider.EnvOverrideMode)Plugin.config.GetInt("Settings", "EnvironmentOverrideMode", 0, true);
            EnvironmentSceneOverrider.GetSceneInfos();
            EnvironmentSceneOverrider.OverrideEnvironmentScene();

            menuEnvHider   = new EnvironmentHider();
            gameEnvHider   = new EnvironmentHider();
            platformLoader = new PlatformLoader();

            BSEvents.gameSceneLoaded      += HandleGameSceneLoaded;
            BSEvents.menuSceneLoadedFresh += HandleMenuSceneLoadedFresh;
            BSEvents.menuSceneLoaded      += HandleMenuSceneLoaded;

            RefreshPlatforms();

            HandleMenuSceneLoadedFresh();

            PlatformUI.OnLoad();
        }
示例#11
0
        private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
        {
            // Load in the menu scene
            if (arg0.name == "Menu" && !init)
            {
                init = true;

                SettingsUI.OnLoad();
                BSSceneManager.OnLoad();
                PlatformLoader.OnLoad();

                // Load from modprefs
                EnvironmentHider.showFeetOverride = ModPrefs.GetBool(PluginName, "AlwaysShowFeet", false, true);

                EnvironmentSceneOverrider.overrideMode = (EnvironmentSceneOverrider.EnvOverrideMode)ModPrefs.GetInt(PluginName, "EnvironmentOverrideMode", 0, true);
                EnvironmentSceneOverrider.GetSceneInfos();
                EnvironmentSceneOverrider.OverrideEnvironmentScene();

                //Application.logMessageReceived += LogCallback;
            }
        }
 public PlatformManager(SiraLog siraLog,
                        PluginConfig config,
                        AssetLoader assetLoader,
                        PlatformLoader platformLoader)
 {
     _siraLog                 = siraLog;
     _config                  = config;
     _assetLoader             = assetLoader;
     _platformLoader          = platformLoader;
     _anchor                  = new GameObject("CustomPlatforms").transform;
     _cancellationTokenSource = new CancellationTokenSource();
     _directoryPath           = Path.Combine(UnityGame.InstallPath, "CustomPlatforms");
     _cacheFilePath           = Path.Combine(DirectoryPath, "cache.dat");
     DefaultPlatform          = CreateDefaultPlatform();
     AllPlatforms             = new ObservableCollection <CustomPlatform> {
         DefaultPlatform
     };
     SingleplayerPlatform = DefaultPlatform;
     MultiplayerPlatform  = DefaultPlatform;
     A360Platform         = DefaultPlatform;
     ActivePlatform       = DefaultPlatform;
 }