Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/ThingComp/CompUseEffect_OpenCustomUI.cs
ProjectKoi-Kalo\Kalo 98a0400c78 WulaFallenEmpireSettings.cs - 添加了 public bool enableDebugLogs = false; 字段和保存配置
 WulaLog.cs - 修改了DebugEnabled属性,仅检查enableDebugLogs设置(不检查DevMode)
 WulaFallenEmpireMod.cs - 在DoSettingsWindowContents中添加了UI复选框,显示"Enable Debug Logs"选项
 替换了所有848个Log.Message/Error/Warning调用为WulaLog.Debug()
2025-12-15 13:05:50 +08:00

74 lines
2.5 KiB
C#

using RimWorld;
using System;
using Verse;
namespace WulaFallenEmpire
{
public class CompProperties_UseEffect_OpenCustomUI : CompProperties_UseEffect
{
public string uiDefName; // 要打开的UI的EventDef名称
public bool requireFactionPlayer = true; // 是否要求玩家派系才能使用
public CompProperties_UseEffect_OpenCustomUI()
{
this.compClass = typeof(CompUseEffect_OpenCustomUI);
}
}
public class CompUseEffect_OpenCustomUI : CompUseEffect
{
public CompProperties_UseEffect_OpenCustomUI Props => (CompProperties_UseEffect_OpenCustomUI)this.props;
public override void DoEffect(Pawn usedBy)
{
base.DoEffect(usedBy);
try
{
// 查找对应的EventDef
EventDef uiDef = DefDatabase<EventDef>.GetNamed(Props.uiDefName, false);
if (uiDef != null)
{
// 创建并打开自定义UI窗口
Window window = (Window)Activator.CreateInstance(uiDef.windowType, uiDef);
Find.WindowStack.Add(window);
WulaLog.Debug($"[CompUseEffect] Opened custom UI: {Props.uiDefName}");
}
else
{
WulaLog.Debug($"[CompUseEffect] Could not find EventDef named '{Props.uiDefName}'");
Messages.Message($"Error: Could not find UI definition '{Props.uiDefName}'", MessageTypeDefOf.RejectInput);
}
}
catch (Exception ex)
{
WulaLog.Debug($"[CompUseEffect] Error opening custom UI '{Props.uiDefName}': {ex}");
Messages.Message($"Error opening UI: {ex.Message}", MessageTypeDefOf.RejectInput);
}
}
public override AcceptanceReport CanBeUsedBy(Pawn p)
{
// 基础检查
AcceptanceReport baseResult = base.CanBeUsedBy(p);
if (!baseResult.Accepted)
return baseResult;
// 检查派系要求
if (Props.requireFactionPlayer && parent.Faction != Faction.OfPlayer)
{
return "Must be player faction to use this".Translate();
}
// 检查EventDef是否存在
if (DefDatabase<EventDef>.GetNamed(Props.uiDefName, false) == null)
{
return $"UI definition '{Props.uiDefName}' not found".Translate();
}
return true;
}
}
}