diff --git a/BiomeManagerPatch.cs b/BiomeManagerPatch.cs index 9170623..0d33d6d 100644 --- a/BiomeManagerPatch.cs +++ b/BiomeManagerPatch.cs @@ -264,6 +264,7 @@ public static bool UpdateOverallPollution_Prefix(BiomeManager __instance, bool s float weightedPlasticPollution = (__instance.maxPlasticCloudPollution > 0f) ? (__instance.currentPlasticCloudPollution / __instance.maxPlasticCloudPollution * __instance.plasticCloudContributionToBiomePollution) : 0f; __instance.biomePollution = weightedGoopPollution + __instance.weightedLitterPollution + weightedPlasticPollution; __instance.biomePollution = BloopTools.SnapToZero(__instance.biomePollution, 1E-06f); + ExtraTrackersMod.nonBiomeIsComplete = __instance.biomePollution < 1E-06f; if (skipEffects) { __instance.externalPollutionUpdateQueued = true; diff --git a/ExtraTrackers.csproj b/ExtraTrackers.csproj index 4488a40..51558b9 100644 --- a/ExtraTrackers.csproj +++ b/ExtraTrackers.csproj @@ -4,7 +4,7 @@ net471 ExtraTrackers Loddlenaut mod for tracking more stuff - 1.1.1 + 1.1.2 true latest diff --git a/ExtraTrackersMod.cs b/ExtraTrackersMod.cs index 9b129db..4a9c3f5 100644 --- a/ExtraTrackersMod.cs +++ b/ExtraTrackersMod.cs @@ -4,6 +4,7 @@ using HarmonyLib.Tools; using I2.Loc; using System; +using System.Collections; using System.Collections.Generic; using System.Reflection; using UnityEngine; @@ -22,6 +23,12 @@ public static class ExtraTrackersMod public static BiomeManager nonBiomeManager; + // For autosplitter tracking + public static bool nonBiomeIsComplete = false; + public static bool allHoloBadgesFound = false; + public static bool allLoddleTypesFound = false; + public static bool allGoopyLoddlesCleaned = false; + public static Dictionary typeRemarkMapping = new Dictionary() { { LoddleAI.LoddleType.Eel, GoogleSheetsEntryNames.SirenEvoIntro }, @@ -162,6 +169,10 @@ public static float GetGlobalPollutionAmount() return BloopTools.SnapToZero(totalPollution, 1E-06f); } + public static void GetGoopyLoddlesCount(GameEvent e) + { + allGoopyLoddlesCleaned = GetGoopyLoddlesCount() == 0; + } public static int GetGoopyLoddlesCount() { int goopyLoddles = 0; @@ -173,22 +184,23 @@ public static int GetGoopyLoddlesCount() return goopyLoddles; } - //[HarmonyPatch(typeof(GameManager), nameof(GameManager.Update))] - //[HarmonyPostfix] - //public static void Update_Postfix() - //{ - // if (Input.GetKeyDown(KeyCode.F3)) - // { - // foreach (int bi in biomePollution.Keys) - // { - // BiomeManager bm; - // bm = bi != -1 ? EngineHub.BiomeSaver.LookUpBiomeByID(bi) : nonBiomeManager; - // log.LogInfo(bm.biomeDisplayName); - // log.LogInfo($"goop: {biomePollution[bi]["goopPollution"]}"); - // log.LogInfo($"plastic: {biomePollution[bi]["plasticCloudPollution"]}"); - // log.LogInfo($"litter: {biomePollution[bi]["litterPollution"]}"); - // } - // } - //} + public static void OnHoloBadgeCollected(GameEvent e) + { + allHoloBadgesFound = ((HoloBadgeCollected)e).allHaveBeenCollected; + } + + public static void OnLoddleMetPlayer(GameEvent e) + { + EngineHub.GameProgressTracker.StartCoroutine(ExtraTrackersMod.UpdateAllLoddleTypesFound()); + } + + public static IEnumerator UpdateAllLoddleTypesFound() + { + for (int i = 0; i < 2; i++) + { + yield return new WaitForEndOfFrame(); + } + allLoddleTypesFound = GetEncounteredLoddleTypes().Count == typeRemarkMapping.Count; + } } } diff --git a/ExtraTrackersPlugin.cs b/ExtraTrackersPlugin.cs index 2d27977..6e6770d 100644 --- a/ExtraTrackersPlugin.cs +++ b/ExtraTrackersPlugin.cs @@ -15,7 +15,7 @@ public class ExtraTrackersPlugin : BaseUnityPlugin { public const string myGUID = "com.paperish.extratrackers"; public const string pluginName = "Extra Trackers"; - public const string versionString = "1.1.1"; + public const string versionString = "1.1.2"; private static readonly Harmony harmony = new Harmony(myGUID); private void Awake() diff --git a/GameProgressTrackerPatches.cs b/GameProgressTrackerPatches.cs index edeaec4..27a7ec5 100644 --- a/GameProgressTrackerPatches.cs +++ b/GameProgressTrackerPatches.cs @@ -24,5 +24,14 @@ public static bool HandleBiomePollutionShift_Prefix(GameEvent e) } return true; } + + [HarmonyPatch(nameof(GameProgressTracker.RegisterForEvents))] + [HarmonyPostfix] + public static void RegisterForEvents_Postfix(GameProgressTracker __instance) + { + EngineHub.EventManager.Register(new GameEvent.Handler(ExtraTrackersMod.GetGoopyLoddlesCount)); + EngineHub.EventManager.Register(new GameEvent.Handler(ExtraTrackersMod.OnHoloBadgeCollected)); + EngineHub.EventManager.Register(new GameEvent.Handler(ExtraTrackersMod.OnLoddleMetPlayer)); + } } } diff --git a/MenuPatches.cs b/MenuPatches.cs index b1c4b9e..ab4ebed 100644 --- a/MenuPatches.cs +++ b/MenuPatches.cs @@ -231,6 +231,11 @@ public static void MainMenuStart_Postfix(MainMenu __instance) string version = versionLabel.text; versionLabel.text = $"{version}\n{ExtraTrackersPlugin.pluginName} v{ExtraTrackersPlugin.versionString}"; versionLabel.alignment = TextAlignmentOptions.BottomRight; - } + + ExtraTrackersMod.nonBiomeIsComplete = false; + ExtraTrackersMod.allHoloBadgesFound = false; + ExtraTrackersMod.allLoddleTypesFound = false; + ExtraTrackersMod.allGoopyLoddlesCleaned = false; + } } }