static void Postfix(SubtitleLogic __instance, SubtitleEvent.Data data) { if (__instance.currentEmitter_ is null || data.emitter_ is null) { return; } __instance.CheckCameraDistance(data.emitter_); if (__instance.distanceToCurrentEmitter_ > data.emitter_.MaxAttenuationSq_) { return; } SubtitleState.strLabel = data.strLabel_; SubtitleState.markerID = data.markerID_; SubtitleState.forceString = data.forceString_; SubtitleState.emitter = data.emitter_; if (G.Sys.GameManager_.ModeID_ != GameModeID.Adventure) { return; } AdventureMode mode = G.Sys.GameManager_.Mode_ as AdventureMode; TimeSpan countdown = TimeSpan.FromSeconds(mode.GetCountdownTime()); SubtitleState.countdownHours = countdown.Hours; SubtitleState.countdownMinutes = countdown.Minutes; SubtitleState.countdownSeconds = countdown.Seconds; }
static void Postfix(SubtitleLogic __instance, SubtitleEvent.Data data) { __instance.CheckCameraDistance(data.emitter_); string event_name = $"subtitles.{Minify(data.emitter_.event_)}_{Minify(data.strLabel_)}_{data.markerID_}_{data.emitter_.currentPlayingID_}"; if ((data.emitter_.playState_ == AmbientAudioObject.PlayState.Play || data.forceString_) && __instance.distanceToCurrentEmitter_ <= data.emitter_.maxAttenuationSq_) { Flags.subtitle_id = __instance.timer_ <= 0 ? "subtitles.empty" : event_name; Events.Plugins.SubtitleEvent.Broadcast(Flags.subtitle_id); } }
static bool Prefix(SubtitleLogic __instance, SubtitleEvent.Data data) { if (__instance.currentEmitter_ != null && data.emitter_ != __instance.currentEmitter_ && __instance.recentCarCam_ != null && (__instance.recentCarCam_.transform.position - data.emitter_.transform.position).sqrMagnitude > __instance.distanceToCurrentEmitter_) { return(false); } __instance.CheckCameraDistance(data.emitter_); if (__instance.distanceToCurrentEmitter_ > data.emitter_.MaxAttenuationSq_) { return(false); } __instance.currentEmitter_ = data.emitter_; __instance.timer_ = __instance.timeOut_; Postfix(__instance, data); return(false); }