Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/Flyover/WULA_FlyOverFacilities/CompFlyOverFacilities.cs
2025-11-06 17:31:49 +08:00

76 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// CompFlyOverFacilities.cs
using System.Collections.Generic;
using RimWorld;
using Verse;
namespace WulaFallenEmpire
{
public class CompFlyOverFacilities : ThingComp
{
public CompProperties_FlyOverFacilities Props => (CompProperties_FlyOverFacilities)props;
// 当前激活的设施列表
public List<string> activeFacilities = new List<string>();
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
if (!respawningAfterLoad)
{
// 只在初次生成时激活所有定义的设施
activeFacilities.AddRange(Props.availableFacilities);
Log.Message($"[FlyOverFacilities] Initialized with {activeFacilities.Count} facilities: {string.Join(", ", activeFacilities)}");
}
}
// 检查是否拥有特定设施
public bool HasFacility(string facilityName)
{
return activeFacilities?.Contains(facilityName) ?? false;
}
// 获取所有激活的设施
public List<string> GetActiveFacilities()
{
return activeFacilities != null ? new List<string>(activeFacilities) : new List<string>();
}
public override void PostExposeData()
{
base.PostExposeData();
Scribe_Collections.Look(ref activeFacilities, "activeFacilities", LookMode.Value);
// 如果加载失败或列表为null重新初始化
if (Scribe.mode == LoadSaveMode.PostLoadInit && activeFacilities == null)
{
activeFacilities = new List<string>();
// 在加载后重新添加默认设施
activeFacilities.AddRange(Props.availableFacilities);
Log.Message($"[FlyOverFacilities] Reinitialized after load with {activeFacilities.Count} facilities");
}
}
public override void Initialize(CompProperties props)
{
base.Initialize(props);
// 确保列表被初始化
if (activeFacilities == null)
{
activeFacilities = new List<string>();
}
}
}
public class CompProperties_FlyOverFacilities : CompProperties
{
// 可用的设施列表(简单的字符串列表)
public List<string> availableFacilities = new List<string>();
public CompProperties_FlyOverFacilities()
{
compClass = typeof(CompFlyOverFacilities);
}
}
}