private void DisplayBuildings(RetiredColonyData data, GameObject container) { for (int num = container.transform.childCount - 1; num >= 0; num--) { UnityEngine.Object.Destroy(container.transform.GetChild(num).gameObject); } data.buildings.Sort(delegate(Tuple <string, int> a, Tuple <string, int> b) { if (a.second > b.second) { return(1); } if (a.second == b.second) { return(0); } return(-1); }); data.buildings.Reverse(); foreach (Tuple <string, int> building in data.buildings) { GameObject prefab = Assets.GetPrefab(building.first); GameObject gameObject = Util.KInstantiateUI(buildingPrefab, container, true); HierarchyReferences component = gameObject.GetComponent <HierarchyReferences>(); component.GetReference <LocText>("NameLabel").SetText(GameUtil.ApplyBoldString(prefab.GetProperName())); component.GetReference <LocText>("CountLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.BUILDING_COUNT, building.second.ToString())); Tuple <Sprite, Color> uISprite = Def.GetUISprite(prefab, "ui", false); component.GetReference <Image>("Portrait").sprite = uISprite.first; } }
private bool LoadSlideshow(RetiredColonyData data) { clearCurrentSlideshow(); currentSlideshowFiles = RetireColonyUtility.LoadColonySlideshowFiles(data.colonyName); slideshow.SetFiles(currentSlideshowFiles, -1); return(currentSlideshowFiles != null && currentSlideshowFiles.Length > 0); }
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)); }
private void DisplayTimelapse(RetiredColonyData data, GameObject container) { RectTransform reference = container.GetComponent <HierarchyReferences>().GetReference <RectTransform>("PlayIcon"); slideshow = container.GetComponent <HierarchyReferences>().GetReference <Slideshow>("Slideshow"); slideshow.updateType = SlideshowUpdateType.loadOnDemand; slideshow.SetPaused(true); slideshow.onBeforePlay = delegate { LoadSlideshow(data); }; slideshow.onEndingPlay = delegate { LoadScreenshot(data); }; if (!LoadScreenshot(data)) { slideshow.gameObject.SetActive(false); reference.gameObject.SetActive(false); } else { slideshow.gameObject.SetActive(true); reference.gameObject.SetActive(true); } }
public static void ActivateRetiredColoniesScreenFromData(GameObject parent, RetiredColonyData data) { if ((UnityEngine.Object)RetiredColonyInfoScreen.Instance == (UnityEngine.Object)null) { Util.KInstantiateUI(ScreenPrefabs.Instance.RetiredColonyInfoScreen.gameObject, parent, true); } RetiredColonyInfoScreen.Instance.Show(true); RetiredColonyInfoScreen.Instance.LoadColony(data); }
public static RetiredColonyData[] LoadRetiredColonies(bool skipStats = false) { List <RetiredColonyData> list = new List <RetiredColonyData>(); if (!Directory.Exists(Util.RootFolder())) { Directory.CreateDirectory(Util.RootFolder()); } string path = Path.Combine(Util.RootFolder(), Util.GetRetiredColoniesFolderName()); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = Path.Combine(Util.RootFolder(), Util.GetRetiredColoniesFolderName()); string[] directories = Directory.GetDirectories(path); foreach (string path2 in directories) { string[] files = Directory.GetFiles(path2); foreach (string text in files) { if (text.EndsWith(".json")) { int num = 0; while (true) { if (num < attempt_encodings.Length) { Encoding encoding = attempt_encodings[num]; try { RetiredColonyData retiredColonyData = LoadRetiredColony(text, skipStats, encoding); if (retiredColonyData != null) { if (retiredColonyData.colonyName == null) { throw new Exception("data.colonyName was null"); } list.Add(retiredColonyData); } } catch (Exception ex) { Debug.LogWarningFormat("LoadRetiredColonies failed load {0} [{1}]: {2}", encoding, text, ex.ToString()); goto IL_0107; } } break; IL_0107: num++; } } } } return(list.ToArray()); }
private RetiredColonyData.RetiredColonyStatistic GetStatistic(string id, RetiredColonyData data) { RetiredColonyData.RetiredColonyStatistic[] stats = data.Stats; foreach (RetiredColonyData.RetiredColonyStatistic retiredColonyStatistic in stats) { if (retiredColonyStatistic.id == id) { return(retiredColonyStatistic); } } return(null); }
private bool LoadScreenshot(RetiredColonyData data) { clearCurrentSlideshow(); Sprite sprite = RetireColonyUtility.LoadRetiredColonyPreview(data.colonyName); if ((UnityEngine.Object)sprite != (UnityEngine.Object)null) { slideshow.setSlide(sprite); CorrectTimelapseImageSize(sprite); } return((UnityEngine.Object)sprite != (UnityEngine.Object)null); }
public static bool SaveColonySummaryData() { if (!Directory.Exists(Util.RootFolder())) { Directory.CreateDirectory(Util.RootFolder()); } string text = Path.Combine(Util.RootFolder(), Util.GetRetiredColoniesFolderName()); if (!Directory.Exists(text)) { Directory.CreateDirectory(text); } string text2 = StripInvalidCharacters(SaveGame.Instance.BaseName); string text3 = Path.Combine(text, text2); if (!Directory.Exists(text3)) { Directory.CreateDirectory(text3); } string path = Path.Combine(text3, text2 + ".json"); RetiredColonyData currentColonyRetiredColonyData = GetCurrentColonyRetiredColonyData(); string s = JsonConvert.SerializeObject(currentColonyRetiredColonyData); bool flag = false; int num = 0; while (!flag && num < 5) { try { Thread.Sleep(num * 100); using (FileStream fileStream = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) { flag = true; Encoding uTF = Encoding.UTF8; byte[] bytes = uTF.GetBytes(s); fileStream.Write(bytes, 0, bytes.Length); } } catch (Exception ex) { Debug.LogWarningFormat("SaveColonySummaryData failed attempt {0}: {1}", num + 1, ex.ToString()); } num++; } return(flag); }
private void LoadExplorer() { if (!((UnityEngine.Object)SaveGame.Instance != (UnityEngine.Object)null)) { ToggleExplorer(true); this.retiredColonyData = RetireColonyUtility.LoadRetiredColonies(false); RetiredColonyData[] array = this.retiredColonyData; foreach (RetiredColonyData retiredColonyData in array) { RetiredColonyData data = retiredColonyData; GameObject gameObject = Util.KInstantiateUI(colonyButtonPrefab, explorerGrid, true); HierarchyReferences component = gameObject.GetComponent <HierarchyReferences>(); string text = RetireColonyUtility.StripInvalidCharacters(data.colonyName); Sprite sprite = RetireColonyUtility.LoadRetiredColonyPreview(text); Image reference = component.GetReference <Image>("ColonyImage"); RectTransform reference2 = component.GetReference <RectTransform>("PreviewUnavailableText"); if ((UnityEngine.Object)sprite != (UnityEngine.Object)null) { reference.enabled = true; reference.sprite = sprite; reference2.gameObject.SetActive(false); } else { reference.enabled = false; reference2.gameObject.SetActive(true); } component.GetReference <LocText>("ColonyNameLabel").SetText(retiredColonyData.colonyName); component.GetReference <LocText>("CycleCountLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.CYCLE_COUNT, retiredColonyData.cycleCount.ToString())); component.GetReference <LocText>("DateLabel").SetText(retiredColonyData.date); gameObject.GetComponent <KButton>().onClick += delegate { LoadColony(data); }; string key = retiredColonyData.colonyName; int num = 0; while (explorerColonyWidgets.ContainsKey(key)) { num++; key = retiredColonyData.colonyName + "_" + num; } explorerColonyWidgets.Add(key, gameObject); } } }
protected override void OnPrefabInit() { base.OnPrefabInit(); Instance = this; prevButton.onClick += delegate { ShowReport(currentReport.day - 1); }; nextButton.onClick += delegate { ShowReport(currentReport.day + 1); }; summaryButton.onClick += delegate { RetiredColonyData currentColonyRetiredColonyData = RetireColonyUtility.GetCurrentColonyRetiredColonyData(); MainMenu.ActivateRetiredColoniesScreenFromData(PauseScreen.Instance.transform.parent.gameObject, currentColonyRetiredColonyData); }; ConsumeMouseScroll = true; }
private void DisplayStatistics(RetiredColonyData data) { GameObject gameObject = Util.KInstantiateUI(specialMediaBlock, statsContainer, true); activeColonyWidgetContainers.Add(gameObject); activeColonyWidgets.Add("timelapse", gameObject); DisplayTimelapse(data, gameObject); GameObject duplicantBlock = Util.KInstantiateUI(tallFeatureBlock, statsContainer, true); activeColonyWidgetContainers.Add(duplicantBlock); activeColonyWidgets.Add("duplicants", duplicantBlock); duplicantBlock.GetComponent <HierarchyReferences>().GetReference <LocText>("Title").SetText(UI.RETIRED_COLONY_INFO_SCREEN.TITLES.DUPLICANTS); PageView pageView = duplicantBlock.GetComponentInChildren <PageView>(); pageView.OnChangePage = delegate(int page) { DisplayDuplicants(data, duplicantBlock.GetComponent <HierarchyReferences>().GetReference("Content").gameObject, page * pageView.ChildrenPerPage, (page + 1) * pageView.ChildrenPerPage); }; DisplayDuplicants(data, duplicantBlock.GetComponent <HierarchyReferences>().GetReference("Content").gameObject, -1, -1); GameObject gameObject2 = Util.KInstantiateUI(tallFeatureBlock, statsContainer, true); activeColonyWidgetContainers.Add(gameObject2); activeColonyWidgets.Add("buildings", gameObject2); gameObject2.GetComponent <HierarchyReferences>().GetReference <LocText>("Title").SetText(UI.RETIRED_COLONY_INFO_SCREEN.TITLES.BUILDINGS); DisplayBuildings(data, gameObject2.GetComponent <HierarchyReferences>().GetReference("Content").gameObject); int num = 2; for (int i = 0; i < data.Stats.Length; i += num) { GameObject gameObject3 = Util.KInstantiateUI(standardStatBlock, statsContainer, true); activeColonyWidgetContainers.Add(gameObject3); for (int j = 0; j < num; j++) { if (i + j <= data.Stats.Length - 1) { RetiredColonyData.RetiredColonyStatistic retiredColonyStatistic = data.Stats[i + j]; ConfigureGraph(GetStatistic(retiredColonyStatistic.id, data), gameObject3); } } } StartCoroutine(ComputeSizeStatGrid()); }
private void DisplayDuplicants(RetiredColonyData data, GameObject container, int range_min = -1, int range_max = -1) { for (int num = container.transform.childCount - 1; num >= 0; num--) { UnityEngine.Object.DestroyImmediate(container.transform.GetChild(num).gameObject); } for (int i = 0; i < data.Duplicants.Length; i++) { if (i < range_min || (i > range_max && range_max != -1)) { GameObject gameObject = new GameObject(); gameObject.transform.SetParent(container.transform); } else { RetiredColonyData.RetiredDuplicantData retiredDuplicantData = data.Duplicants[i]; GameObject gameObject2 = Util.KInstantiateUI(duplicantPrefab, container, true); HierarchyReferences component = gameObject2.GetComponent <HierarchyReferences>(); component.GetReference <LocText>("NameLabel").SetText(retiredDuplicantData.name); component.GetReference <LocText>("AgeLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.DUPLICANT_AGE, retiredDuplicantData.age.ToString())); component.GetReference <LocText>("SkillLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.SKILL_LEVEL, retiredDuplicantData.skillPointsGained.ToString())); SymbolOverrideController reference = component.GetReference <SymbolOverrideController>("SymbolOverrideController"); reference.RemoveAllSymbolOverrides(0); KBatchedAnimController componentInChildren = gameObject2.GetComponentInChildren <KBatchedAnimController>(); componentInChildren.SetSymbolVisiblity("snapTo_neck", false); componentInChildren.SetSymbolVisiblity("snapTo_goggles", false); componentInChildren.SetSymbolVisiblity("snapTo_hat", false); componentInChildren.SetSymbolVisiblity("snapTo_hat_hair", false); foreach (KeyValuePair <string, string> accessory in retiredDuplicantData.accessories) { KAnim.Build.Symbol symbol = Db.Get().Accessories.Get(accessory.Value).symbol; AccessorySlot accessorySlot = Db.Get().AccessorySlots.Get(accessory.Key); reference.AddSymbolOverride(accessorySlot.targetSymbolId, symbol, 0); gameObject2.GetComponentInChildren <KBatchedAnimController>().SetSymbolVisiblity(accessory.Key, true); } reference.ApplyOverrides(); } } StartCoroutine(ActivatePortraitsWhenReady(container)); }
private static RetiredColonyData LoadRetiredColony(string file, bool skipStats, Encoding enc) { RetiredColonyData retiredColonyData = new RetiredColonyData(); using (FileStream stream = File.Open(file, FileMode.Open)) { using (StreamReader reader = new StreamReader(stream, enc)) { using (JsonReader jsonReader = new JsonTextReader(reader)) { string a = string.Empty; List <string> list = new List <string>(); List <Tuple <string, int> > list2 = new List <Tuple <string, int> >(); List <RetiredColonyData.RetiredDuplicantData> list3 = new List <RetiredColonyData.RetiredDuplicantData>(); List <RetiredColonyData.RetiredColonyStatistic> list4 = new List <RetiredColonyData.RetiredColonyStatistic>(); while (jsonReader.Read()) { JsonToken tokenType = jsonReader.TokenType; if (tokenType == JsonToken.PropertyName) { a = jsonReader.Value.ToString(); } if (tokenType == JsonToken.String && a == "colonyName") { retiredColonyData.colonyName = jsonReader.Value.ToString(); } if (tokenType == JsonToken.String && a == "date") { retiredColonyData.date = jsonReader.Value.ToString(); } if (tokenType == JsonToken.Integer && a == "cycleCount") { retiredColonyData.cycleCount = int.Parse(jsonReader.Value.ToString()); } if (tokenType == JsonToken.String && a == "achievements") { list.Add(jsonReader.Value.ToString()); } if (tokenType == JsonToken.StartObject && a == "Duplicants") { string a2 = null; RetiredColonyData.RetiredDuplicantData retiredDuplicantData = new RetiredColonyData.RetiredDuplicantData(); retiredDuplicantData.accessories = new Dictionary <string, string>(); while (true) { if (jsonReader.Read()) { tokenType = jsonReader.TokenType; switch (tokenType) { case JsonToken.PropertyName: a2 = jsonReader.Value.ToString(); goto default; default: if (a2 == "name" && tokenType == JsonToken.String) { retiredDuplicantData.name = jsonReader.Value.ToString(); } if (a2 == "age" && tokenType == JsonToken.Integer) { retiredDuplicantData.age = int.Parse(jsonReader.Value.ToString()); } if (a2 == "skillPointsGained" && tokenType == JsonToken.Integer) { retiredDuplicantData.skillPointsGained = int.Parse(jsonReader.Value.ToString()); } if (a2 == "accessories") { string text = null; while (true) { if (jsonReader.Read()) { tokenType = jsonReader.TokenType; switch (tokenType) { case JsonToken.PropertyName: text = jsonReader.Value.ToString(); goto default; default: if (text != null && jsonReader.Value != null && tokenType == JsonToken.String) { string value = jsonReader.Value.ToString(); retiredDuplicantData.accessories.Add(text, value); } continue; case JsonToken.EndObject: break; } } break; } } continue; case JsonToken.EndObject: break; } } break; } list3.Add(retiredDuplicantData); } if (tokenType == JsonToken.StartObject && a == "buildings") { string a3 = null; string a4 = null; int b = 0; while (true) { if (jsonReader.Read()) { tokenType = jsonReader.TokenType; switch (tokenType) { case JsonToken.PropertyName: a3 = jsonReader.Value.ToString(); goto default; default: if (a3 == "first" && tokenType == JsonToken.String) { a4 = jsonReader.Value.ToString(); } if (a3 == "second" && tokenType == JsonToken.Integer) { b = int.Parse(jsonReader.Value.ToString()); } continue; case JsonToken.EndObject: break; } } break; } Tuple <string, int> item = new Tuple <string, int>(a4, b); list2.Add(item); } if (tokenType == JsonToken.StartObject && a == "Stats") { if (skipStats) { break; } string a5 = null; RetiredColonyData.RetiredColonyStatistic retiredColonyStatistic = new RetiredColonyData.RetiredColonyStatistic(); List <Tuple <float, float> > list5 = new List <Tuple <float, float> >(); while (true) { if (jsonReader.Read()) { tokenType = jsonReader.TokenType; switch (tokenType) { case JsonToken.PropertyName: a5 = jsonReader.Value.ToString(); goto default; default: if (a5 == "id" && tokenType == JsonToken.String) { retiredColonyStatistic.id = jsonReader.Value.ToString(); } if (a5 == "name" && tokenType == JsonToken.String) { retiredColonyStatistic.name = jsonReader.Value.ToString(); } if (a5 == "nameX" && tokenType == JsonToken.String) { retiredColonyStatistic.nameX = jsonReader.Value.ToString(); } if (a5 == "nameY" && tokenType == JsonToken.String) { retiredColonyStatistic.nameY = jsonReader.Value.ToString(); } if (a5 == "value" && tokenType == JsonToken.StartObject) { string a6 = null; float a7 = 0f; float b2 = 0f; while (true) { if (jsonReader.Read()) { tokenType = jsonReader.TokenType; switch (tokenType) { case JsonToken.PropertyName: a6 = jsonReader.Value.ToString(); goto default; default: if (a6 == "first" && (tokenType == JsonToken.Float || tokenType == JsonToken.Integer)) { a7 = float.Parse(jsonReader.Value.ToString()); } if (a6 == "second" && (tokenType == JsonToken.Float || tokenType == JsonToken.Integer)) { b2 = float.Parse(jsonReader.Value.ToString()); } continue; case JsonToken.EndObject: break; } } break; } Tuple <float, float> item2 = new Tuple <float, float>(a7, b2); list5.Add(item2); } continue; case JsonToken.EndObject: break; } } break; } retiredColonyStatistic.value = list5.ToArray(); list4.Add(retiredColonyStatistic); } } retiredColonyData.Duplicants = list3.ToArray(); retiredColonyData.Stats = list4.ToArray(); retiredColonyData.achievements = list.ToArray(); retiredColonyData.buildings = list2; return(retiredColonyData); } } } }
private void OnColonySummary() { RetiredColonyData currentColonyRetiredColonyData = RetireColonyUtility.GetCurrentColonyRetiredColonyData(); MainMenu.ActivateRetiredColoniesScreenFromData(Instance.transform.parent.gameObject, currentColonyRetiredColonyData); }
private void UpdateAchievementData(RetiredColonyData data, string[] newlyAchieved = null) { int num = 1; float num2 = 1f; if (newlyAchieved != null && newlyAchieved.Length > 0) { this.retiredColonyData = RetireColonyUtility.LoadRetiredColonies(true); } foreach (KeyValuePair <string, GameObject> achievementEntry in achievementEntries) { bool flag = false; bool flag2 = false; if (data != null) { string[] achievements = data.achievements; foreach (string a in achievements) { if (a == achievementEntry.Key) { flag = true; break; } } } if (!flag && data == null && this.retiredColonyData != null) { RetiredColonyData[] array = this.retiredColonyData; foreach (RetiredColonyData retiredColonyData in array) { string[] achievements2 = retiredColonyData.achievements; foreach (string a2 in achievements2) { if (a2 == achievementEntry.Key) { flag2 = true; } } } } bool flag3 = false; if (newlyAchieved != null) { for (int l = 0; l < newlyAchieved.Length; l++) { if (newlyAchieved[l] == achievementEntry.Key) { flag3 = true; } } } if (flag || flag3) { if (flag3) { achievementEntry.Value.GetComponent <AchievementWidget>().ActivateNewlyAchievedFlourish(num2 + (float)num * 1f); num++; } else { achievementEntry.Value.GetComponent <AchievementWidget>().SetAchievedNow(); } } else if (flag2) { achievementEntry.Value.GetComponent <AchievementWidget>().SetAchievedBefore(); } else if (data == null) { achievementEntry.Value.GetComponent <AchievementWidget>().SetNeverAchieved(); } else { achievementEntry.Value.GetComponent <AchievementWidget>().SetNotAchieved(); } } if (newlyAchieved != null && newlyAchieved.Length > 0) { StartCoroutine(ShowAchievementVeil()); StartCoroutine(ClearAchievementVeil(num2 + (float)num * 1f)); } }
private void DisplayInfoBlock(RetiredColonyData data, GameObject container) { container.GetComponent <HierarchyReferences>().GetReference <LocText>("ColonyNameLabel").SetText(data.colonyName); container.GetComponent <HierarchyReferences>().GetReference <LocText>("CycleCountLabel").SetText(string.Format(UI.RETIRED_COLONY_INFO_SCREEN.CYCLE_COUNT, data.cycleCount.ToString())); }