37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
using System;
|
|
using HarmonyLib;
|
|
using RimWorld.Planet;
|
|
using Verse;
|
|
|
|
namespace WulaFallenEmpire
|
|
{
|
|
[HarmonyPatch(typeof(MapParent), "ShouldRemoveMapNow")]
|
|
[HarmonyPriority(600)]
|
|
public static class MapParent_ShouldRemoveMapNow_Patch
|
|
{
|
|
public static void Postfix(ref bool __result, MapParent __instance)
|
|
{
|
|
// 如果游戏本来就不打算删除,或者地图不存在,我们什么都不做
|
|
if (!__result || !__instance.HasMap)
|
|
{
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
// 检查地图上是否存在一个“活着”的武装穿梭机
|
|
if (WulaMapProtectionHelper.ShouldProtectMap(__instance.Map))
|
|
{
|
|
// 游戏打算删除,但我们的逻辑说现在还不行,所以直接覆盖结果。
|
|
// 因为 ShouldRemoveMapNow 会被周期性调用,所以这是安全的。
|
|
__result = false;
|
|
}
|
|
}
|
|
catch (Exception arg)
|
|
{
|
|
Log.Error($"[WULA] Error in MapParent_ShouldRemoveMapNow_Patch: {arg}");
|
|
}
|
|
}
|
|
}
|
|
}
|