system for detecting starting planet

fixes #709
This commit is contained in:
_nebula 2025-03-02 00:47:25 +00:00
parent 600b00bb7f
commit 7375ffadb8
2 changed files with 42 additions and 15 deletions

View File

@ -6,6 +6,7 @@ using NewHorizons.Components.Orbital;
using OWML.Common;
using QSB;
using QSB.HUD;
using QSB.HUD.Messages;
using QSB.Messaging;
using QSB.Utility;
using UnityEngine;
@ -33,6 +34,8 @@ namespace QSBNH
// Allow time for MultiplayerHUDManager.OnWakeUp to run
Delay.RunNextFrame(() =>
{
var triggers = new List<PlanetTrigger>();
var currentPlanets = NewHorizons.Main.BodyDict[NewHorizons.Main.Instance.CurrentStarSystem];
foreach (var planet in currentPlanets)
{
@ -62,9 +65,21 @@ namespace QSBNH
if (!nhAstro.isVanilla)
{
MultiplayerHUDManager.CreateTrigger(nhAstro.GetRootSector().gameObject, astroObjName);
triggers.Add(MultiplayerHUDManager.CreateTrigger(nhAstro.GetRootSector().gameObject, astroObjName));
}
}
foreach (var trigger in triggers)
{
if (!trigger._sector.ContainsOccupant(DynamicOccupant.Player))
{
continue;
}
MultiplayerHUDManager.HUDIconStack.Push(trigger.PlanetID);
new PlanetMessage(trigger.PlanetID).Send();
break;
}
});
}

View File

@ -375,24 +375,36 @@ public class MultiplayerHUDManager : MonoBehaviour, IAddComponentOnStart
CreatePlanetToSprite();
CreateTrigger("TowerTwin_Body/Sector_TowerTwin", AstroObject.Name.TowerTwin);
CreateTrigger("CaveTwin_Body/Sector_CaveTwin", AstroObject.Name.CaveTwin);
CreateTrigger("TimberHearth_Body/Sector_TH", AstroObject.Name.TimberHearth);
CreateTrigger("Moon_Body/Sector_THM", AstroObject.Name.TimberMoon);
CreateTrigger("BrittleHollow_Body/Sector_BH", AstroObject.Name.BrittleHollow);
CreateTrigger("VolcanicMoon_Body/Sector_VM", AstroObject.Name.VolcanicMoon);
CreateTrigger("GiantsDeep_Body/Sector_GD", AstroObject.Name.GiantsDeep);
CreateTrigger("DarkBramble_Body/Sector_DB", AstroObject.Name.DarkBramble);
CreateTrigger("Comet_Body/Sector_CO", AstroObject.Name.Comet);
CreateTrigger("WhiteHole_Body/Sector_WhiteHole", AstroObject.Name.WhiteHole);
CreateTrigger("RingWorld_Body/Sector_RingWorld", AstroObject.Name.RingWorld); // TODO : this doesnt work????
CreateTrigger("QuantumMoon_Body/Sector_QuantumMoon", AstroObject.Name.QuantumMoon);
var planetTriggers = new List<PlanetTrigger>
{
CreateTrigger("TowerTwin_Body/Sector_TowerTwin", AstroObject.Name.TowerTwin),
CreateTrigger("CaveTwin_Body/Sector_CaveTwin", AstroObject.Name.CaveTwin),
CreateTrigger("TimberHearth_Body/Sector_TH", AstroObject.Name.TimberHearth),
CreateTrigger("Moon_Body/Sector_THM", AstroObject.Name.TimberMoon),
CreateTrigger("BrittleHollow_Body/Sector_BH", AstroObject.Name.BrittleHollow),
CreateTrigger("VolcanicMoon_Body/Sector_VM", AstroObject.Name.VolcanicMoon),
CreateTrigger("GiantsDeep_Body/Sector_GD", AstroObject.Name.GiantsDeep),
CreateTrigger("DarkBramble_Body/Sector_DB", AstroObject.Name.DarkBramble),
CreateTrigger("Comet_Body/Sector_CO", AstroObject.Name.Comet),
CreateTrigger("WhiteHole_Body/Sector_WhiteHole", AstroObject.Name.WhiteHole),
CreateTrigger("RingWorld_Body/Sector_RingWorld", AstroObject.Name.RingWorld),
CreateTrigger("QuantumMoon_Body/Sector_QuantumMoon", AstroObject.Name.QuantumMoon)
};
HUDIconStack.Clear();
HUDIconStack.Push("__SPACE__");
HUDIconStack.Push("TimberHearth");
new PlanetMessage("TimberHearth").Send();
foreach (var trigger in planetTriggers)
{
if (!trigger._sector.ContainsOccupant(DynamicOccupant.Player))
{
continue;
}
HUDIconStack.Push(trigger.PlanetID);
new PlanetMessage(trigger.PlanetID).Send();
break;
}
_textChat = multiplayerGroup.transform.Find("TextChat");
var inputFieldGO = _textChat.Find("InputField");