public TrackData() { if (TrackFileController.DontTrackYet) { keystones = 0; spiritLight = 0; ore = 0; skills = new HashSet <String>(); upgraded = new HashSet <String>(); events = new HashSet <String>(); teleporters = new HashSet <String>(); } try { keystones = InterOp.get_keystones(); spiritLight = InterOp.get_experience(); ore = InterOp.get_ore(); skills = SaveController.SkillsFound.Select((AbilityType type) => trackName(type)).ToHashSet(); upgraded = SaveController.UpgradedWeapons.Select((AbilityType type) => $"{type.GetDescription().Replace(" ", "")}").ToHashSet(); if (SaveController.HasAbility(AbilityType.DamageUpgrade1) && SaveController.HasAbility(AbilityType.DamageUpgrade2)) { upgraded.Add(trackName(AbilityType.DamageUpgrade1)); } events = SaveController.WorldEvents.Select((QuestEventType type) => type.GetDescription()).ToHashSet(); teleporters = Teleporter.TeleporterStates.Keys.Where((TeleporterType t) => (new Teleporter(t)).Has()).Select((TeleporterType t) => t.GetDescription()).ToHashSet(); } catch (Exception e) { Randomizer.Error("TrackData()", e); } }
public static void Update() { if (InterOp.get_game_state() == GameState.Game) { DontTrackYet = false; } if (IgnoreUpdateFrames > 0) { IgnoreUpdateFrames--; return; } try { if (Last == null || Last.ore != InterOp.get_ore() || Last.spiritLight != InterOp.get_experience() || Last.keystones != InterOp.get_keystones()) { Write(); } } catch (Exception e) { Randomizer.Error("Track.Update", e); Randomizer.Log($"Last: {Last}", false); } }