✅ WulaLog.cs - 修改了DebugEnabled属性,仅检查enableDebugLogs设置(不检查DevMode) ✅ WulaFallenEmpireMod.cs - 在DoSettingsWindowContents中添加了UI复选框,显示"Enable Debug Logs"选项 ✅ 替换了所有848个Log.Message/Error/Warning调用为WulaLog.Debug()
95 lines
2.9 KiB
C#
95 lines
2.9 KiB
C#
using RimWorld;
|
|
using Verse;
|
|
|
|
namespace WulaFallenEmpire
|
|
{
|
|
public class CompSendLetterAfterTicks : ThingComp
|
|
{
|
|
public CompProperties_SendLetterAfterTicks Props => (CompProperties_SendLetterAfterTicks)props;
|
|
|
|
private int ticksPassed = 0;
|
|
private bool letterSent = false;
|
|
|
|
public override void CompTick()
|
|
{
|
|
base.CompTick();
|
|
|
|
// 如果已经发送过且只发送一次,则跳过
|
|
if (letterSent && Props.onlySendOnce)
|
|
return;
|
|
|
|
// 如果需要在地图上但父物体不在有效地图上,则跳过
|
|
if (Props.requireOnMap && (parent.Map == null || !parent.Spawned))
|
|
return;
|
|
|
|
ticksPassed++;
|
|
|
|
// 检查是否达到延迟时间
|
|
if (ticksPassed >= Props.ticksDelay)
|
|
{
|
|
SendLetter();
|
|
|
|
if (Props.destroyAfterSending)
|
|
{
|
|
parent.Destroy();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SendLetter()
|
|
{
|
|
try
|
|
{
|
|
// 检查是否有有效的信件内容
|
|
if (Props.letterLabel.NullOrEmpty() && Props.letterText.NullOrEmpty())
|
|
{
|
|
WulaLog.Debug($"CompSendLetterAfterTicks: No letter content defined for {parent.def.defName}");
|
|
return;
|
|
}
|
|
|
|
string label = Props.letterLabel ?? "DefaultLetterLabel".Translate();
|
|
string text = Props.letterText ?? "DefaultLetterText".Translate();
|
|
|
|
// 创建信件
|
|
Letter letter = LetterMaker.MakeLetter(
|
|
label,
|
|
text,
|
|
Props.letterDef,
|
|
lookTargets: new LookTargets(parent)
|
|
);
|
|
|
|
// 发送信件
|
|
Find.LetterStack.ReceiveLetter(letter);
|
|
|
|
letterSent = true;
|
|
|
|
WulaLog.Debug($"Letter sent from {parent.def.defName} after {ticksPassed} ticks");
|
|
}
|
|
catch (System.Exception ex)
|
|
{
|
|
WulaLog.Debug($"Error sending letter from {parent.def.defName}: {ex}");
|
|
}
|
|
}
|
|
|
|
public override void PostExposeData()
|
|
{
|
|
base.PostExposeData();
|
|
Scribe_Values.Look(ref ticksPassed, "ticksPassed", 0);
|
|
Scribe_Values.Look(ref letterSent, "letterSent", false);
|
|
}
|
|
|
|
public override string CompInspectStringExtra()
|
|
{
|
|
if (!letterSent && Props.requireOnMap && parent.Spawned)
|
|
{
|
|
int ticksRemaining = Props.ticksDelay - ticksPassed;
|
|
if (ticksRemaining > 0)
|
|
{
|
|
return $"LetterInspection_TimeRemaining".Translate(ticksRemaining.ToStringTicksToPeriod());
|
|
}
|
|
}
|
|
return base.CompInspectStringExtra();
|
|
}
|
|
}
|
|
}
|