2022-01-22 20:13:49 -08:00
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 TNH_ScoreDisplay scoreDisplay ;
private Text lblGlobalScores ;
private GameObject gObjLoading ;
2022-01-22 23:41:31 -08:00
#region INITIALIZATION
// public void Start()
// {
// Debug.Log("--- Installed BepInEx Plugins ---");
// foreach (var plugin in Chainloader.PluginInfos)
// {
// Debug.Log(plugin.Key);
// }
// Debug.Log("--- End Plugins ---");
//}
2022-01-22 20:13:49 -08:00
public void Init ( TNH_ScoreDisplay tnhScore , Text scoreLabel , GameObject gObjLoading )
{
if ( initialized )
return ;
this . scoreDisplay = tnhScore ;
this . lblGlobalScores = scoreLabel ;
this . lblGlobalScores . resizeTextForBestFit = true ;
this . lblGlobalScores . horizontalOverflow = HorizontalWrapMode . Overflow ;
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>Online leaderboards player count is incompatible with TNHTweaker.</color>" ;
this . gObjLoading . SetActive ( true ) ;
}
initialized = true ;
}
2022-01-22 23:41:31 -08:00
#endregion
2022-01-22 20:13:49 -08:00
2022-01-22 23:41:31 -08:00
#region UPDATE
private void Update ( )
2022-01-22 20:13:49 -08:00
{
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 . SetActive ( true ) ;
curID = null ;
}
}
}
2022-01-22 23:41:31 -08:00
#endregion
2022-01-22 20:13:49 -08:00
}