6 Commits

Author SHA1 Message Date
msk 2f7fe60cd6 add discord contact in the Thunderstore readme 2023-11-13 16:15:45 -08:00
msk 611f074b73 minor cleanups, add the preview images back 2023-07-31 14:46:53 -07:00
msk 6cc32af15d Update README.md 2023-07-31 14:08:11 -07:00
msk b87db514a5 change initialization approach, refactoring
should resolve errors occurring on both Atlas and WurstMod maps
2023-07-31 02:32:02 -07:00
msk 73d8a5b89d Reorganize, revert changes for "fixing" Atlas maps 2023-07-31 00:12:10 -07:00
msk cf4b2847be Revert "add small setup delays to address errors in Atlas maps"
This reverts commit 64d8df148b.
2023-07-30 22:46:37 -07:00
12 changed files with 112 additions and 108 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"omnisharp.useModernNet": false
}
+1 -1
View File
@@ -13,7 +13,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
PackageName: TNH_Quality_of_Life_Improvements
Author: muskit
Version: 1.2.4
Version: 1.2.5
Icon: {fileID: 2800000, guid: af542f3f6d6914f4e96d0326e8b296cc, type: 3}
ReadMe: {fileID: 102900000, guid: efa2d6091ed77bd4b879a74bd81d6cbc, type: 3}
WebsiteURL: https://github.com/muskit/TNH-Quality-of-Life-Improvements
+33 -29
View File
@@ -68,7 +68,7 @@ public static AssetBundle bundle;
public static ConfigEntry<HealthExpireIndicationType> cfgHealthCrystalIndicator;
// Take and Hold modifications
private static InPlay instance;
private static InPlay playInstance;
// Searching for old leaderboards player count mod to disable
private float lpcSearchTime;
@@ -85,26 +85,38 @@ public static AssetBundle bundle;
private void SceneChanged(Scene from, Scene to)
{
StartCoroutine("SceneChangedCoRoutine");
StartCoroutine("SceneChangedCoroutine");
}
private IEnumerator SceneChangedCoRoutine()
private IEnumerator SceneChangedCoroutine()
{
// grab H3VR objects
playerCamera = null;
hpDisplay = null;
while (playerCamera == null)
Destroy(playInstance);
for (int i = 0; i < 11; ++i)
{
playerCamera = GameObject.FindGameObjectWithTag("MainCamera");
hpDisplay = FindObjectOfType<FVRHealthBar>();
yield return null;
}
// TNH patches
if (GameObject.Find("_GameManager") != null || FindObjectOfType<TNH_Manager>() != null)
{
Logger.LogInfo("We are in a TNH game!");
playInstance = new GameObject().AddComponent<InPlay>();
playerCamera = GameObject.FindGameObjectWithTag("MainCamera");
break;
}
else
{
Logger.LogInfo(String.Format("Couldn't find a TNH game. Trying again...({0}/10)", i+1));
yield return new WaitForEndOfFrame();
}
}
// ---- MAINCAMERA FOUND SIGNIFIES THAT ESSENTIAL GAME OBJECTS HAVE LOADED IN ---- //
// find Agency font
GetFonts();
if (playInstance == null)
{
Logger.LogInfo("We are NOT in a TNH game!");
}
// setup non-TNH specific static objects
// running AFTER searching for TNH_Manager ensures we have everything initialized
playerCamera = GameObject.FindGameObjectWithTag("MainCamera");
hpDisplay = FindObjectOfType<FVRHealthBar>();
// apply health counter tweaks globally
if (hpDisplay != null)
{
@@ -119,18 +131,8 @@ public static AssetBundle bundle;
{
WristMenuAPI.Buttons.Remove(wmbHPToggle);
}
if (GameObject.Find("_GameManager") != null || FindObjectOfType<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);
}
}
GetFonts();
}
// called on scene change, find fonts from game if they're not set
private void GetFonts()
@@ -273,7 +275,7 @@ public static AssetBundle bundle;
// stick stats to hand after game over
if (cfgShowHolds.Value || cfgShowTokens.Value)
InPlay.Patch(harmony);
TNHInfo.Patch(harmony);
// show numerical representation of shop values
if (cfgShowNumbersAtShop.Value)
@@ -283,7 +285,9 @@ public static AssetBundle bundle;
// player tokens
ShopTokenPatch.Patch(harmony);
}
}
Logger.LogInfo("Successfully ran patches!");
}
private void ToggleHPVisibility(object sender, ButtonClickEventArgs args)
{
+7 -2
View File
@@ -2,11 +2,12 @@
Ever got frustrated checking your HP against a bright ceiling in TNH?
Have you forgotten how many Holds you're playing for, so you don't know if you should spend all your tokens?
And... wait, which hold are you on again?
**This mod adds quality of life improvements to the *Take and Hold* experience that help with these questions, and then some.**
**This mod adds quality of life improvements to the *Take and Hold* experience that seek to address various littles issues like those aforementioned.**
## Features
* Health counter toggle
* Better health counter visibility
* Health counter fade when aiming around it
* Health counter fade/hide when aiming around it
* Token, hold, and wave counter on radar hand
* Player count for online leaderboards; see how you stack up!
* Disabled if [*TakeAndHoldTweaker*](https://h3vr.thunderstore.io/package/devyndamonster/TakeAndHoldTweaker/) is installed
@@ -19,8 +20,12 @@ Toggle and customize these features in your mod manager's *Config editor*.
**This mod will not disqualify you from Steam or TNHTweaker leaderboards.**
For any issues/ideas, please create an issue at the GitHub repository (linked on Thunderstore page).
You can also contact me on Discord either by messaging or pinging me `@muskit` in one of the modding servers.
## Changelog
1.2.5
* [TNH] Change initialization approach to cover errors in both Atlas/WurstMod-based maps
1.2.4
* [TNH] Fix errors occurring in Atlas-based maps
* Update MeatKit (now on Unity 5.6.7f1!)
+9
View File
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: a7e0925cb0a2d20488bcb5d230cf74f7
folderAsset: yes
timeCreated: 1690792321
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
+5 -5
View File
@@ -1,11 +1,10 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
using UnityEngine.UI;
using FistVR;
// To be attached to FVRHealthBar object
public class HPHideWhenAiming : MonoBehaviour {
public class HPHideWhenAiming : MonoBehaviour
{
CanvasGroup canvasGroup;
GameObject gObjHUD;
@@ -25,7 +24,8 @@ public class HPHideWhenAiming : MonoBehaviour {
//LineRenderer colliderRenderer;
// Use this for initialization
void Start() {
void Start()
{
gObjHUD = transform.GetChild(0).gameObject;
leftHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(1).GetComponent<FVRViveHand>();
rightHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(0).GetComponent<FVRViveHand>();
+5 -44
View File
@@ -1,7 +1,4 @@
using HarmonyLib;
using System.Reflection;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine;
using FistVR;
namespace TNHQoLImprovements
@@ -13,50 +10,14 @@ namespace TNHQoLImprovements
{
public static TNH_Manager tnhManager;
private static Transform[] hands;
private static GameObject tnhInfo;
public static bool InHold()
{
if (tnhManager == null)
return false;
return tnhManager.Phase == TNH_Phase.Hold;
}
// Bring extra info into game over
public static void Patch(Harmony harmony)
{
var original = typeof(TNH_Manager).GetMethod("SetPhase", BindingFlags.NonPublic | BindingFlags.Instance);
var patch = typeof(InPlay).GetMethod("MoveStatsToController", BindingFlags.NonPublic | BindingFlags.Static);
harmony.Patch(original, postfix: new HarmonyMethod(patch));
}
private static void MoveStatsToController(TNH_Phase p)
{
if (tnhManager == null)
return;
if (p == TNH_Phase.Dead || p == TNH_Phase.Completed)
{
int handSide = tnhManager.RadarHand == TNH_RadarHand.Left ? 0 : 1;
tnhInfo.transform.SetParent(hands[handSide], false);
tnhInfo.GetComponent<TNHInfo>().GameOverPos();
}
}
void Start()
{
tnhManager = FindObjectOfType<TNH_Manager>();
var rig = Object.FindObjectOfType<FVRMovementManager>().transform;
hands = new Transform[] {
rig.transform.GetChild(1), rig.transform.GetChild(0)
};
tnhInfo = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("TNHInfo"), FindObjectOfType<TAH_Reticle>().transform.GetChild(3));
tnhInfo.transform.localScale = new Vector3(0.002f, 0.002f, 0.002f);
TNHInfo.instance = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("TNHInfo"),
FindObjectOfType<TAH_Reticle>().transform.GetChild(3))
.GetComponent<TNHInfo>();
TNHInfo.instance.transform.localScale = new Vector3(0.002f, 0.002f, 0.002f);
}
void OnDestroy()
+4 -20
View File
@@ -1,5 +1,4 @@
using System.Collections;
using HarmonyLib;
using HarmonyLib;
using System.Reflection;
using UnityEngine;
using UnityEngine.UI;
@@ -27,7 +26,7 @@ namespace TNHQoLImprovements
{
private Text text;
private IEnumerator Start()
private void Start()
{
var gObjText = new GameObject("TokenCounter");
gObjText.transform.SetParent(transform, false);
@@ -38,26 +37,11 @@ namespace TNHQoLImprovements
text.font = MeatKitPlugin.fontBombardier;
text.fontSize = 55;
text.color = new Color(0.1307786f, 0.2461715f, 0.359f);
while (InPlay.tnhManager == null)
{
Debug.Log("[ShopTokenNumber] tnhManager is null!");
yield return null;
}
InPlay.tnhManager.TokenCountChangeEvent += UpdateText;
UpdateText();
}
private void UpdateText(int _ = 0)
}
private void Update()
{
int tokens = InPlay.tnhManager.GetNumTokens();
text.text = tokens.ToString();
}
private void OnDestroy()
{
InPlay.tnhManager.TokenCountChangeEvent -= UpdateText;
}
}
}
+44 -6
View File
@@ -1,4 +1,5 @@
using HarmonyLib;
using System.Reflection;
using UnityEngine;
using FistVR;
@@ -6,23 +7,55 @@ namespace TNHQoLImprovements
{
class TNHInfo : MonoBehaviour
{
private GameObject holdCounter;
public static TNHInfo instance;
public Transform[] hands;
private GameObject holdCounter;
private GameObject tokenCounter;
private GameObject waveCounter;
public void Start()
// Bring extra info into game over
public static void Patch(Harmony harmony)
{
if (MeatKitPlugin.cfgShowHolds.Value)
var original = typeof(TNH_Manager).GetMethod("SetPhase", BindingFlags.NonPublic | BindingFlags.Instance);
var patch = typeof(TNHInfo).GetMethod("MoveStatsToController", BindingFlags.NonPublic | BindingFlags.Static);
harmony.Patch(original, postfix: new HarmonyMethod(patch));
}
private static void MoveStatsToController(TNH_Phase p)
{
if (InPlay.tnhManager == null)
return;
if (p == TNH_Phase.Dead || p == TNH_Phase.Completed)
{
int handSide = InPlay.tnhManager.RadarHand == TNH_RadarHand.Left ? 0 : 1;
instance.transform.SetParent(instance.hands[handSide], false);
instance.GetComponent<TNHInfo>().GameOverPos();
}
}
void Start()
{
instance = this;
if (MeatKitPlugin.cfgShowHolds.Value)
holdCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("HoldCounter"), transform);
if (MeatKitPlugin.cfgShowTokens.Value)
tokenCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("TokenCounter"), transform);
if (MeatKitPlugin.cfgShowWaves.Value)
waveCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("WaveCounter"), transform);
var rig = Object.FindObjectOfType<FVRMovementManager>().transform;
hands = new Transform[] {
rig.transform.GetChild(1), rig.transform.GetChild(0)
};
PlayPos();
}
public void PlayPos()
private void PlayPos()
{
transform.localPosition = new Vector3(0, 0, -1.2f);
if (holdCounter != null)
@@ -35,7 +68,7 @@ namespace TNHQoLImprovements
waveCounter.transform.localPosition = new Vector3(333, 0, 0);
}
public void GameOverPos()
private void GameOverPos()
{
transform.localScale = new Vector3(.0002f, .0002f, .0002f);
transform.localPosition = Vector3.zero;
@@ -60,7 +93,7 @@ namespace TNHQoLImprovements
}
}
public void Update()
private void Update()
{
// game over area; do not update anything else
if (InPlay.tnhManager.Phase == TNH_Phase.Dead || InPlay.tnhManager.Phase == TNH_Phase.Completed)
@@ -100,5 +133,10 @@ namespace TNHQoLImprovements
waveCounter.SetActive(false);
}
}
void OnDestroy()
{
instance = null;
}
}
}
+1 -1
View File
@@ -19,6 +19,6 @@ Numbered tokens at item stations<br/>
Player count for online leaderboards (won't work w/ *TNHTweaker* installed)<br/>
<img src=preview/leaderboard.png><br/>
Features are modifiable via the mod manager's *Config editor*.
Features are modifiable via your mod manager's *Config editor*.
**This mod is built on [MeatKit](https://github.com/H3VR-Modding/MeatKit).**