public void LoadColony(RetiredColonyData data) { colonyName.text = data.colonyName.ToUpper(); cycleCount.text = string.Format(UI.RETIRED_COLONY_INFO_SCREEN.CYCLE_COUNT, data.cycleCount.ToString()); ToggleExplorer(false); RefreshUIScale(null); if ((UnityEngine.Object)Game.Instance == (UnityEngine.Object)null) { viewOtherColoniesButton.gameObject.SetActive(true); } ClearColony(); if ((UnityEngine.Object)SaveGame.Instance != (UnityEngine.Object)null) { ColonyAchievementTracker component = SaveGame.Instance.GetComponent <ColonyAchievementTracker>(); UpdateAchievementData(data, component.achievementsToDisplay.ToArray()); component.ClearDisplayAchievements(); PopulateAchievementProgress(component); } else { UpdateAchievementData(data, null); } DisplayStatistics(data); RectTransform transform = colonyDataRoot.transform.parent.rectTransform(); Vector3 position = colonyDataRoot.transform.parent.rectTransform().position; transform.SetPosition(new Vector3(position.x, 0f, 0f)); }
/// <summary> /// Applied before RenderEveryTick runs. /// </summary> internal static bool Prefix(ColonyAchievementTracker __instance) { var mode = FastTrackOptions.Instance.DisableAchievements; if (mode != FastTrackOptions.AchievementDisable.Always && (mode == FastTrackOptions.AchievementDisable.Never || TrackAchievements())) { var allAchievements = Db.Get().ColonyAchievements.resources; var achievements = __instance.achievements; // Update one per frame int index = __instance.updatingAchievement; if (index >= achievements.Count || index >= allAchievements.Count) { index = 0; } string key = allAchievements[index].Id; __instance.updatingAchievement = index + 1; // If achievement has not already failed or succeeded if (achievements.TryGetValue(key, out ColonyAchievementStatus status) && !status.success && !status.failed) { status.UpdateAchievement(); if (status.success && !status.failed) { ColonyAchievementTracker.UnlockPlatformAchievement(key); __instance.completedAchievementsToDisplay.Add(key); __instance.TriggerNewAchievementCompleted(key); RetireColonyUtility.SaveColonySummaryData(); } } } return(false); }
/// <summary> /// Applied after Serialize runs. /// </summary> internal static void Postfix(ColonyAchievementTracker __instance, AchieveDict __state) { if (__state != null) { // Reinstate everything foreach (var achievement in __state) { __instance.achievements[achievement.Key] = achievement.Value; } __state.Clear(); } }
public static void Postfix(ColonyAchievementTracker __instance) { foreach (KeyValuePair <string, ColonyAchievementStatus> keyValuePair in __instance.achievements) { if (keyValuePair.Value.success && !keyValuePair.Value.failed) { Type[] parameters_type = new Type[] { typeof(string) }; object[] paramaters = new object[] { keyValuePair.Key }; Traverse.Create <ColonyAchievementTracker>().Method("UnlockPlatformAchievement", parameters_type).GetValue(paramaters); } } }
public static int HomeSweetHome() { ColonyAchievementTracker tracker = SaveGame.Instance.GetComponent <ColonyAchievementTracker>(); if (tracker == null) { return(0); } ColonyAchievementStatus status = tracker.achievements.Where(a => a.Key == Db.Get().ColonyAchievements.Thriving.Id).First().Value; if (status.success && !status.failed) { return(1); } return(0); }
/// <summary> /// Applied after Deserialize runs. /// </summary> internal static void Postfix(ColonyAchievementTracker __instance) { foreach (var achieve in __instance.achievements) { if (achieve.Key == ACHIEVE_NAME) { var reqs = achieve.Value.Requirements; // It gets deleted if (reqs.Count < 1) { reqs.Add(new NumDecorPositives(DecorTuning. NUM_DECOR_FOR_ACHIEVEMENT)); PUtil.LogWarning("Fixing achievement bug from v1.x save"); } } } }
public override void OnSpawn() { base.OnSpawn(); var diseases = Db.Get().Diseases; diseaseIndex = diseases.GetIndex(diseases.RadiationPoisoning.Id); if (FastTrackOptions.Instance.DisableAchievements == FastTrackOptions. AchievementDisable.Always || AchievementDisablePatches.TrackAchievements()) { SaveGame.Instance.TryGetComponent(out tracker); } else { tracker = null; } CreatePartitioner(Grid.PosToCell(this)); }
/// <summary> /// Applied before Serialize runs. /// </summary> internal static void Prefix(ColonyAchievementTracker __instance, ref AchieveDict __state) { AchieveDict achieves; if (Options.DoNotSerialize && (achieves = __instance.achievements) != null) { PushAchievements(achieves, __state = new Dictionary <string, ColonyAchievementStatus>(achieves.Count)); #if DEBUG PUtil.LogDebug("Removed achievements from save: {0:D}".F(__state.Count)); #endif } else { __state = null; } }
/// <summary> /// Applied before IsAchievementUnlocked runs. /// </summary> internal static bool Prefix(ColonyAchievementTracker __instance, ref bool __result, ColonyAchievement achievement) { bool achieved = false; if (__instance.achievements.TryGetValue(achievement.Id, out ColonyAchievementStatus status)) { achieved = status.success; if (!achieved) { status.UpdateAchievement(); achieved = status.success; } } __result = achieved; return(false); }
private void PopulateAchievementProgress(ColonyAchievementTracker tracker) { if ((UnityEngine.Object)tracker != (UnityEngine.Object)null) { foreach (KeyValuePair <string, GameObject> achievementEntry in achievementEntries) { tracker.achievements.TryGetValue(achievementEntry.Key, out ColonyAchievementStatus value); if (value != null) { AchievementWidget component = achievementEntry.Value.GetComponent <AchievementWidget>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null) { component.ShowProgress(value); if (value.failed) { component.SetFailed(); } } } } } }
public static void Postfix(ColonyAchievementTracker __instance) { Debug.Log("---"); Debug.Log("!Achievement Tracker Start!"); if (DebugHandler.InstantBuildMode) { Debug.LogWarningFormat("Unable to unlock achievements: instant build mode"); } else if (SaveGame.Instance.sandboxEnabled) { Debug.LogWarningFormat("Unable to unlock achievements: instant build mode"); } else if (Game.Instance.debugWasUsed) { Debug.LogWarningFormat("Unable to unlock achievements: debug was used."); } foreach (KeyValuePair <string, ColonyAchievementStatus> achievement in __instance.achievements) { if (relevantAchievements.Contains(achievement.Key)) { Debug.Log("-----"); var outputString = getAchievementString(achievement.Key, achievement.Value); foreach (string s in outputString) { Debug.Log(s); } } //else //{ // Debug.Log("Other achievement: " + achievement.Key); //} } Debug.Log("-----"); }