mirror of
https://github.com/muskit/H3VR-TNH-Quality-of-Life-Improvements.git
synced 2026-06-02 20:24:26 -07:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f938e95c8 | |||
| b259424300 |
@@ -13,7 +13,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
PackageName: TNH_Quality_of_Life_Improvements
|
||||
Author: muskit
|
||||
Version: 1.0.0
|
||||
Version: 1.0.1
|
||||
Icon: {fileID: 2800000, guid: 785b7946398f5314b95bf593d2d77d67, type: 3}
|
||||
ReadMe: {fileID: 102900000, guid: ab1d6dea017447a48ac348db588a6f35, type: 3}
|
||||
WebsiteURL: https://github.com/muskit/TNH-Quality-of-Life-Improvements
|
||||
|
||||
@@ -32,28 +32,33 @@ public class MeatKitPlugin : BaseUnityPlugin
|
||||
#pragma warning disable 414
|
||||
private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
#pragma warning restore 414
|
||||
|
||||
private bool lpcKilled = false;
|
||||
|
||||
public static AssetBundle bundle;
|
||||
|
||||
public static ConfigEntry<bool> showHPBackground;
|
||||
public static ConfigEntry<float> hpBackgroundOpacity;
|
||||
public static ConfigEntry<bool> showTokens;
|
||||
public static ConfigEntry<bool> showHolds;
|
||||
public static ConfigEntry<bool> cfgShowLPC;
|
||||
public static ConfigEntry<bool> cfgSolidifyHPText;
|
||||
public static ConfigEntry<bool> cfgShowHPBackground;
|
||||
public static ConfigEntry<float> cfgHPBackgroundOpacity;
|
||||
public static ConfigEntry<bool> cfgShowTokens;
|
||||
public static ConfigEntry<bool> cfgShowHolds;
|
||||
|
||||
private static InPlay instance;
|
||||
|
||||
private LeaderboardPlayerCountPatch lpc;
|
||||
private bool lpcModGone = false;
|
||||
private float lpcModSearchTimeEnd;
|
||||
|
||||
private void SceneChanged(Scene from, Scene to)
|
||||
{
|
||||
//Logger.LogInfo(string.Format("scene chg: {0} --> {1}", from.name, to.name));
|
||||
if(GameObject.Find("_NewTAHReticle") != null)
|
||||
Logger.LogInfo("_GameManager present: " + (GameObject.Find("_GameManager") != null));
|
||||
Logger.LogInfo("TNH_Manager object present: " + (FindObjectOfType<FistVR.TNH_Manager>() != null));
|
||||
if(GameObject.Find("_GameManager") != null || FindObjectOfType<FistVR.TNH_Manager>() != null)
|
||||
{
|
||||
Logger.LogInfo("We are in a TNH game!");
|
||||
instance = new GameObject().AddComponent<InPlay>();
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.LogInfo("We are NOT in a TNH game!");
|
||||
Destroy(instance);
|
||||
}
|
||||
}
|
||||
@@ -66,35 +71,47 @@ public class MeatKitPlugin : BaseUnityPlugin
|
||||
LoadAssets();
|
||||
|
||||
// setup configuration
|
||||
showHPBackground = Config.Bind("Health Counter",
|
||||
cfgShowHPBackground = Config.Bind("Health Counter",
|
||||
"Background enabled",
|
||||
true,
|
||||
"Apply a background to the health text.");
|
||||
hpBackgroundOpacity = Config.Bind("Health Counter",
|
||||
cfgHPBackgroundOpacity = Config.Bind("Health Counter",
|
||||
"Background opacity",
|
||||
0.74f,
|
||||
"Set opacity of health text's background (if enabled).");
|
||||
showTokens = Config.Bind("Game Info",
|
||||
cfgSolidifyHPText = Config.Bind("Health Counter",
|
||||
"Solidify HP text",
|
||||
true,
|
||||
"Set opacity of HP text to full and give it a shadow.");
|
||||
cfgShowLPC = Config.Bind("Game Info",
|
||||
"Show player count in online leaderboards",
|
||||
true,
|
||||
"Shows the number of players in the currently selected TNH leaderboard.");
|
||||
cfgShowTokens = Config.Bind("Game Info",
|
||||
"Show Tokens",
|
||||
true,
|
||||
"Shows how many tokens the player has by their radar hand.");
|
||||
showHolds = Config.Bind("Game Info",
|
||||
cfgShowHolds = Config.Bind("Game Info",
|
||||
"Show Holds",
|
||||
true,
|
||||
"Shows how many holds the player has completed by their radar hand.");
|
||||
|
||||
// patch the leaderboard
|
||||
// patch leaderboard code
|
||||
if (cfgShowLPC.Value)
|
||||
lpc = new LeaderboardPlayerCountPatch();
|
||||
|
||||
// give 120 seconds to search for old mod
|
||||
lpcModSearchTimeEnd = Time.realtimeSinceStartup + 120;
|
||||
}
|
||||
// DO NOT EDIT.
|
||||
private void LoadAssets() {}
|
||||
|
||||
/// <summary>
|
||||
/// Its only purpose: to kill TNH Leaderboard Player Count
|
||||
/// Its only purpose: to kill the deprecated TNH Leaderboard Player Count mod.
|
||||
/// </summary>
|
||||
private void Update()
|
||||
{
|
||||
if (lpcKilled)
|
||||
if (lpcModGone)
|
||||
return;
|
||||
|
||||
foreach (var plugin in Chainloader.PluginInfos)
|
||||
@@ -103,9 +120,15 @@ public class MeatKitPlugin : BaseUnityPlugin
|
||||
{
|
||||
Logger.LogWarning("TNH Leaderboard Player Count mod detected. Destroying it to avoid interference.");
|
||||
Destroy(plugin.Value.Instance);
|
||||
lpcKilled = true;
|
||||
lpcModGone = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (Time.realtimeSinceStartup >= lpcModSearchTimeEnd)
|
||||
{
|
||||
Logger.LogInfo("Stopping search for TNH Leaderboard Player Count mod after 120 seconds.");
|
||||
lpcModGone = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+14
-2
@@ -2,13 +2,25 @@
|
||||
This mod adds quality of life improvements to the *Take and Hold* experience.
|
||||
|
||||
## Features
|
||||
* More visible HP counter
|
||||
* Better Health counter visibility
|
||||
* Token and hold counter on wrist
|
||||
* Player count for online leaderboards; see how you stack up!
|
||||
* Incompatible with [*TakeAndHoldTweaker*](https://h3vr.thunderstore.io/package/devyndamonster/TakeAndHoldTweaker/); feature will be disabled!
|
||||
* Won't work with [*TakeAndHoldTweaker*](https://h3vr.thunderstore.io/package/devyndamonster/TakeAndHoldTweaker/) installed
|
||||
|
||||
Enable/disable these features in your mod manager's *Config editor*.
|
||||
|
||||
For any issues/ideas, please create an issue on the GitHub repo (linked on Thunderstore page).
|
||||
|
||||
## Changelog
|
||||
1.0.1
|
||||
* Fixed the in-play improvements only applying in Classic Hallways map (whoops!!)
|
||||
* Added option to enable/disable showing player count of online leaderboards
|
||||
* Added option to enable/disable HP text opacity/shadow change
|
||||
* (Surprisingly, the HP text normally doesn't have full opacity)
|
||||
* Searching for TNH Leaderboards Player Count now stops after 120s
|
||||
|
||||
|
||||
1.0.0
|
||||
* Initial release!
|
||||
|
||||
**NOTE: [*TNH Leaderboard Player Count*](https://h3vr.thunderstore.io/package/muskit/TNH_Leaderboard_Player_Count/) has been merged with this mod. If installed, please remove that mod as it lacks features and is no longer supported.**
|
||||
@@ -11,16 +11,23 @@ namespace TNHQoLImprovements
|
||||
private void OnDeath(bool _)
|
||||
{
|
||||
Debug.Log("I died!");
|
||||
}
|
||||
|
||||
// TODO: lose counter. patch postfix FistVR.TNH_Manager.HoldPointCompleted
|
||||
private void OnHoldLose()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
transform.parent = GameObject.Find("_NewTAHReticle/TAHReticle_HealthBar").transform;
|
||||
//transform.parent = GameObject.Find("_NewTAHReticle/TAHReticle_HealthBar").transform;
|
||||
transform.parent = FindObjectOfType<TAH_Reticle>().transform.GetChild(3);
|
||||
transform.localPosition = new Vector3(-1f, 0, -.5f);
|
||||
transform.localRotation = Quaternion.Euler(90, 0, 0);
|
||||
transform.localScale = new Vector3(0.002f, 0.002f, 0.002f);
|
||||
|
||||
GameObject.Find("[SceneSettings]").GetComponent<FVRSceneSettings>().PlayerDeathEvent += OnDeath;
|
||||
FindObjectOfType<FVRSceneSettings>().PlayerDeathEvent += OnDeath;
|
||||
}
|
||||
|
||||
void Update()
|
||||
|
||||
+20
-16
@@ -19,34 +19,37 @@ namespace TNHQoLImprovements
|
||||
{
|
||||
var canvas = gObjHUD.GetComponent<Canvas>();
|
||||
var gObjBG = new GameObject();
|
||||
var tranHPTitle = gObjHUD.transform.Find("Label_Title (1)");
|
||||
var tranHP = gObjHUD.transform.Find("Label_Title");
|
||||
Transform[] tranHPText = {
|
||||
gObjHUD.transform.Find("Label_Title (1)"),
|
||||
gObjHUD.transform.Find("Label_Title")
|
||||
};
|
||||
|
||||
// apply background
|
||||
if (MeatKitPlugin.showHPBackground.Value)
|
||||
if (MeatKitPlugin.cfgShowHPBackground.Value)
|
||||
{
|
||||
gObjBG.transform.parent = gObjHUD.transform;
|
||||
gObjBG.transform.SetSiblingIndex(0);
|
||||
gObjBG.transform.localPosition = new Vector3(0, 1, 0);
|
||||
gObjBG.transform.localRotation = Quaternion.identity;
|
||||
gObjBG.transform.localScale = tranHP.localScale;
|
||||
gObjBG.transform.localScale = tranHPText[0].localScale;
|
||||
var rawImage = gObjBG.AddComponent<RawImage>();
|
||||
rawImage.color = new Color(0, 0, 0, MeatKitPlugin.hpBackgroundOpacity.Value);
|
||||
rawImage.color = new Color(0, 0, 0, MeatKitPlugin.cfgHPBackgroundOpacity.Value);
|
||||
rawImage.rectTransform.SetWidth(100);
|
||||
rawImage.rectTransform.SetHeight(52);
|
||||
}
|
||||
|
||||
// full text alphas
|
||||
tranHPTitle.GetComponent<Text>().color = Color.white;
|
||||
tranHP.GetComponent<Text>().color = Color.white;
|
||||
// text shadows
|
||||
var shadow = tranHPTitle.gameObject.AddComponent<Shadow>();
|
||||
shadow.effectColor = new Color(0, 0, 0, .95f);
|
||||
shadow.effectDistance = new Vector2(0.5f, -0.5f);
|
||||
shadow = tranHP.gameObject.AddComponent<Shadow>();
|
||||
if (MeatKitPlugin.cfgSolidifyHPText.Value)
|
||||
{
|
||||
foreach (var text in tranHPText)
|
||||
{
|
||||
// full alpha
|
||||
text.GetComponent<Text>().color = Color.white;
|
||||
// drop shadow
|
||||
var shadow = text.gameObject.AddComponent<Shadow>();
|
||||
shadow.effectColor = new Color(0, 0, 0, .95f);
|
||||
shadow.effectDistance = new Vector2(0.5f, -0.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Use this for initialization
|
||||
void Start()
|
||||
@@ -54,10 +57,11 @@ namespace TNHQoLImprovements
|
||||
tnhManager = GameObject.Find("_GameManager").GetComponent<TNH_Manager>();
|
||||
gObjHUD = GameObject.Find("HealthBar(Clone)/f");
|
||||
|
||||
if(MeatKitPlugin.cfgShowHPBackground.Value || MeatKitPlugin.cfgSolidifyHPText.Value)
|
||||
ImproveHPTextReadability();
|
||||
if (MeatKitPlugin.showTokens.Value)
|
||||
if (MeatKitPlugin.cfgShowTokens.Value)
|
||||
Instantiate(MeatKitPlugin.bundle.LoadAsset<GameObject>("TokenCounter"));
|
||||
if (MeatKitPlugin.showHolds.Value)
|
||||
if (MeatKitPlugin.cfgShowHolds.Value)
|
||||
Instantiate(MeatKitPlugin.bundle.LoadAsset<GameObject>("HoldCounter"));
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using FistVR;
|
||||
|
||||
namespace TNHQoLImprovements
|
||||
{
|
||||
@@ -9,7 +9,8 @@ namespace TNHQoLImprovements
|
||||
{
|
||||
void Start()
|
||||
{
|
||||
transform.parent = GameObject.Find("_NewTAHReticle/TAHReticle_HealthBar").transform;
|
||||
//transform.parent = GameObject.Find("_NewTAHReticle/TAHReticle_HealthBar").transform;
|
||||
transform.parent = FindObjectOfType<TAH_Reticle>().transform.GetChild(3);
|
||||
transform.localPosition = new Vector3(1, 0, -.5f);
|
||||
transform.localRotation = Quaternion.Euler(90, 0, 0);
|
||||
transform.localScale = new Vector3(0.002f, 0.002f, 0.002f);
|
||||
@@ -31,7 +32,7 @@ namespace TNHQoLImprovements
|
||||
else
|
||||
{
|
||||
debug_iterations++;
|
||||
yield return new WaitForSeconds(0.25f);
|
||||
yield return new WaitForEndOfFrame();
|
||||
}
|
||||
}
|
||||
Debug.Log("Token sprite found after " + debug_iterations.ToString() + " iterations.");
|
||||
|
||||
Reference in New Issue
Block a user