StandardLevelSceneSetup GetGameSceneSetup() { StandardLevelSceneSetup s = GameObject.FindObjectOfType <StandardLevelSceneSetup>(); if (s == null) { s = UnityEngine.Resources.FindObjectsOfTypeAll <StandardLevelSceneSetup>().FirstOrDefault(); } return(s); }
private void AddEvents() { _leftEventManager = _leftSaber.GetComponent <EventManager>(); if (_leftEventManager == null) { _leftEventManager = _leftSaber.AddComponent <EventManager>(); } _rightEventManager = _rightSaber.GetComponent <EventManager>(); if (_rightEventManager == null) { _rightEventManager = _rightSaber.AddComponent <EventManager>(); } _leftEventManager.OnLevelStart.Invoke(); _rightEventManager.OnLevelStart.Invoke(); try { _beatmapObjectSpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().FirstOrDefault(); if (_beatmapObjectSpawnController == null) { Console.WriteLine("SPAWN CONTROLLER NULL"); //_beatmapObjectSpawnController = _saberRoot.AddComponent<BeatmapObjectSpawnController>(); } _scoreController = Resources.FindObjectsOfTypeAll <ScoreController>().FirstOrDefault(); if (_scoreController == null) { Console.WriteLine("SCORE CONTROLLER NULL"); //_scoreController = _saberRoot.AddComponent<ScoreController>(); } _saberCollisionManager = Resources.FindObjectsOfTypeAll <ObstacleSaberSparkleEffectManager>().FirstOrDefault(); if (_saberCollisionManager == null) { Console.WriteLine("COLLISION MANAGER NULL"); //_saberCollisionManager = _saberRoot.AddComponent<ObstacleSaberSparkleEffectManager>(); } _gameEnergyCounter = Resources.FindObjectsOfTypeAll <GameEnergyCounter>().FirstOrDefault(); if (_gameEnergyCounter == null) { Console.WriteLine("energery counter null"); //_gameEnergyCounter = _saberRoot.AddComponent<GameEnergyCounter>(); } _beatmapCallback = Resources.FindObjectsOfTypeAll <BeatmapObjectCallbackController>().FirstOrDefault(); if (_beatmapCallback == null) { Console.WriteLine("BEATMAP CALLBACK NULL"); //_beatmapCallback = _saberRoot.AddComponent<BeatmapObjectCallbackController>(); } _gamePauseManager = Resources.FindObjectsOfTypeAll <GamePauseManager>().FirstOrDefault(); if (_gamePauseManager == null) { Console.WriteLine("GamePauseManager Null"); //_gamePauseManager = _saberRoot.AddComponent<GamePauseManager>(); } _playerHeadAndObstacleInteraction = Resources.FindObjectsOfTypeAll <PlayerHeadAndObstacleInteraction>().FirstOrDefault(); if (_playerHeadAndObstacleInteraction == null) { Console.WriteLine("PlayerHeadAndObstacleInteraction Null"); //_playerHeadAndObstacleInteraction = _saberRoot.AddComponent<PlayerHeadAndObstacleInteraction>(); } _beatmapObjectSpawnController.noteWasCutEvent += SliceCallBack; _beatmapObjectSpawnController.noteWasMissedEvent += NoteMissCallBack; _scoreController.multiplierDidChangeEvent += MultiplierCallBack; _scoreController.comboDidChangeEvent += ComboChangeEvent; _saberCollisionManager.sparkleEffectDidStartEvent += SaberStartCollide; _saberCollisionManager.sparkleEffectDidEndEvent += SaberEndCollide; _gameEnergyCounter.gameEnergyDidReach0Event += FailLevelCallBack; _beatmapCallback.beatmapEventDidTriggerEvent += LightEventCallBack; // ReflectionUtil.SetPrivateField(_gamePauseManager, "_gameDidResumeSignal", (Action)OnPauseMenuClosed); //For some reason _gameDidResumeSignal isn't public. } catch (Exception e) { Console.WriteLine(e); Console.WriteLine(e.Message); throw; } try { StandardLevelSceneSetup mgs = GetGameSceneSetup(); BeatmapData beatmapData = mgs.standardLevelSceneSetupData.difficultyBeatmap.beatmapData; BeatmapLineData[] beatmapLinesData = beatmapData.beatmapLinesData; float LastTime = 0.0f; for (int i = 0; i < beatmapLinesData.Length; i++) { BeatmapObjectData[] beatmapObjectsData = beatmapLinesData[i].beatmapObjectsData; for (int j = beatmapObjectsData.Length - 1; j > 0; j--) { if (beatmapObjectsData[j].beatmapObjectType == BeatmapObjectType.Note) { if (((NoteData)beatmapObjectsData[j]).noteType != NoteType.Bomb) { if (beatmapObjectsData[j].time > LastTime) { LastNoteId = beatmapObjectsData[j].id; LastTime = beatmapObjectsData[j].time; } break; } } } } } catch (Exception e) { Console.WriteLine(e); Console.WriteLine(e.Message); throw; } }
private void GCSSFound(Scene scene, GameplayCoreSceneSetup gcss) { ChromaLogger.Log("Found GCSS!", ChromaLogger.Level.DEBUG); //Plugin.PlayReloadSound(); _playerController = FindObjectOfType <PlayerController>(); if (_playerController == null) { ChromaLogger.Log("Player Controller not found!", ChromaLogger.Level.WARNING); } if (!SceneUtils.IsTargetGameScene(scene.buildIndex)) { ChromaLogger.Log("Somehow we got to the point where we override a map, while not playing a map. How did this happen?", ChromaLogger.Level.WARNING); return; } if (gcss == null) { ChromaLogger.Log("Failed to obtain MainGameSceneSetup", ChromaLogger.Level.WARNING); return; } //GameplayCoreSetupData mgData = ReflectionUtil.GetPrivateField<MainGameSceneSetupData>(mgs, "_mainGameSceneSetupData"); StandardLevelSceneSetup slsSetup = Resources.FindObjectsOfTypeAll <StandardLevelSceneSetup>().FirstOrDefault(); if (slsSetup == null) { ChromaLogger.Log("Failed to find StandardLevelSceneSetup", ChromaLogger.Level.WARNING); return; } StandardLevelSceneSetupDataSO slsData = slsSetup.standardLevelSceneSetupData; if (slsData == null) { ChromaLogger.Log("Failed to obtain StandardLevelSceneSetupDataSO from StandardLevelSceneSetup", ChromaLogger.Level.WARNING); return; } PlayerSpecificSettings playerSettings = slsData.gameplayCoreSetupData.playerSpecificSettings; ChromaLogger.Log("SLSSetup, SLSData, and PlayerSettings!", ChromaLogger.Level.DEBUG); //Map BeatmapDataModel _beatmapDataModel = ReflectionUtil.GetField <BeatmapDataModel>(gcss, "_beatmapDataModel"); if (_beatmapDataModel == null) { ChromaLogger.Log("{XXX} : NULL BEATMAP DATA MODEL", ChromaLogger.Level.ERROR); } if (_beatmapDataModel.beatmapData == null) { ChromaLogger.Log("{XXX} : NULL BEATMAP DATA MODEL BEATMAP DATA", ChromaLogger.Level.ERROR); } //BeatmapData beatmapData = CreateTransformedBeatmapData(mgData.difficultyLevel.beatmapData, mgData.gameplayOptions, mgData.gameplayMode); BeatmapData beatmapData = CreateTransformedBeatmapData(_beatmapDataModel.beatmapData, playerSettings, BaseGameMode.CurrentBaseGameMode); if (beatmapData != null) { _beatmapDataModel.beatmapData = beatmapData; ReflectionUtil.SetField(gcss, "_beatmapDataModel", _beatmapDataModel); } foreach (IChromaBehaviourExtension extension in extensions) { extension.PostInitialization(songBPM, beatmapData, playerSettings, scoreController); } //modes = GetModes(mgData.gameplayMode, chromaSong); if (ChromaConfig.DebugMode) { Console.WriteLine(); Console.WriteLine(); ChromaLogger.Log("Gamemode: " + BaseGameMode.CurrentBaseGameMode.ToString() + " -- Party: " + BaseGameMode.PartyMode, ChromaLogger.Level.DEBUG); } //ChromaLogger.Log("Modify Sabers was called", ChromaLogger.Level.DEBUG); ColourManager.RefreshLights(); if (ChromaConfig.LightshowModifier) { foreach (Saber saber in GameObject.FindObjectsOfType <Saber>()) { saber.gameObject.SetActive(false); } } }