mirror of
https://github.com/muskit/H3VR-TNH-Quality-of-Life-Improvements.git
synced 2026-06-02 20:24:26 -07:00
92 lines
2.8 KiB
C#
92 lines
2.8 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using BepInEx.Bootstrap;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using FistVR;
|
|
using RUST.Steamworks;
|
|
using System.Collections.Generic;
|
|
|
|
namespace TNHQoLImprovements
|
|
{
|
|
public class LeaderboardPlayerCount : MonoBehaviour
|
|
{
|
|
private bool initialized = false;
|
|
private bool tnhTweakerInstalled = false;
|
|
|
|
private string curID;
|
|
private string loadingStr;
|
|
|
|
private TNH_ScoreDisplay scoreDisplay;
|
|
private Text lblGlobalScores;
|
|
private GameObject gObjLoading;
|
|
|
|
#region INITIALIZATION
|
|
public void Init(TNH_ScoreDisplay tnhScore, Text scoreLabel, GameObject gObjLoading)
|
|
{
|
|
if (initialized)
|
|
return;
|
|
|
|
// don't run with TNHTweaker installed
|
|
this.gObjLoading = gObjLoading;
|
|
var loadedAssemblies = System.AppDomain.CurrentDomain.GetAssemblies();
|
|
if (Array.Exists<Assembly>(loadedAssemblies, x => x.GetName().Name == "TakeAndHoldTweaker"))
|
|
{
|
|
tnhTweakerInstalled = true;
|
|
this.gObjLoading.transform.GetChild(0).GetComponent<Text>().text = "<color=lightblue><size=30>Online leaderboards player count unavailable for TNHTweaker.</size></color>";
|
|
this.gObjLoading.SetActive(true);
|
|
return;
|
|
}
|
|
|
|
this.scoreDisplay = tnhScore;
|
|
this.lblGlobalScores = scoreLabel;
|
|
this.lblGlobalScores.resizeTextForBestFit = true;
|
|
this.lblGlobalScores.horizontalOverflow = HorizontalWrapMode.Overflow;
|
|
loadingStr = gObjLoading.GetComponentInChildren<Text>().text;
|
|
|
|
|
|
|
|
initialized = true;
|
|
}
|
|
#endregion
|
|
|
|
#region UPDATE
|
|
private void Update()
|
|
{
|
|
if (!initialized || tnhTweakerInstalled)
|
|
return;
|
|
|
|
string newID = scoreDisplay.m_curSequenceID;
|
|
if (newID != curID)
|
|
UpdatePlayerCountDisplay(newID);
|
|
}
|
|
|
|
private void UpdatePlayerCountDisplay(string id)
|
|
{
|
|
try
|
|
{
|
|
string playerCountText = Steamworks.SteamUserStats
|
|
.GetLeaderboardEntryCount(HighScoreManager.Leaderboards[id])
|
|
.ToString("N0");
|
|
|
|
lblGlobalScores.text = "Global Scores: <color=lightblue>(" + playerCountText + " players)</color>";
|
|
curID = id;
|
|
gObjLoading.SetActive(false);
|
|
}
|
|
catch (KeyNotFoundException e)
|
|
{
|
|
lblGlobalScores.text = "Global Scores:";
|
|
gObjLoading.GetComponentInChildren<Text>().text = loadingStr;
|
|
gObjLoading.SetActive(true);
|
|
curID = null;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
gObjLoading.GetComponentInChildren<Text>().text = string.Format("<color=lightblue><size=30>Unknown error occured trying to retrieve online player count.</size></color>\n" +
|
|
"<color=red>{0}</color>", e);
|
|
gObjLoading.SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
} |