Functional Cairn detector

This commit is contained in:
Terry Hearst 2025-03-01 23:03:28 -05:00
parent c5d290e355
commit 9a330e3a05
2 changed files with 41 additions and 5 deletions

View file

@ -0,0 +1,16 @@
namespace OWCairnFinder;
class CairnHUDMarker : HUDDistanceMarker
{
public override void InitCanvasMarker()
{
int index = OWCairnFinder.getCairnIndex(gameObject);
_markerLabel = $"[{index}]";
_markerTarget = gameObject.transform;
OWCairnFinder.Instance.ModHelper.Console.WriteLine($"Transform: {_markerTarget}");
_markerRadius = 0;
OWCairnFinder.Instance.ModHelper.Console.WriteLine($"Cairn {index}");
base.InitCanvasMarker();
_canvasMarker.SetVisibility(true);
}
}

View file

@ -1,7 +1,9 @@
using HarmonyLib;
using OWML.Common;
using OWML.ModHelper;
using System.Linq;
using System.Reflection;
using UnityEngine;
namespace OWCairnFinder;
@ -9,6 +11,8 @@ public class OWCairnFinder : ModBehaviour
{
public static OWCairnFinder Instance;
private static NomaiCairn[] _nomaiCairns;
public void Awake()
{
Instance = this;
@ -20,19 +24,35 @@ public class OWCairnFinder : ModBehaviour
public void Start()
{
// Starting here, you'll have access to OWML's mod helper.
ModHelper.Console.WriteLine($"My mod {nameof(OWCairnFinder)} is loaded!", MessageType.Success);
ModHelper.Console.WriteLine($"{nameof(OWCairnFinder)} is loaded!", MessageType.Success);
new Harmony("thearst3rd.OWCairnFinder").PatchAll(Assembly.GetExecutingAssembly());
// Example of accessing game code.
OnCompleteSceneLoad(OWScene.TitleScreen, OWScene.TitleScreen); // We start on title screen
LoadManager.OnCompleteSceneLoad += OnCompleteSceneLoad;
}
public static int getCairnIndex(GameObject cairn)
{
for (int i = 0; i < _nomaiCairns.Length; i++)
{
if (_nomaiCairns[i].gameObject == cairn)
return i;
}
return -1;
}
public void OnCompleteSceneLoad(OWScene previousScene, OWScene newScene)
{
if (newScene != OWScene.SolarSystem) return;
ModHelper.Console.WriteLine("Loaded into solar system!", MessageType.Success);
if (newScene != OWScene.SolarSystem)
return;
_nomaiCairns = Resources.FindObjectsOfTypeAll<NomaiCairn>().Where(x => x.gameObject.activeSelf && x.transform.childCount != 0).ToArray();
for (int i = 0; i < _nomaiCairns.Length; i++)
{
NomaiCairn cairn = _nomaiCairns[i];
cairn.gameObject.AddComponent<CairnHUDMarker>();
}
}
}