Try catch around all mod API initializations

This commit is contained in:
Nick 2022-08-21 21:37:55 -04:00
parent 8b195896a6
commit e7bfb53c58
3 changed files with 68 additions and 38 deletions

View File

@ -1,6 +1,7 @@
using NewHorizons.External.Configs; using NewHorizons.External.Configs;
using NewHorizons.Utility; using NewHorizons.Utility;
using OWML.ModHelper; using OWML.ModHelper;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -16,30 +17,37 @@ namespace NewHorizons.OtherMods.AchievementsPlus
public static void Init() public static void Init()
{ {
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IAchievements>("xen.AchievementTracker"); try
if (API == null)
{ {
Logger.LogVerbose("Achievements+ isn't installed"); API = Main.Instance.ModHelper.Interaction.TryGetModApi<IAchievements>("xen.AchievementTracker");
Enabled = false;
return; if (API == null)
{
Logger.LogVerbose("Achievements+ isn't installed");
Enabled = false;
return;
}
Enabled = true;
_achievements = new List<AchievementInfo>();
// Register base NH achievements
NH.WarpDriveAchievement.Init();
NH.VesselWarpAchievement.Init();
NH.MultipleSystemAchievement.Init();
NH.EatenOutsideBrambleAchievement.Init();
NH.NewFrequencyAchievement.Init();
NH.ProbeLostAchievement.Init();
API.RegisterTranslationsFromFiles(Main.Instance, "Assets/translations");
GlobalMessenger<string, bool>.AddListener("DialogueConditionChanged", OnDialogueConditionChanged);
}
catch(Exception ex)
{
Logger.LogError($"Achievements+ handler failed to initialize: {ex}");
} }
Enabled = true;
_achievements = new List<AchievementInfo>();
// Register base NH achievements
NH.WarpDriveAchievement.Init();
NH.VesselWarpAchievement.Init();
NH.MultipleSystemAchievement.Init();
NH.EatenOutsideBrambleAchievement.Init();
NH.NewFrequencyAchievement.Init();
NH.ProbeLostAchievement.Init();
API.RegisterTranslationsFromFiles(Main.Instance, "Assets/translations");
GlobalMessenger<string, bool>.AddListener("DialogueConditionChanged", OnDialogueConditionChanged);
} }
public static void OnDestroy() public static void OnDestroy()

View File

@ -1,6 +1,7 @@
using NewHorizons.Components; using NewHorizons.Components;
using NewHorizons.Handlers; using NewHorizons.Handlers;
using NewHorizons.Utility; using NewHorizons.Utility;
using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using UnityEngine; using UnityEngine;
@ -16,16 +17,24 @@ namespace NewHorizons.OtherMods.OWRichPresence
public static void Init() public static void Init()
{ {
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IRichPresenceAPI>("MegaPiggy.OWRichPresence"); try
if (API == null)
{ {
Logger.LogVerbose("OWRichPresence isn't installed"); API = Main.Instance.ModHelper.Interaction.TryGetModApi<IRichPresenceAPI>("MegaPiggy.OWRichPresence");
Enabled = false;
return;
}
Enabled = true; if (API == null)
{
Logger.LogVerbose("OWRichPresence isn't installed");
Enabled = false;
return;
}
Enabled = true;
}
catch(Exception ex)
{
Logger.LogError($"OWRichPresence handler failed to initialize: {ex}");
Enabled = false;
}
} }
public static void SetUpPlanet(string name, GameObject go, Sector sector) public static void SetUpPlanet(string name, GameObject go, Sector sector)

View File

@ -1,4 +1,5 @@
using NewHorizons.Utility; using NewHorizons.Utility;
using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -12,17 +13,29 @@ namespace NewHorizons.OtherMods.VoiceActing
public static void Init() public static void Init()
{ {
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IVoiceMod>("Krevace.VoiceMod"); try
if (API == null)
{ {
Logger.LogVerbose("VoiceMod isn't installed"); API = Main.Instance.ModHelper.Interaction.TryGetModApi<IVoiceMod>("Krevace.VoiceMod");
Enabled = false;
return; if (API == null)
{
Logger.LogVerbose("VoiceMod isn't installed");
return;
}
Enabled = true;
SetUp();
} }
catch (Exception ex)
{
Logger.LogError($"VoiceMod handler failed to initialize: {ex}");
Enabled = false;
}
}
Enabled = true; private static void SetUp()
{
foreach (var mod in Main.Instance.GetDependants().Append(Main.Instance)) foreach (var mod in Main.Instance.GetDependants().Append(Main.Instance))
{ {
var folder = $"{mod.ModHelper.Manifest.ModFolderPath}voicemod"; var folder = $"{mod.ModHelper.Manifest.ModFolderPath}voicemod";