Skip to content

Commit 29b61b8

Browse files
author
T.J. Deckard
committed
Fix crew xfer window nullref issue
1 parent 0bca9e5 commit 29b61b8

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

Source/WOLF/WOLF/Modules/WOLF_CrewTransferScenario.cs

+13-17
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ namespace WOLF
1919
public class WOLF_CrewTransferScenario : ScenarioModule, ICrewTransferController
2020
{
2121
private const float TERMINAL_RANGE = 500f;
22+
private static readonly List<PrefabDefinition> _prefabDefs = new List<PrefabDefinition>
23+
{
24+
new PrefabDefinition<FlightSelector>(PrefabType.Prefab),
25+
new PrefabDefinition<KerbalSelector>(PrefabType.Prefab),
26+
new PrefabDefinition<WarningPanel>(PrefabType.Prefab),
27+
new PrefabDefinition<TerminalWindow>(PrefabType.Window),
28+
};
2229

2330
private readonly ArrivalWarnings _arrivalWarnings = new ArrivalWarnings();
2431
private readonly Dictionary<string, WarningMetadata> _activeWarnings
@@ -729,7 +736,10 @@ public override void OnAwake()
729736
base.OnAwake();
730737

731738
GetLocalizedTextValues();
739+
}
732740

741+
private void Start()
742+
{
733743
var wolfScenario = FindObjectOfType<WOLF_ScenarioModule>();
734744
_wolf = wolfScenario.ServiceManager.GetService<IRegistryCollection>();
735745

@@ -738,30 +748,16 @@ public override void OnAwake()
738748
{
739749
var serviceManager = usiTools.ServiceManager;
740750
var windowManager = serviceManager.GetService<WindowManager>();
751+
var prefabManager = serviceManager.GetService<PrefabManager>();
741752

742753
try
743754
{
744-
// Setup UI prefabs
755+
// Load and register UI prefabs
745756
var filepath = Path.Combine(KSPUtil.ApplicationRootPath,
746757
"GameData/UmbraSpaceIndustries/WOLF/Assets/UI/CrewTransferWindow.prefabs");
747-
var prefabs = AssetBundle.LoadFromFile(filepath);
748-
var flightSelectorPrefab = prefabs.LoadAsset<GameObject>("FlightSelector");
749-
var kerbalSelectorPrefab = prefabs.LoadAsset<GameObject>("KerbalSelector");
750-
var terminalWindowPrefab = prefabs.LoadAsset<GameObject>("TerminalWindow");
751-
var warningPanelPrefab = prefabs.LoadAsset<GameObject>("WarningPanel");
752-
753-
// Register prefabs with window manager
754-
windowManager
755-
.RegisterPrefab<FlightSelector>(flightSelectorPrefab)
756-
.RegisterPrefab<KerbalSelector>(kerbalSelectorPrefab)
757-
.RegisterPrefab<WarningPanel>(warningPanelPrefab)
758-
.RegisterWindow<TerminalWindow>(terminalWindowPrefab);
758+
prefabManager.LoadAssetBundle(filepath, _prefabDefs);
759759
}
760760
catch (ServiceAlreadyRegisteredException) { }
761-
catch (NullReferenceException)
762-
{
763-
// TODO - Create an asset bundle loader service in USITools
764-
}
765761
catch (Exception ex)
766762
{
767763
Debug.LogError($"[WOLF] {ClassName}: {ex.Message}");

0 commit comments

Comments
 (0)