static void Prefix(BeatmapObjectSpawnController __instance, float beatsPerMinute, int noteLinesCount, ref float noteJumpMovementSpeed, float noteJumpStartBeatOffset, bool disappearingArrows, bool ghostNotes) { if (FuckeryUI.NJSFix.Enabled) { noteJumpMovementSpeed *= .8f; } }
private void Start() { if (!Plugin.IsAnythingOn) { Logger.log.Debug("Nothing is turned on!"); EnableScore(); return; } try { if (Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().Count() > 0) { this._beatmapObjectSpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().First(); } if (Resources.FindObjectsOfTypeAll <MoveBackWall>().Count() > 0) { MoveBackLayer = Resources.FindObjectsOfTypeAll <MoveBackWall>().First().gameObject.layer; } if (_beatmapObjectSpawnController != null) { _beatmapObjectSpawnController.obstacleDiStartMovementEvent += this.HandleObstacleDiStartMovementEvent; } setupCams(); } catch (Exception ex) { Logger.log.Error($"TransparentWall.Start() has thrown an exception: {ex.Message}\n{ex.StackTrace}"); } }
private IEnumerator GetBeatmapObjectSpawnController() { bool loaded = false; while (!loaded) { _BMSpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().FirstOrDefault(); if (_BMSpawnController == null) { yield return(new WaitForSeconds(0.1f)); } else { loaded = true; } } if (_BMSpawnController != null) { if (_bomb || _hit) { _BMSpawnController.noteWasCutEvent += _BMSpawnController_noteWasCutEvent; } if (_miss) { _BMSpawnController.noteDidStartJumpEvent += _BMSpawnController_noteDidStartJumpEvent; } } }
private IEnumerator Start() { yield return(FindComponentInBeatSaber(SearchTimeout, (HapticFeedbackController Result) => HapticFeedbackController = Result)); yield return(FindComponentInBeatSaber(SearchTimeout, (NoteCutEffectSpawner Result) => NoteCutEffectSpawner = Result)); if (HapticFeedbackController == null) { Logger.log.Error("Haptic Feedback Controller not found!"); yield break; } if (NoteCutEffectSpawner == null) { Logger.log.Error("Note Cut Spawner not found!"); yield break; } FieldInfo field = NoteCutEffectSpawner.GetType().GetField("_beatmapObjectSpawnController", BindingFlags.Instance | BindingFlags.NonPublic); BeatmapObjectSpawnController = field.GetValue(NoteCutEffectSpawner) as BeatmapObjectSpawnController; if (BeatmapObjectSpawnController == null) { Logger.log.Error("Beatmap object spawner not found"); yield break; } BeatmapObjectSpawnController.noteWasCutEvent += BeatmapObjectSpawnController_noteWasCutEvent; }
public void Init(OnlinePlayerController newOwner, OnlineBeatmapCallbackController callbackController, OnlineAudioTimeController syncController) { BeatmapObjectSpawnController original = FindObjectsOfType <BeatmapObjectSpawnController>().First(x => !x.name.StartsWith("Online")); foreach (FieldInfo info in original.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Default).Where(x => !x.Name.ToLower().Contains("event"))) { info.SetValue(this, info.GetValue(original)); } owner = newOwner; onlineCallbackController = callbackController; _beatmapObjectCallbackController = onlineCallbackController; onlineSyncController = syncController; if (onlineCallbackController != null) { _noteSpawnCallbackId = onlineCallbackController.AddBeatmapObjectCallback(new BeatmapObjectCallbackController.BeatmapObjectCallback(BeatmapObjectSpawnCallback), _spawnAheadTime); } _localPlayer = FindObjectsOfType <PlayerController>().First(x => !x.name.Contains("Online")); _localSyncController = FindObjectsOfType <AudioTimeSyncController>().First(x => !x.name.Contains("Online")); (this as BeatmapObjectSpawnController).noteWasMissedEvent += FindObjectOfType <MissedNoteEffectSpawner>().HandleNoteWasMissed; (this as BeatmapObjectSpawnController).noteWasCutEvent += FindObjectOfType <NoteCutSoundEffectManager>().HandleNoteWasCut; (this as BeatmapObjectSpawnController).noteWasCutEvent += FindObjectOfType <BombCutSoundEffectManager>().HandleNoteWasCut; (this as BeatmapObjectSpawnController).noteWasCutEvent += FindObjectOfType <NoteCutEffectSpawner>().HandleNoteWasCutEvent; _activeNotes = new List <NoteController>(); _activeObstacles = new List <ObstacleController>(); }
private void Start() { if (!Plugin.IsTranparentWall) { Logger.log.Debug("Transparent wall is disabled!"); return; } try { if (Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().Count() > 0) { Logger.log.Debug("Found BeatmapObjectSpawnController!"); _beatmapObjectSpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().First(); } if (Resources.FindObjectsOfTypeAll <MoveBackWall>().Count() > 0) { MoveBackLayer = Resources.FindObjectsOfTypeAll <MoveBackWall>().First().gameObject.layer; Logger.log.Debug("Found MoveBackWall! Using MoveBackLayer=" + MoveBackLayer); } if (_beatmapObjectSpawnController != null) { Logger.log.Debug("Setup obstacleDidStartMovementEvent hook!"); _beatmapObjectSpawnController.obstacleDiStartMovementEvent += HandleObstacleDidStartMovementEvent; } setupCams(); } catch (Exception ex) { Logger.log.Error(ex); } }
public void Init(BeatmapObjectSpawnController spawner, NoteController note) { _note = note; var newNote = new NoteData(note.noteData.id, note.noteData.time, note.noteData.lineIndex, note.noteData.noteLineLayer + 2, note.noteData.noteLineLayer + 2, NoteType.Bomb, NoteCutDirection.Any, note.noteData.timeToNextBasicNote, note.noteData.timeToPrevBasicNote); spawner.NoteSpawnCallback(newNote); }
private void SliceCallBack(BeatmapObjectSpawnController beatmapObjectSpawnController, NoteController noteController, NoteCutInfo noteCutInfo) { if (!noteCutInfo.allIsOK) { _leftEventManager?.OnComboBreak?.Invoke(); _rightEventManager?.OnComboBreak?.Invoke(); } else { if (noteCutInfo.saberType == Saber.SaberType.SaberA) { _leftEventManager?.OnSlice?.Invoke(); } else if (noteCutInfo.saberType == Saber.SaberType.SaberB) { _rightEventManager?.OnSlice?.Invoke(); } } if (noteController.noteData.id == LastNoteId) { _leftEventManager?.OnLevelEnded?.Invoke(); _rightEventManager?.OnLevelEnded?.Invoke(); } }
public static void AdjustNJS(float njs, BeatmapObjectSpawnController _spawnController) { float halfJumpDur = 4f; float maxHalfJump = _spawnController.GetPrivateField<float>("_maxHalfJumpDistance"); float noteJumpStartBeatOffset = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.noteJumpStartBeatOffset; float moveSpeed = _spawnController.GetPrivateField<float>("_moveSpeed"); float moveDir = _spawnController.GetPrivateField<float>("_moveDurationInBeats"); float jumpDis; float spawnAheadTime; float moveDis; float bpm = _spawnController.GetPrivateField<float>("_beatsPerMinute"); float num = 60f / bpm; moveDis = moveSpeed * num * moveDir; while (njs * num * halfJumpDur > maxHalfJump) { halfJumpDur /= 2f; } halfJumpDur += noteJumpStartBeatOffset; if (halfJumpDur < 1f) halfJumpDur = 1f; // halfJumpDur = spawnController.GetPrivateField<float>("_halfJumpDurationInBeats"); jumpDis = njs * num * halfJumpDur * 2f; spawnAheadTime = moveDis / moveSpeed + jumpDis * 0.5f / njs; _spawnController.SetPrivateField("_halfJumpDurationInBeats", halfJumpDur); _spawnController.SetPrivateField("_spawnAheadTime", spawnAheadTime); _spawnController.SetPrivateField("_jumpDistance", jumpDis); _spawnController.SetPrivateField("_noteJumpMovementSpeed", njs); _spawnController.SetPrivateField("_moveDistance", moveDis); }
public StatKeeper() { Logger.log.Info("2 New statkeeper active."); CutChart = new GameObject(); Object.DontDestroyOnLoad(CutChart); //Utilities.SetGameObjectTransform(CutChart, Vector3.zero, Quaternion.identity, Vector3.zero); CutChart.SetActive(true); //CutChart.transform.position = Vector3.zero; CutChart.transform.localScale = Vector3.one; //CutChart.transform.rotation = Quaternion.identity; CutChart.transform.SetPositionAndRotation(Vector3.zero, gridRotation); CutChart.transform.localScale = Vector3.zero; cutPoints = new List <GameObject>(); _scoreController = Resources.FindObjectsOfTypeAll <ScoreController>().First(); _sceneData = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData; BOSC = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().First(); songDifficulty = _sceneData.difficultyBeatmap.difficulty.ToString().ToLower(); songName = _sceneData.difficultyBeatmap.level.songName; songNoteCount = _sceneData.difficultyBeatmap.beatmapData.cuttableNotesType; GetScoreController().noteWasMissedEvent += OnNoteMissed; GetBOM().noteWasCutEvent += OnNoteCut; //BSEvents.songPaused += OnPause; //BSEvents.songUnpaused += UnPause; }
private void _spawnController_noteWasMissedEvent(BeatmapObjectSpawnController arg1, NoteController noteController) { if (noteController.noteData.noteType != NoteType.Bomb && Config.failOnMiss) { Fail(); } }
private void Spawner_noteWasMissedEvent(BeatmapObjectSpawnController spawner, NoteController note) { if (note.noteData.noteType != NoteType.Bomb) { HueManager.missTime = (object)DateTimeOffset.UtcNow; } }
private static void MissHell_noteWasCutEvent(BeatmapObjectSpawnController arg1, NoteController arg2, NoteCutInfo arg3) { if (!arg3.allIsOK) { NoteMissed(); } }
private static void MissHell_noteWasMissedEvent(BeatmapObjectSpawnController arg1, NoteController arg2) { if (arg2.noteData.noteType != NoteType.Bomb) { NoteMissed(); } }
private void SpawnController_ScaleRemoveCut(BeatmapObjectSpawnController arg1, NoteController controller, NoteCutInfo arg3) { NoteData note = controller.noteData; Transform noteTransform = controller.GetField <Transform>("_noteTransform"); // Log("DESPAWN" + noteTransform.localScale.ToString()); if (noteTransform.localScale.x != 1) { noteTransform.localScale = new Vector3(1f, 1f, 1f); } // Log("DESPAWN" + noteTransform.localScale.ToString()); // if (modifiedNotes[note.id] != null) // note = modifiedNotes[note.id]; FloatBehavior behavior = noteTransform.gameObject.GetComponent <FloatBehavior>(); if (behavior != null) { noteTransform.localPosition = new Vector3(behavior.originalX, behavior.originalY, noteTransform.localPosition.z); GameObject.Destroy(behavior); } }
private void Start() { if (!Plugin.IsTranparentWall) { return; } try { if (Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().Count() > 0) { this._beatmapObjectSpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().First(); } if (Resources.FindObjectsOfTypeAll <MoveBackWall>().Count() > 0) { MoveBackLayer = Resources.FindObjectsOfTypeAll <MoveBackWall>().First().gameObject.layer; } if (_beatmapObjectSpawnController != null) { _beatmapObjectSpawnController.obstacleDiStartMovementEvent += this.HandleObstacleDiStartMovementEvent; } setupCams(); } catch (Exception ex) { Console.WriteLine(ex.Message + "\n" + ex.StackTrace); } }
internal static IEnumerator DelayedStart(BeatmapObjectSpawnController beatmapObjectSpawnController) { yield return(new WaitForEndOfFrame()); BeatmapObjectSpawnController = beatmapObjectSpawnController; // prone to breaking if anything else implements these interfaces BeatmapObjectManager beatmapObjectManager = _beatmapObjectSpawnAccessor(ref beatmapObjectSpawnController) as BeatmapObjectManager; BeatmapObjectCallbackController coreSetup = _callbackControllerAccessor(ref beatmapObjectSpawnController) as BeatmapObjectCallbackController; IAudioTimeSource = _audioTimeSourceAccessor(ref coreSetup); IReadonlyBeatmapData beatmapData = _beatmapDataAccessor(ref coreSetup); beatmapObjectManager.noteWasCutEvent -= NoteColorizer.ColorizeSaber; beatmapObjectManager.noteWasCutEvent += NoteColorizer.ColorizeSaber; if (Harmony.HasAnyPatches(HARMONYID)) { if (beatmapData is CustomBeatmapData customBeatmap) { if (ChromaConfig.Instance.EnvironmentEnhancementsEnabled) { EnvironmentEnhancementManager.Init(customBeatmap, beatmapObjectSpawnController.noteLinesDistance); } } // please let me kill legacy LegacyLightHelper.Activate(beatmapData.beatmapEventsData); } }
private void Awake() { _twitchCore = TwitchCore.Instance; _spawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().FirstOrDefault(); _spawnController.noteWasCutEvent += NoteCut; AlphaTwitchManager.Instance.EmoteProcessed += EmoteProcessed; _twitchCore.MessageReceived += MessageReceived; }
private void _BMSpawnController_noteDidStartJumpEvent(BeatmapObjectSpawnController arg1, NoteController arg2) { NoteMovement nm = arg2.GetComponent <NoteMovement>(); if (nm != null && (arg2.noteData.noteType == NoteType.NoteA || arg2.noteData.noteType == NoteType.NoteB)) { nm.noteDidPassMissedMarkerEvent += Nm_noteDidPassMissedMarkerEvent; } }
private void BeatmapObjectSpawnController_noteWasCutEvent(BeatmapObjectSpawnController NoteSpawnController, NoteController NoteController, NoteCutInfo NoteCutInfo) { if (HapticFeedbackController == null) { return; } RumblingHands[NoteCutInfo.saberType].Rumble(); }
private void SpawnController_ModifiedJump(BeatmapObjectSpawnController arg1, NoteController controller) { if (GMPUI.rainbow) { Utilities.Rainbow.RandomizeColors(); ColorManager?.RefreshColors(); } Transform noteTransform = controller.GetField <Transform>("_noteTransform"); // noteTransform.Translate(0f, 4f, 0f); if (GMPUI.funky) { noteTransform.gameObject.AddComponent <FloatBehavior>(); } if (!haveSongNJS) { songNJS = spawnController.GetField <float>("_noteJumpMovementSpeed"); haveSongNJS = true; } // Transform noteTransform = controller.GetField<Transform>("_noteTransform"); // Log("SPAWN" + noteTransform.localScale.ToString()); if (GMPUI.chatIntegration || GMPUI.randomSize || Multiplayer.MultiMain.multiActive) { if (superRandom) { noteTransform.localScale *= UnityEngine.Random.Range(ChatConfig.randomMin, ChatConfig.randomMax); } else { if (!GMPUI.randomSize) { noteTransform.localScale *= altereddNoteScale; } if (GMPUI.randomSize) { noteTransform.localScale *= UnityEngine.Random.Range(ChatConfig.randomMin, ChatConfig.randomMax); } } } // Log("SPAWN" + noteTransform.localScale.ToString()); if (GMPUI.fixedNoteScale != 1f) { // Transform noteTransform = controller.GetField<Transform>("_noteTransform"); // Log("SPAWN" + noteTransform.localScale.ToString()); noteTransform.localScale *= GMPUI.fixedNoteScale; // Log("SPAWN" + noteTransform.localScale.ToString()); } NoteData note = controller.noteData; }
private static void Postfix(BeatmapObjectSpawnController __instance, IBeatmapObjectSpawner ____beatmapObjectSpawner, BeatmapObjectSpawnMovementData ____beatmapObjectSpawnMovementData) { BeatmapObjectSpawnController = __instance; if (____beatmapObjectSpawner is BasicBeatmapObjectManager basicBeatmapObjectManager) { BeatmapObjectManager = basicBeatmapObjectManager; SpawnDataHelper.InitBeatmapObjectSpawnController(____beatmapObjectSpawnMovementData); } }
private void LoadGameObjects() { levelFailController = Resources.FindObjectsOfTypeAll <StandardLevelFailedController>().LastOrDefault(); spawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().LastOrDefault(); spawnMovementData = spawnController.GetField <BeatmapObjectSpawnMovementData, BeatmapObjectSpawnController>("_beatmapObjectSpawnMovementData"); callbackController = spawnController.GetField <BeatmapCallbacksController, BeatmapObjectSpawnController>("_beatmapCallbacksController"); soundEffectManager = Resources.FindObjectsOfTypeAll <NoteCutSoundEffectManager>().LastOrDefault(); audioTimeSync = Resources.FindObjectsOfTypeAll <AudioTimeSyncController>().LastOrDefault(); songAudio = audioTimeSync.GetField <AudioSource, AudioTimeSyncController>("_audioSource"); }
void Awake() { _energyCounter = null; _BMSpawnController = null; bFailed = false; LoadSoundEffects(); StartCoroutine(GetEnergyCounter()); StartCoroutine(GetBeatmapObjectSpawnController()); StartCoroutine(GetMainAudioEffects()); }
internal static void setupStuff() { SpawnController = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().FirstOrDefault(); PauseManager = Resources.FindObjectsOfTypeAll <StandardLevelGameplayManager>().FirstOrDefault(); PlayerController = Resources.FindObjectsOfTypeAll <PlayerController>().FirstOrDefault(); SaberManager = PlayerController.GetField("_saberManager") as SaberManager; leftSaber = SaberManager.GetPrivateField <Saber>("_leftSaber") as Saber; rightSaber = SaberManager.GetPrivateField <Saber>("_rightSaber") as Saber; }
internal static void ResetHell() { SpawnController.noteWasMissedEvent -= MissHell_noteWasMissedEvent; SpawnController.noteWasCutEvent -= MissHell_noteWasCutEvent; SpawnController = null; PauseManager = null; SaberManager = null; PlayerController.transform.position = StartPosition; }
private void Spawner_noteWasCutEvent(BeatmapObjectSpawnController spawner, NoteController note, NoteCutInfo info) { if (info.allIsOK) { HueManager.cutTime = (object)DateTimeOffset.UtcNow; } else { HueManager.missTime = (object)DateTimeOffset.UtcNow; } }
public static void SetNJS(BeatmapObjectSpawnController spawnController) { BeatmapObjectSpawnMovementData spawnMovementData = spawnController.GetField <BeatmapObjectSpawnMovementData, BeatmapObjectSpawnController>("_beatmapObjectSpawnMovementData"); var bpm = spawnController.GetField <VariableBpmProcessor, BeatmapObjectSpawnController>("_variableBPMProcessor").currentBpm; spawnMovementData.SetField("_startNoteJumpMovementSpeed", BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.noteJumpMovementSpeed); spawnMovementData.SetField("_noteJumpStartBeatOffset", BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.noteJumpStartBeatOffset); spawnMovementData.Update(bpm, spawnController.GetField <float, BeatmapObjectSpawnController>("_jumpOffsetY")); }
internal ShaderEventManager(DiContainer Container, ShaderCore shaderCore, ShaderManager shaderManager, PluginConfig pluginConfig, [InjectOptional] BeatmapObjectSpawnController beatmapObjectSpawnController, [InjectOptional] IDifficultyBeatmap difficultyBeatmap) { _container = Container; _shaderCore = shaderCore; _shaderManager = shaderManager; _pluginConfig = pluginConfig; _beatmapObjectSpawnController = beatmapObjectSpawnController; _difficultyBeatmap = difficultyBeatmap; }
private void _spawnController_noteWasCutEvent(BeatmapObjectSpawnController arg1, NoteController noteController, NoteCutInfo arg3) { NoteData note = noteController.noteData; if (note.noteType != NoteType.Bomb && _notesLeftCounter != null) { if (_notesLeftCounter != null) { _notesLeftCounter.UpdateCounter(); } } }