5 Commits

Author SHA1 Message Date
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 110 additions and 107 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"omnisharp.useModernNet": false
}
+1 -1
View File
@@ -13,7 +13,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
PackageName: TNH_Quality_of_Life_Improvements PackageName: TNH_Quality_of_Life_Improvements
Author: muskit Author: muskit
Version: 1.2.4 Version: 1.2.5
Icon: {fileID: 2800000, guid: af542f3f6d6914f4e96d0326e8b296cc, type: 3} Icon: {fileID: 2800000, guid: af542f3f6d6914f4e96d0326e8b296cc, type: 3}
ReadMe: {fileID: 102900000, guid: efa2d6091ed77bd4b879a74bd81d6cbc, type: 3} ReadMe: {fileID: 102900000, guid: efa2d6091ed77bd4b879a74bd81d6cbc, type: 3}
WebsiteURL: https://github.com/muskit/TNH-Quality-of-Life-Improvements 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; public static ConfigEntry<HealthExpireIndicationType> cfgHealthCrystalIndicator;
// Take and Hold modifications // Take and Hold modifications
private static InPlay instance; private static InPlay playInstance;
// Searching for old leaderboards player count mod to disable // Searching for old leaderboards player count mod to disable
private float lpcSearchTime; private float lpcSearchTime;
@@ -85,26 +85,38 @@ public static AssetBundle bundle;
private void SceneChanged(Scene from, Scene to) private void SceneChanged(Scene from, Scene to)
{ {
StartCoroutine("SceneChangedCoRoutine"); StartCoroutine("SceneChangedCoroutine");
} }
private IEnumerator SceneChangedCoRoutine() private IEnumerator SceneChangedCoroutine()
{ {
// grab H3VR objects Destroy(playInstance);
playerCamera = null; for (int i = 0; i < 11; ++i)
hpDisplay = null;
while (playerCamera == null)
{ {
playerCamera = GameObject.FindGameObjectWithTag("MainCamera"); // TNH patches
hpDisplay = FindObjectOfType<FVRHealthBar>(); if (GameObject.Find("_GameManager") != null || FindObjectOfType<TNH_Manager>() != null)
yield return 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 ---- // if (playInstance == null)
{
// find Agency font Logger.LogInfo("We are NOT in a TNH game!");
GetFonts(); }
// 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 // apply health counter tweaks globally
if (hpDisplay != null) if (hpDisplay != null)
{ {
@@ -119,18 +131,8 @@ public static AssetBundle bundle;
{ {
WristMenuAPI.Buttons.Remove(wmbHPToggle); WristMenuAPI.Buttons.Remove(wmbHPToggle);
} }
GetFonts();
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);
}
}
// called on scene change, find fonts from game if they're not set // called on scene change, find fonts from game if they're not set
private void GetFonts() private void GetFonts()
@@ -273,7 +275,7 @@ public static AssetBundle bundle;
// stick stats to hand after game over // stick stats to hand after game over
if (cfgShowHolds.Value || cfgShowTokens.Value) if (cfgShowHolds.Value || cfgShowTokens.Value)
InPlay.Patch(harmony); TNHInfo.Patch(harmony);
// show numerical representation of shop values // show numerical representation of shop values
if (cfgShowNumbersAtShop.Value) if (cfgShowNumbersAtShop.Value)
@@ -283,7 +285,9 @@ public static AssetBundle bundle;
// player tokens // player tokens
ShopTokenPatch.Patch(harmony); ShopTokenPatch.Patch(harmony);
} }
}
Logger.LogInfo("Successfully ran patches!");
}
private void ToggleHPVisibility(object sender, ButtonClickEventArgs args) private void ToggleHPVisibility(object sender, ButtonClickEventArgs args)
{ {
+5 -1
View File
@@ -5,8 +5,9 @@ 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 help with these questions, and then some.**
## Features ## Features
* Health counter toggle
* Better health counter visibility * 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 * Token, hold, and wave counter on radar hand
* Player count for online leaderboards; see how you stack up! * Player count for online leaderboards; see how you stack up!
* Disabled if [*TakeAndHoldTweaker*](https://h3vr.thunderstore.io/package/devyndamonster/TakeAndHoldTweaker/) is installed * Disabled if [*TakeAndHoldTweaker*](https://h3vr.thunderstore.io/package/devyndamonster/TakeAndHoldTweaker/) is installed
@@ -21,6 +22,9 @@ Toggle and customize these features in your mod manager's *Config editor*.
For any issues/ideas, please create an issue at the GitHub repository (linked on Thunderstore page). For any issues/ideas, please create an issue at the GitHub repository (linked on Thunderstore page).
## Changelog ## Changelog
1.2.5
* [TNH] Change initialization approach to cover errors in both Atlas/WurstMod-based maps
1.2.4 1.2.4
* [TNH] Fix errors occurring in Atlas-based maps * [TNH] Fix errors occurring in Atlas-based maps
* Update MeatKit (now on Unity 5.6.7f1!) * 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 UnityEngine;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using FistVR; using FistVR;
// To be attached to FVRHealthBar object // To be attached to FVRHealthBar object
public class HPHideWhenAiming : MonoBehaviour { public class HPHideWhenAiming : MonoBehaviour
{
CanvasGroup canvasGroup; CanvasGroup canvasGroup;
GameObject gObjHUD; GameObject gObjHUD;
@@ -25,7 +24,8 @@ public class HPHideWhenAiming : MonoBehaviour {
//LineRenderer colliderRenderer; //LineRenderer colliderRenderer;
// Use this for initialization // Use this for initialization
void Start() { void Start()
{
gObjHUD = transform.GetChild(0).gameObject; gObjHUD = transform.GetChild(0).gameObject;
leftHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(1).GetComponent<FVRViveHand>(); leftHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(1).GetComponent<FVRViveHand>();
rightHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(0).GetComponent<FVRViveHand>(); rightHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(0).GetComponent<FVRViveHand>();
+5 -44
View File
@@ -1,7 +1,4 @@
using HarmonyLib; using UnityEngine;
using System.Reflection;
using UnityEngine;
using UnityEngine.UI;
using FistVR; using FistVR;
namespace TNHQoLImprovements namespace TNHQoLImprovements
@@ -13,50 +10,14 @@ namespace TNHQoLImprovements
{ {
public static TNH_Manager tnhManager; 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() void Start()
{ {
tnhManager = FindObjectOfType<TNH_Manager>(); tnhManager = FindObjectOfType<TNH_Manager>();
var rig = Object.FindObjectOfType<FVRMovementManager>().transform; TNHInfo.instance = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("TNHInfo"),
hands = new Transform[] { FindObjectOfType<TAH_Reticle>().transform.GetChild(3))
rig.transform.GetChild(1), rig.transform.GetChild(0) .GetComponent<TNHInfo>();
}; TNHInfo.instance.transform.localScale = new Vector3(0.002f, 0.002f, 0.002f);
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);
} }
void OnDestroy() void OnDestroy()
+4 -20
View File
@@ -1,5 +1,4 @@
using System.Collections; using HarmonyLib;
using HarmonyLib;
using System.Reflection; using System.Reflection;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@@ -27,7 +26,7 @@ namespace TNHQoLImprovements
{ {
private Text text; private Text text;
private IEnumerator Start() private void Start()
{ {
var gObjText = new GameObject("TokenCounter"); var gObjText = new GameObject("TokenCounter");
gObjText.transform.SetParent(transform, false); gObjText.transform.SetParent(transform, false);
@@ -38,26 +37,11 @@ namespace TNHQoLImprovements
text.font = MeatKitPlugin.fontBombardier; text.font = MeatKitPlugin.fontBombardier;
text.fontSize = 55; text.fontSize = 55;
text.color = new Color(0.1307786f, 0.2461715f, 0.359f); text.color = new Color(0.1307786f, 0.2461715f, 0.359f);
}
while (InPlay.tnhManager == null) private void Update()
{
Debug.Log("[ShopTokenNumber] tnhManager is null!");
yield return null;
}
InPlay.tnhManager.TokenCountChangeEvent += UpdateText;
UpdateText();
}
private void UpdateText(int _ = 0)
{ {
int tokens = InPlay.tnhManager.GetNumTokens(); int tokens = InPlay.tnhManager.GetNumTokens();
text.text = tokens.ToString(); text.text = tokens.ToString();
} }
private void OnDestroy()
{
InPlay.tnhManager.TokenCountChangeEvent -= UpdateText;
}
} }
} }
+44 -6
View File
@@ -1,4 +1,5 @@
using HarmonyLib; using HarmonyLib;
using System.Reflection;
using UnityEngine; using UnityEngine;
using FistVR; using FistVR;
@@ -6,23 +7,55 @@ namespace TNHQoLImprovements
{ {
class TNHInfo : MonoBehaviour class TNHInfo : MonoBehaviour
{ {
private GameObject holdCounter; public static TNHInfo instance;
public Transform[] hands;
private GameObject holdCounter;
private GameObject tokenCounter; private GameObject tokenCounter;
private GameObject waveCounter; 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); holdCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("HoldCounter"), transform);
if (MeatKitPlugin.cfgShowTokens.Value) if (MeatKitPlugin.cfgShowTokens.Value)
tokenCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("TokenCounter"), transform); tokenCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("TokenCounter"), transform);
if (MeatKitPlugin.cfgShowWaves.Value) if (MeatKitPlugin.cfgShowWaves.Value)
waveCounter = Instantiate<GameObject>(MeatKitPlugin.bundle.LoadAsset<GameObject>("WaveCounter"), transform); 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(); PlayPos();
} }
public void PlayPos() private void PlayPos()
{ {
transform.localPosition = new Vector3(0, 0, -1.2f); transform.localPosition = new Vector3(0, 0, -1.2f);
if (holdCounter != null) if (holdCounter != null)
@@ -35,7 +68,7 @@ namespace TNHQoLImprovements
waveCounter.transform.localPosition = new Vector3(333, 0, 0); waveCounter.transform.localPosition = new Vector3(333, 0, 0);
} }
public void GameOverPos() private void GameOverPos()
{ {
transform.localScale = new Vector3(.0002f, .0002f, .0002f); transform.localScale = new Vector3(.0002f, .0002f, .0002f);
transform.localPosition = Vector3.zero; transform.localPosition = Vector3.zero;
@@ -60,7 +93,7 @@ namespace TNHQoLImprovements
} }
} }
public void Update() private void Update()
{ {
// game over area; do not update anything else // game over area; do not update anything else
if (InPlay.tnhManager.Phase == TNH_Phase.Dead || InPlay.tnhManager.Phase == TNH_Phase.Completed) if (InPlay.tnhManager.Phase == TNH_Phase.Dead || InPlay.tnhManager.Phase == TNH_Phase.Completed)
@@ -100,5 +133,10 @@ namespace TNHQoLImprovements
waveCounter.SetActive(false); 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/> Player count for online leaderboards (won't work w/ *TNHTweaker* installed)<br/>
<img src=preview/leaderboard.png><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).** **This mod is built on [MeatKit](https://github.com/H3VR-Modding/MeatKit).**