This commit is contained in:
2025-12-01 17:02:32 +08:00
parent bbc13b0b1d
commit 97775fd7ab
7 changed files with 167 additions and 46 deletions

View File

@@ -85,8 +85,6 @@ namespace WulaFallenEmpire
// 记录hediff的ID用于保存/恢复
activeHediffId = GetHediffId(activeHediff);
Log.Message($"[SwitchableHediff] Applied {hediffDef.defName} to {Pawn.LabelShort}, ID: {activeHediffId}");
}
}
}
@@ -109,7 +107,6 @@ namespace WulaFallenEmpire
if (GetHediffId(hediff) == activeHediffId)
{
activeHediff = hediff;
Log.Message($"[SwitchableHediff] Restored active hediff: {hediff.def.defName}, ID: {activeHediffId}");
return true;
}
}
@@ -124,7 +121,6 @@ namespace WulaFallenEmpire
{
activeHediff = hediff;
activeHediffId = GetHediffId(hediff);
Log.Message($"[SwitchableHediff] Found matching hediff by def: {hediff.def.defName}");
return true;
}
}
@@ -329,7 +325,6 @@ namespace WulaFallenEmpire
// 加载后恢复状态
if (Scribe.mode == LoadSaveMode.PostLoadInit)
{
Log.Message($"[SwitchableHediff] PostLoadInit - currentHediffIndex: {currentHediffIndex}, activeHediffId: {activeHediffId}");
if (currentHediffIndex == -1 && Props.availableHediffs.Count > 0)
{
@@ -342,14 +337,8 @@ namespace WulaFallenEmpire
// 尝试恢复已保存的hediff引用
if (!TryRestoreActiveHediff())
{
// 如果恢复失败重新应用当前选择的hediff
Log.Message($"[SwitchableHediff] Failed to restore active hediff, reapplying...");
ApplySelectedHediff();
}
else
{
Log.Message($"[SwitchableHediff] Successfully restored active hediff");
}
// 验证状态一致性
ValidateStateConsistency();
@@ -364,7 +353,6 @@ namespace WulaFallenEmpire
// 检查currentHediffIndex是否有效
if (currentHediffIndex < 0 || currentHediffIndex >= Props.availableHediffs.Count)
{
Log.Warning($"[SwitchableHediff] Invalid currentHediffIndex: {currentHediffIndex}");
hasConsistency = false;
}
@@ -374,14 +362,12 @@ namespace WulaFallenEmpire
var expectedDef = Props.availableHediffs[currentHediffIndex];
if (activeHediff.def != expectedDef)
{
Log.Warning($"[SwitchableHediff] Inconsistent state: activeHediff.def ({activeHediff.def.defName}) != expectedDef ({expectedDef.defName})");
hasConsistency = false;
}
}
if (!hasConsistency)
{
Log.Message($"[SwitchableHediff] State inconsistency detected, attempting to repair...");
RepairState();
}
}
@@ -397,14 +383,11 @@ namespace WulaFallenEmpire
if (Props.availableHediffs[i] == activeHediff.def)
{
currentHediffIndex = i;
Log.Message($"[SwitchableHediff] Repaired: set currentHediffIndex to {i} based on active hediff");
return;
}
}
}
// 如果无法修复重新应用当前选择的hediff
Log.Message($"[SwitchableHediff] Could not repair state, reapplying current selection");
ApplySelectedHediff();
}