public static void RefreshTNHUI(TNH_UIManager instance, List <TNH_UIManager.CharacterCategory> Categories, TNH_CharacterDatabase CharDatabase) { TNHTweakerLogger.Log("TNHTweaker -- Refreshing TNH UI", TNHTweakerLogger.LogType.General); //Load all characters into the UI foreach (TNH_CharacterDef character in LoadedTemplateManager.LoadedCharactersDict.Keys) { if (!Categories[(int)character.Group].Characters.Contains(character.CharacterID)) { Categories[(int)character.Group].Characters.Add(character.CharacterID); CharDatabase.Characters.Add(character); } } //Update the UI Traverse instanceTraverse = Traverse.Create(instance); int selectedCategory = (int)instanceTraverse.Field("m_selectedCategory").GetValue(); int selectedCharacter = (int)instanceTraverse.Field("m_selectedCharacter").GetValue(); instanceTraverse.Method("SetSelectedCategory", selectedCategory).GetValue(); instance.OBS_CharCategory.SetSelectedButton(selectedCharacter); }
public static IEnumerator GetPlayerScores(int num_before, int num_after, TNH_ScoreDisplay instance) { TNHTweakerLogger.Log("Getting player scores from TNH Dashboard", TNHTweakerLogger.LogType.TNH); string url = "https://tnh-dashboard.azure-api.net/v1/api/scores/search"; List <RUST.Steamworks.HighScoreManager.HighScore> combinedScores = new List <RUST.Steamworks.HighScoreManager.HighScore>(); if (GM.TNH_Manager != null) { url += "?character=" + GM.TNH_Manager.C.DisplayName; url += "&map=" + GM.TNH_Manager.LevelName; url += "&health=" + health[(int)GM.TNHOptions.HealthModeSetting]; url += "&equipment=" + equipment[(int)GM.TNHOptions.EquipmentModeSetting]; url += "&length=" + length[(int)GM.TNHOptions.ProgressionTypeSetting]; url += "&name=" + SteamFriends.GetPersonaName(); url += "&num_before=1"; url += "&num_after=1"; } else { TNH_UIManager manager = GameObject.FindObjectOfType <TNH_UIManager>(); if (manager == null) { TNHTweakerLogger.LogError("Neither the TNH Manager or the UI Manager were found! Scores will not display"); yield break; } url += "?character=" + manager.CharDatabase.GetDef((TNH_Char)GM.TNHOptions.LastPlayedChar).DisplayName; url += "&map=" + manager.CurLevelID; url += "&health=" + health[(int)GM.TNHOptions.HealthModeSetting]; url += "&equipment=" + equipment[(int)GM.TNHOptions.EquipmentModeSetting]; url += "&length=" + length[(int)GM.TNHOptions.ProgressionTypeSetting]; url += "&name=" + SteamFriends.GetPersonaName(); url += "&num_before=1"; url += "&num_after=1"; } TNHTweakerLogger.Log("Request URL: " + url, TNHTweakerLogger.LogType.TNH); using (UnityWebRequest wwwGetScores = UnityWebRequest.Get(url)) { yield return(wwwGetScores.Send()); if (wwwGetScores.isError) { TNHTweakerLogger.LogError("Something bad happened getting scores \n" + wwwGetScores.error); } else if (wwwGetScores.responseCode == 404) { TNHTweakerLogger.LogWarning("High scores not found for player in table!"); combinedScores.AddRange(instance.m_scoresTop.Take(6)); } else { TNHTweakerLogger.Log("Got Scores!", TNHTweakerLogger.LogType.TNH); string scores = wwwGetScores.downloadHandler.text; TNHTweakerLogger.Log(scores, TNHTweakerLogger.LogType.TNH); List <ScoreEntry> playerScores = JsonConvert.DeserializeObject <List <ScoreEntry> >(scores); for (int i = 0; i < playerScores.Count; i++) { instance.m_scoresPlayer.Add(new RUST.Steamworks.HighScoreManager.HighScore() { name = playerScores[i].Name, rank = playerScores[i].Rank, score = playerScores[i].Score }); } if (instance.m_scoresTop != null) { combinedScores.AddRange(instance.m_scoresTop.Take(3)); } if (instance.m_scoresPlayer != null) { combinedScores.AddRange(instance.m_scoresPlayer.Take(3)); } } } instance.m_hasScoresPlayer = true; instance.SetGlobalHighScoreDisplay(combinedScores); }
public static IEnumerator InitializeTNHMenuAsync(string path, Text progressText, Text itemsText, SceneLoader hotdog, List <TNH_UIManager.CharacterCategory> Categories, TNH_CharacterDatabase CharDatabase, TNH_UIManager instance, bool outputFiles) { hotdog.gameObject.SetActive(false); bool isOtherLoaderLoaded; try{ PokeOtherloader(); isOtherLoaderLoaded = true; } catch { isOtherLoaderLoaded = false; TNHTweakerLogger.LogWarning("TNHTweaker -- OtherLoader not found. If you are using OtherLoader, please ensure you have version 0.1.6 or later!"); } //First thing we want to do is wait for all asset bundles to be loaded in float itemLoadProgress = 0; do { yield return(null); itemLoadProgress = AsyncLoadMonitor.GetProgress(); if (isOtherLoaderLoaded) { itemLoadProgress = Mathf.Min(itemLoadProgress, GetOtherLoaderProgress()); itemsText.text = GetLoadingItems(); } progressText.text = "LOADING ITEMS : " + (int)(itemLoadProgress * 100) + "%"; }while (itemLoadProgress < 1); //Now we wait for magazine caching to be done float cachingProgress = 0; do { yield return(null); cachingProgress = PatcherStatus.PatcherProgress; itemsText.text = PatcherStatus.CacheLog; progressText.text = "CACHING ITEMS : " + (int)(cachingProgress * 100) + "%"; if (PatcherStatus.CachingFailed) { MagazineCacheFailed = true; progressText.text = "CACHING FAILED! SEE ABOVE"; throw new Exception("Magazine Caching Failed!"); } }while (cachingProgress < 1); //Now perform final steps of loading characters LoadTNHTemplates(CharDatabase); if (outputFiles) { CreateTNHFiles(path); } RefreshTNHUI(instance, Categories, CharDatabase); itemsText.text = ""; progressText.text = "CACHING COMPLETE"; hotdog.gameObject.SetActive(true); TNHInitialized = true; }