Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/ThingComp/WULA_SkyfallerPawnSpawner/CompProperties_SkyfallerPawnSpawner.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.0 KiB
C#

using Verse;
using RimWorld;
namespace WulaFallenEmpire
{
public class CompProperties_SkyfallerPawnSpawner : CompProperties
{
public PawnKindDef pawnKind;
public FactionDef faction;
public bool spawnDrafted = false;
public bool spawnHostile = false;
public CompProperties_SkyfallerPawnSpawner()
{
compClass = typeof(CompSkyfallerPawnSpawner);
}
}
public class CompSkyfallerPawnSpawner : ThingComp
{
public CompProperties_SkyfallerPawnSpawner Props => (CompProperties_SkyfallerPawnSpawner)props;
public void SpawnPawn(Map map, IntVec3 position)
{
if (Props.pawnKind == null)
{
WulaLog.Debug("CompSkyfallerPawnSpawner: pawnKind is null");
return;
}
// 创建 Pawn
PawnGenerationRequest request = new PawnGenerationRequest(
Props.pawnKind,
faction: GetFaction(),
context: PawnGenerationContext.NonPlayer,
fixedBiologicalAge: 0,
fixedChronologicalAge: 0
);
Pawn pawn = PawnGenerator.GeneratePawn(request);
// 设置阵营关系
if (Props.spawnHostile)
{
pawn.SetFaction(Faction.OfAncientsHostile);
}
// 生成 Pawn
GenSpawn.Spawn(pawn, position, map);
// 如果需要,设置为征召状态
if (Props.spawnDrafted && pawn.drafter != null)
{
pawn.drafter.Drafted = true;
}
}
private Faction GetFaction()
{
if (Props.faction != null)
{
return FactionUtility.DefaultFactionFrom(Props.faction);
}
if (Props.spawnHostile)
{
return Faction.OfAncientsHostile;
}
return Faction.OfAncients;
}
}
}