private void gameSongController_songDidFinishEvent() { //Reset the gameEnergyCounter death by obstacle value _oldObstacleEnergyDrainPerSecond = gameEnergyCounter.GetField <float>("_obstacleEnergyDrainPerSecond"); gameEnergyCounter.SetField("_obstacleEnergyDrainPerSecond", 0f); //Rehook the functions in the energy counter that watch note events beatmapObjectManager = gameEnergyCounter.GetField <BeatmapObjectManager>("_beatmapObjectManager"); beatmapObjectManager.noteWasMissedEvent += gameEnergyCounter.HandleNoteWasMissedEvent; beatmapObjectManager.noteWasMissedEvent -= beatmapObjectManager_noteWasMissedEvent; beatmapObjectManager.noteWasCutEvent += gameEnergyCounter.HandleNoteWasCutEvent; beatmapObjectManager.noteWasCutEvent -= beatmapObjectManager_noteWasCutEvent; //Rehook the level end event gameSongController.songDidFinishEvent += standardLevelGameplayManager.HandleSongDidFinish; gameSongController.songDidFinishEvent -= gameSongController_songDidFinishEvent; if (_wouldHaveFailed) { standardLevelGameplayManager.HandleGameEnergyDidReach0(); } standardLevelGameplayManager.HandleSongDidFinish(); }
public IEnumerator DoOnLevelStart() { yield return(new WaitUntil(() => standardLevelGameplayManager.GetField <StandardLevelGameplayManager.GameState>("_gameState") == StandardLevelGameplayManager.GameState.Playing)); yield return(new WaitUntil(() => Resources.FindObjectsOfTypeAll <GameEnergyCounter>().Any())); gameSongController = standardLevelGameplayManager.GetField <GameSongController>("_gameSongController"); gameEnergyCounter = Resources.FindObjectsOfTypeAll <GameEnergyCounter>().First(); //Prevent the gameEnergyCounter from invoking death by obstacle _oldObstacleEnergyDrainPerSecond = gameEnergyCounter.GetField <float>("_obstacleEnergyDrainPerSecond"); gameEnergyCounter.SetField("_obstacleEnergyDrainPerSecond", 0f); //Unhook the functions in the energy counter that watch note events, so we can peek inside the process beatmapObjectManager = gameEnergyCounter.GetField <BeatmapObjectManager>("_beatmapObjectManager"); beatmapObjectManager.noteWasMissedEvent -= gameEnergyCounter.HandleNoteWasMissedEvent; beatmapObjectManager.noteWasMissedEvent += beatmapObjectManager_noteWasMissedEvent; beatmapObjectManager.noteWasCutEvent -= gameEnergyCounter.HandleNoteWasCutEvent; beatmapObjectManager.noteWasCutEvent += beatmapObjectManager_noteWasCutEvent; //Unhook the level end event so we can reset everything before the level ends gameSongController.songDidFinishEvent -= standardLevelGameplayManager.HandleSongDidFinish; gameSongController.songDidFinishEvent += gameSongController_songDidFinishEvent; }
public override bool Activate(ref MonoBehaviour light, ref BeatmapEventData data, ref BeatmapEventType eventType) { GameEnergyCounter counter = GameObject.FindObjectOfType <GameEnergyCounter>(); if (counter != null) { //ChromaLogger.Log("Changing health by " + HealthChangeAmount); counter.SetField("energy", counter.energy + HealthChangeAmount); return(true); } return(false); }