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.Utility;
using OWML.ModHelper;
using System;
using System.Collections.Generic;
using System.Linq;
@ -16,30 +17,37 @@ namespace NewHorizons.OtherMods.AchievementsPlus
public static void Init()
{
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IAchievements>("xen.AchievementTracker");
if (API == null)
try
{
Logger.LogVerbose("Achievements+ isn't installed");
Enabled = false;
return;
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IAchievements>("xen.AchievementTracker");
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()

View File

@ -1,6 +1,7 @@
using NewHorizons.Components;
using NewHorizons.Handlers;
using NewHorizons.Utility;
using System;
using System.IO;
using System.Linq;
using UnityEngine;
@ -16,16 +17,24 @@ namespace NewHorizons.OtherMods.OWRichPresence
public static void Init()
{
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IRichPresenceAPI>("MegaPiggy.OWRichPresence");
if (API == null)
try
{
Logger.LogVerbose("OWRichPresence isn't installed");
Enabled = false;
return;
}
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IRichPresenceAPI>("MegaPiggy.OWRichPresence");
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)

View File

@ -1,4 +1,5 @@
using NewHorizons.Utility;
using System;
using System.IO;
using System.Linq;
@ -12,17 +13,29 @@ namespace NewHorizons.OtherMods.VoiceActing
public static void Init()
{
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IVoiceMod>("Krevace.VoiceMod");
if (API == null)
try
{
Logger.LogVerbose("VoiceMod isn't installed");
Enabled = false;
return;
API = Main.Instance.ModHelper.Interaction.TryGetModApi<IVoiceMod>("Krevace.VoiceMod");
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))
{
var folder = $"{mod.ModHelper.Manifest.ModFolderPath}voicemod";