From 8d58c254313c0ec6cf908df1d772e13ade70f423 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Mon, 25 Aug 2025 10:53:07 +0800 Subject: [PATCH] zc --- 1.6/1.6/Assemblies/WulaFallenEmpire.dll | Bin 289792 -> 276992 bytes .../Building_ArmedShuttleWithPocket.cs | 1222 +++-------------- 2 files changed, 217 insertions(+), 1005 deletions(-) diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 68b8b63c3664dbbe12955b1cf3a005950318df91..cb8b7889b172eaa5a477a4a8298a4d01786b4a67 100644 GIT binary patch delta 89987 zcma%k2Ygh;_W#V?WRoljuqnF<0TN2WC50*^^rA=;gecNMib!ABfC!t-f{GOtjCk#0 zN3mf5hjzzlE8;)(VR9abe zu)J|2GA-U-9_6i{rWGww?m^EBdx{s zrkE2&3@M=n$d(&cZ;Q8IoNA{x&CDpw>hB6{Y}%A@oj#(eQ|9*E0WL1aN^-R~5^H`W zv#Ztvo8HTMOxHBu;JeK#ZfIRAl#JKf(6l0FQ+5xnbXLRNExx%0A_cfj$*Kr#%E#8S>t}lbcvdyH} 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]ViBSsVjFs<-fU!c8x8( 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

#P8K)r8m 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 z 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 - /// 内置空间武装穿梭机 - 基于原版MapPortal机制的口袋空间实现 - /// 结合了武装防御能力和口袋空间技术的复合型载具 - /// [StaticConstructorOnStartup] public class Building_ArmedShuttleWithPocket : Building_ArmedShuttle, IThingHolder { - #region 静态图标定义(使用原版MapPortal的图标) + #region 静态图标定义 - ///

查看口袋地图图标 private static readonly Texture2D ViewPocketMapTex = ContentFinder.Get("UI/Commands/ViewCave"); - - /// 取消进入图标 - private static readonly Texture2D CancelEnterTex = ContentFinder.Get("UI/Designators/Cancel"); - - /// 默认进入图标 - private static readonly Texture2D DefaultEnterTex = ContentFinder.Get("UI/Commands/EnterCave"); - + private static readonly Texture2D EnterPocketMapTex = ContentFinder.Get("UI/Commands/EnterCave"); + private static readonly Texture2D TeleportAndLoadTex = ContentFinder.Get("UI/Commands/LoadTransporter"); + #endregion + #region 口袋空间字段 - /// 内部口袋地图实例 private Map pocketMap; - - /// 口袋地图是否已生成 private bool pocketMapGenerated; - - /// 内部空间大小 private IntVec2 pocketMapSize = new IntVec2(80, 80); - - /// 地图生成器定义 private MapGeneratorDef mapGenerator; - - /// 退出点定义 private ThingDef exitDef; - - /// 允许直接访问(无需骇入) - private bool allowDirectAccess = true; - - /// 口袋空间内的物品容器 - private ThingOwner innerContainer; - - /// 原版MapPortal的容器代理(必须有这个字段才能与Dialog_EnterPortal正常工作) - public PortalContainerProxy containerProxy; - - /// 口袋地图退出点(模仿原版 MapPortal.exit) public Building_PocketMapExit exit; - /// 是否已经进入过(模仿原版 MapPortal.beenEntered) - protected bool beenEntered; - - /// 待加载物品列表(模仿原版 MapPortal.leftToLoad) - public List leftToLoad; - - /// 是否已通知无法加载更多(模仿原版 MapPortal.notifiedCantLoadMore) - public bool notifiedCantLoadMore; - + private bool doTeleportAfterLoading = false; + private bool wasLoading = false; + #endregion #region 属性 - /// 获取内部口袋地图 + // We use the public properties from the base class: this.ShuttleComp and this.TransporterComp public Map PocketMap => pocketMap; - - /// 原版MapPortal的PocketMap属性(包含自动清理无效地图的逻辑) - public Map PocketMapForPortal + public bool PocketMapExists { get { - Map map = pocketMap; - if (map != null && map.Parent?.HasMap == false) + if (pocketMap != null && pocketMap.Parent?.HasMap == false) { pocketMap = null; } - return pocketMap; + return pocketMap != null; } } - - /// 口袋地图是否存在 - public bool PocketMapExists => PocketMapForPortal != null; - - /// 口袋地图是否已生成 public bool PocketMapGenerated => pocketMapGenerated; - - /// 是否允许直接访问口袋空间 - public bool AllowDirectAccess => allowDirectAccess; - - /// 内部容器 - public ThingOwner InnerContainer => innerContainer; - - /// - /// 获取进入按钮的图标 - /// - protected virtual Texture2D EnterTex => DefaultEnterTex; - - /// - /// 获取进入按钮的文本 - 专门用于人员传送 - /// - public virtual string EnterString => "WULA.PocketSpace.EnterPawns".Translate(); - - /// - /// 获取取消进入按钮的文本 - /// - public virtual string CancelEnterString => "WULA.PocketSpace.CancelEnter".Translate(); - - /// - /// 获取进入中的文本 - /// - public virtual string EnteringString => "WULA.PocketSpace.Entering".Translate(); - - /// 加载是否正在进行(模仿原版 MapPortal.LoadInProgress) - public bool LoadInProgress - { - get - { - if (leftToLoad != null) - { - return leftToLoad.Any(); - } - return false; - } - } - - /// 是否有Pawn可以加载任何东西(模仿原版 MapPortal.AnyPawnCanLoadAnythingNow) - public bool AnyPawnCanLoadAnythingNow - { - get - { - if (!LoadInProgress) - { - return false; - } - if (!Spawned) - { - return false; - } - // 简化版本,只检查基本条件 - return Map.mapPawns.AllPawnsSpawned.Any(p => p.IsColonist && p.CanReach(this, PathEndMode.Touch, Danger.Deadly)); - } - } - - #endregion - - #region 构造函数 - - public Building_ArmedShuttleWithPocket() - { - innerContainer = new ThingOwner(this, oneStackOnly: false); - } #endregion #region 基础重写方法 - - - - public override void PostMake() - { - base.PostMake(); - if (innerContainer == null) - { - innerContainer = new ThingOwner(this, oneStackOnly: false); - } - } - + public override void ExposeData() { base.ExposeData(); - // 模仿原版MapPortal.ExposeData的逻辑 - Map map = pocketMap; - if (map != null && map.Parent?.HasMap == false) + if (Scribe.mode == LoadSaveMode.Saving && pocketMap != null && pocketMap.Parent?.HasMap == false) { pocketMap = null; } @@ -192,62 +71,40 @@ namespace WulaFallenEmpire Scribe_Values.Look(ref pocketMapSize, "pocketMapSize", new IntVec2(80, 80)); Scribe_Defs.Look(ref mapGenerator, "mapGenerator"); Scribe_Defs.Look(ref exitDef, "exitDef"); - Scribe_Values.Look(ref allowDirectAccess, "allowDirectAccess", true); - Scribe_Deep.Look(ref innerContainer, "innerContainer", this); - - // 模仿原版MapPortal,持久化leftToLoad和exit Scribe_References.Look(ref exit, "exit"); - Scribe_Values.Look(ref beenEntered, "beenEntered", defaultValue: false); - Scribe_Collections.Look(ref leftToLoad, "leftToLoad", LookMode.Deep); - Scribe_Values.Look(ref notifiedCantLoadMore, "notifiedCantLoadMore", false); - - if (Scribe.mode == LoadSaveMode.PostLoadInit) - { - if (innerContainer == null) - { - innerContainer = new ThingOwner(this, oneStackOnly: false); - } - // 模仿原版MapPortal,清理无效的leftToLoad条目 - leftToLoad?.RemoveAll((TransferableOneWay x) => x.AnyThing == null); - } } public override void DeSpawn(DestroyMode mode = DestroyMode.Vanish) { - // 清理口袋地图 if (pocketMap != null && pocketMapGenerated) { try { - // 将口袋空间中的物品和人员转移到主地图 TransferAllFromPocketToMainMap(); - - // 销毁口袋地图 PocketMapUtility.DestroyPocketMap(pocketMap); } catch (Exception ex) { - Log.Error($"[WULA] Error cleaning up pocket map: {ex}"); + Log.Error($"[WULA] Error cleaning up pocket map on DeSpawn: {ex}"); } } base.DeSpawn(mode); } - /// - /// 模仿原版MapPortal.Tick方法,处理加载进度通知和穿梭机状态变化 - /// protected override void Tick() { base.Tick(); - - // 模仿原版MapPortal的Tick逻辑:处理加载进度通知 - if (this.IsHashIntervalTick(60) && Spawned && LoadInProgress && !notifiedCantLoadMore && !AnyPawnCanLoadAnythingNow && leftToLoad?[0]?.AnyThing != null) + + if (!Spawned) return; + + bool isLoading = this.TransporterComp.leftToLoad != null && this.TransporterComp.leftToLoad.Any(x => x.CountToTransfer > 0); + if (wasLoading && !isLoading && doTeleportAfterLoading) { - notifiedCantLoadMore = true; - Messages.Message("MessageCantLoadMoreIntoPortal".Translate(Label, Faction.OfPlayer.def.pawnsPlural, leftToLoad[0].AnyThing), this, MessageTypeDefOf.CautionInput); + TeleportContentsToPocketDimension(); + doTeleportAfterLoading = false; } - - // 每隔一段时间检查退出点目标是否需要更新(处理穿梭机移动的情况) + wasLoading = isLoading; + if (this.IsHashIntervalTick(2500) && pocketMapGenerated && exit != null) { UpdateExitPointTarget(); @@ -261,19 +118,10 @@ namespace WulaFallenEmpire if (pocketMapGenerated) { sb.AppendLine("WULA.PocketSpace.Status".Translate() + ": " + "WULA.PocketSpace.Ready".Translate()); - if (innerContainer.Count > 0) + if (pocketMap.mapPawns.AllPawnsSpawned.Any(p => p.IsColonist)) { - sb.AppendLine("WULA.PocketSpace.ItemCount".Translate(innerContainer.Count)); - } - - // 显示口袋空间中的人员数量 - if (pocketMap != null) - { - int pawnCount = pocketMap.mapPawns.AllPawnsSpawned.Where(p => p.IsColonist).Count(); - if (pawnCount > 0) - { - sb.AppendLine("WULA.PocketSpace.PawnCount".Translate(pawnCount)); - } + int pawnCount = pocketMap.mapPawns.AllPawnsSpawned.Count(p => p.IsColonist); + sb.AppendLine("WULA.PocketSpace.PawnCount".Translate(pawnCount)); } } else @@ -286,101 +134,150 @@ namespace WulaFallenEmpire #endregion - #region 口袋空间核心方法 + #region Gizmos - /// - /// 检查是否可以进入口袋空间 - /// - public bool CanEnterPocketSpace() + public override IEnumerable GetGizmos() { - if (!allowDirectAccess) + foreach (var baseGizmo in base.GetGizmos()) { - return false; // 需要特殊权限 + var command = baseGizmo as Command; + if (command != null && (command.defaultLabel == "CommandLoadTransporter".Translate() || command.defaultLabel == "CommandLoadTransporter".Translate() + "...")) + { + yield return CreateLoadGizmo(false); + if (PocketMapExists) // Only show teleport load if pocket map exists + { + yield return CreateLoadGizmo(true); + } + } + else + { + yield return baseGizmo; + } } - if (!Spawned) + if (pocketMapGenerated && PocketMapExists) { - return false; - } - - return true; - } - - /// - /// 进入口袋空间 - 基于原版PocketMapUtility实现 - /// - public void EnterPocketSpace(IEnumerable pawns = null) - { - if (!CanEnterPocketSpace()) - { - Messages.Message("WULA.PocketSpace.CannotEnter".Translate(), this, MessageTypeDefOf.RejectInput); - return; - } - - // 创建或获取口袋地图 - if (pocketMap == null && !pocketMapGenerated) - { - CreatePocketMap(); - } - - if (pocketMap == null) - { - Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); - return; - } - - // 传送玩家到口袋空间 - List pawnsToTransfer = new List(); - - if (pawns != null) - { - pawnsToTransfer.AddRange(pawns.Where(p => p != null && p.Spawned && p.IsColonist)); + yield return new Command_Action + { + defaultLabel = "WULA.ViewPocketSpace".Translate(), + defaultDesc = "WULA.ViewPocketSpaceDesc".Translate(), + icon = ViewPocketMapTex, + action = SwitchToPocketSpace + }; } else { - // 如果没有指定人员,传送选中的殖民者 - pawnsToTransfer.AddRange(Find.Selector.SelectedPawns.Where(p => p.IsColonist)); - } - - if (pawnsToTransfer.Count == 0) - { - Messages.Message("WULA.PocketSpace.NoPawnsSelected".Translate(), this, MessageTypeDefOf.RejectInput); - return; - } - - // 执行传送 - int transferredCount = 0; - foreach (Pawn pawn in pawnsToTransfer) - { - if (TransferPawnToPocketSpace(pawn)) + yield return new Command_Action { - transferredCount++; - } - } - - if (transferredCount > 0) - { - Messages.Message("WULA.PocketSpace.TransferSuccess".Translate(transferredCount), MessageTypeDefOf.PositiveEvent); - - // 切换到口袋地图 - Current.Game.CurrentMap = pocketMap; - Find.CameraDriver.JumpToCurrentMapLoc(pocketMap.Center); + defaultLabel = "WULA.CreatePocketSpace".Translate(), + defaultDesc = "WULA.CreatePocketSpaceDesc".Translate(), + icon = EnterPocketMapTex, + action = CreatePocketMap + }; } } - /// - /// 切换到口袋空间视角 - /// + private Command_Action CreateLoadGizmo(bool teleport) + { + var command = new Command_Action(); + var originalLoadGizmo = this.TransporterComp.CompGetGizmosExtra().FirstOrDefault(g => g is Command && (((Command)g).defaultLabel == "CommandLoadTransporter".Translate() || ((Command)g).defaultLabel == "CommandLoadTransporter".Translate() + "...")) as Command; + + if (teleport) + { + command.defaultLabel = "WULA.LoadAndTeleport".Translate(); + command.defaultDesc = "WULA.LoadAndTeleportDesc".Translate(); + command.icon = TeleportAndLoadTex; + } + else + { + command.defaultLabel = "WULA.LoadIntoCargo".Translate(); + command.defaultDesc = "WULA.LoadIntoCargoDesc".Translate(); + command.icon = originalLoadGizmo?.icon ?? ContentFinder.Get("UI/Commands/LoadTransporter"); + } + + if (originalLoadGizmo != null) + { + command.action = () => + { + doTeleportAfterLoading = teleport; + originalLoadGizmo.ProcessInput(null); + }; + + if (originalLoadGizmo.Disabled) + { + command.Disable(originalLoadGizmo.disabledReason); + } + } + else + { + command.Disable("Error: Could not find original load command.".Translate()); + } + + // This disabling logic is now redundant if we control visibility in GetGizmos, + // but keeping it here for safety against direct calls. + if (teleport && !PocketMapExists) + { + command.Disable("WULA.PocketSpace.NotGenerated".Translate()); + } + + return command; + } + + #endregion + + #region 口袋空间核心方法 + + public void TeleportContentsToPocketDimension() + { + if (!PocketMapExists || this.TransporterComp == null) return; + + var thingsToTeleport = this.TransporterComp.innerContainer.ToList(); + if (!thingsToTeleport.Any()) return; + + Log.Message($"[WULA] Teleporting {thingsToTeleport.Count} things to pocket dimension."); + + IntVec3 spawnCenter = exit?.Position ?? pocketMap.Center; + + this.TransporterComp.innerContainer.TryDropAll(spawnCenter, pocketMap, ThingPlaceMode.Near); + + Messages.Message("WULA.TeleportComplete".Translate(thingsToTeleport.Count), this, MessageTypeDefOf.PositiveEvent); + } + + public void EnterPocketSpace(IEnumerable pawns) + { + if (!PocketMapExists) + { + Messages.Message("WULA.PocketSpace.NotGenerated".Translate(), this, MessageTypeDefOf.RejectInput); + return; + } + + if (pawns == null || !pawns.Any()) + { + return; + } + + foreach (Pawn pawn in pawns.ToList()) + { + if (pawn != null && pawn.Spawned) + { + TransferPawnToPocketSpace(pawn); + } + } + + Messages.Message("WULA.PocketSpace.TransferSuccess".Translate(pawns.Count()), MessageTypeDefOf.PositiveEvent); + Current.Game.CurrentMap = pocketMap; + } + public void SwitchToPocketSpace() { - if (pocketMap == null) + if (!PocketMapExists) { if (!pocketMapGenerated) { CreatePocketMap(); } - if (pocketMap == null) + if (!PocketMapExists) { Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); return; @@ -391,15 +288,10 @@ namespace WulaFallenEmpire Find.CameraDriver.JumpToCurrentMapLoc(pocketMap.Center); } - /// - /// 创建口袋地图 - 使用原版PocketMapUtility(模仿 MapPortal.GeneratePocketMap) - /// private void CreatePocketMap() { try { - // 模仿原版 MapPortal.GeneratePocketMap 的实现 - // 注意:我们不是MapPortal,所以设为null PocketMapUtility.currentlyGeneratingPortal = null; pocketMap = GeneratePocketMapInt(); PocketMapUtility.currentlyGeneratingPortal = null; @@ -407,30 +299,25 @@ namespace WulaFallenEmpire if (pocketMap != null) { pocketMapGenerated = true; - - // 在口袋地图中心放置退出点 PlaceExitInPocketMap(); - Log.Message($"[WULA] Pocket map created successfully with size {pocketMap.Size}"); + Messages.Message("WULA.PocketSpace.CreationSuccess".Translate(), this, MessageTypeDefOf.PositiveEvent); } else { Log.Error("[WULA] Failed to create pocket map"); + Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); } } catch (Exception ex) { Log.Error($"[WULA] Error creating pocket map: {ex}"); - PocketMapUtility.currentlyGeneratingPortal = null; // 确保清理 + PocketMapUtility.currentlyGeneratingPortal = null; } } - - /// - /// 模仿原版MapPortal.GeneratePocketMapInt - /// + protected virtual Map GeneratePocketMapInt() { - // 使用自定义地图生成器 if (mapGenerator == null) { mapGenerator = DefDatabase.GetNamed("WULA_PocketSpace_Small", false) @@ -438,52 +325,36 @@ namespace WulaFallenEmpire ?? MapGeneratorDefOf.Base_Player; } - // 使用自定义尺寸 IntVec3 mapSize = new IntVec3(pocketMapSize.x, 1, pocketMapSize.z); - return PocketMapUtility.GeneratePocketMap(mapSize, mapGenerator, GetExtraGenSteps(), this.Map); } - /// - /// 模仿原版MapPortal.GetExtraGenSteps - /// protected virtual IEnumerable GetExtraGenSteps() { return Enumerable.Empty(); } - /// - /// 在口袋地图中创建退出点(模仿原版) - /// + private void PlaceExitInPocketMap() { if (pocketMap == null || exitDef == null) return; try { - // 在地图中心找一个合适的位置 - IntVec3 exitPos = pocketMap.Center; - - // 寻找可建造的位置 - if (!exitPos.Standable(pocketMap) || exitPos.GetThingList(pocketMap).Any(t => t.def.category == ThingCategory.Building)) - { - exitPos = CellFinder.RandomClosewalkCellNear(pocketMap.Center, pocketMap, 5, + IntVec3 exitPos = CellFinder.RandomClosewalkCellNear(pocketMap.Center, pocketMap, 5, p => p.Standable(pocketMap) && !p.GetThingList(pocketMap).Any(t => t.def.category == ThingCategory.Building)); - } if (exitPos.IsValid) { - // 创建退出点建筑 Thing exitBuilding = ThingMaker.MakeThing(exitDef); if (exitBuilding is Building_PocketMapExit exitPortal) { exitPortal.targetMap = this.Map; exitPortal.targetPos = this.Position; exitPortal.parentShuttle = this; - exit = exitPortal; // 设置 exit 引用,模仿原版 MapPortal + exit = exitPortal; } GenPlace.TryPlaceThing(exitBuilding, exitPos, pocketMap, ThingPlaceMode.Direct); - Log.Message($"[WULA] Created exit point at {exitPos} in pocket map"); } else { @@ -496,16 +367,12 @@ namespace WulaFallenEmpire } } - /// - /// 将单个Pawn传送到口袋空间 - /// private bool TransferPawnToPocketSpace(Pawn pawn) { if (pawn == null || !pawn.Spawned || pocketMap == null) return false; try { - // 找一个安全的位置 IntVec3 spawnPos = CellFinder.RandomClosewalkCellNear(pocketMap.Center, pocketMap, 10, p => p.Standable(pocketMap) && !p.GetThingList(pocketMap).Any(t => t is Pawn)); @@ -524,53 +391,29 @@ namespace WulaFallenEmpire return false; } - /// - /// 将所有物品和人员从口袋空间转移到主地图 - /// private void TransferAllFromPocketToMainMap() { if (pocketMap == null || !Spawned) return; try { - // 转移所有殖民者 - List pawnsToTransfer = pocketMap.mapPawns.AllPawnsSpawned - .Where(p => p.IsColonist).ToList(); - - foreach (Pawn pawn in pawnsToTransfer) + List thingsToTransfer = new List(pocketMap.listerThings.AllThings); + foreach (Thing thing in thingsToTransfer) { - IntVec3 spawnPos = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, - p => p.Standable(this.Map) && !p.GetThingList(this.Map).Any(t => t is Pawn)); - - if (spawnPos.IsValid) + if (thing.def.category != ThingCategory.Mote && thing.def.category != ThingCategory.Filth) { - pawn.DeSpawn(); - GenPlace.TryPlaceThing(pawn, spawnPos, this.Map, ThingPlaceMode.Near); - } - } - - // 转移所有物品到内部容器 - List itemsToTransfer = pocketMap.listerThings.AllThings - .Where(t => t.def.category == ThingCategory.Item && t.def.EverHaulable).ToList(); - - foreach (Thing item in itemsToTransfer) - { - if (item.Spawned) - { - item.DeSpawn(); - if (!innerContainer.TryAdd(item)) - { - // 如果容器满了,丢到穿梭机附近 - IntVec3 dropPos = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 3); - if (dropPos.IsValid) - { - GenPlace.TryPlaceThing(item, dropPos, this.Map, ThingPlaceMode.Near); - } - } + if(this.TransporterComp.innerContainer.TryAddOrTransfer(thing)) + { + //Success + } + else + { + thing.Destroy(); + } } } - Log.Message($"[WULA] Transferred {pawnsToTransfer.Count} pawns and {itemsToTransfer.Count} items from pocket space"); + Log.Message($"[WULA] Transferred {thingsToTransfer.Count} things from pocket space to shuttle cargo."); } catch (Exception ex) { @@ -579,695 +422,64 @@ namespace WulaFallenEmpire } #endregion - - #region Gizmo方法 - - public override IEnumerable GetGizmos() - { - foreach (Gizmo gizmo in base.GetGizmos()) - { - yield return gizmo; - } - - if (allowDirectAccess) - { - if (pocketMap == null) - { - // 创建口袋空间按钮 - Command_Action createCommand = new Command_Action(); - createCommand.action = delegate - { - try - { - Log.Message("[WULA] Creating pocket map..."); - CreatePocketMap(); - - if (pocketMap != null) - { - Messages.Message("WULA.PocketSpace.CreationSuccess".Translate(), this, MessageTypeDefOf.PositiveEvent); - } - else - { - Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); - } - } - catch (Exception ex) - { - Log.Error($"[WULA] Error creating pocket map: {ex}"); - Messages.Message("WULA.PocketSpace.CreationFailed".Translate(), this, MessageTypeDefOf.RejectInput); - } - }; - createCommand.icon = EnterTex; - createCommand.defaultLabel = "WULA.PocketSpace.CreateMap".Translate(); - createCommand.defaultDesc = "WULA.PocketSpace.CreateMapDesc".Translate(); - - // 检查是否可以创建 - string reason; - createCommand.Disabled = !IsEnterable(out reason); - createCommand.disabledReason = reason; - yield return createCommand; - } - else - { - // 进入口袋空间按钮(直接复制原版MapPortal的逻辑) - Command_Action enterCommand = new Command_Action(); - enterCommand.action = delegate - { - try - { - Log.Message("[WULA] Creating MapPortalAdapter..."); - var adapter = new MapPortalAdapter(this); - Log.Message($"[WULA] Adapter created. Map: {adapter.Map?.uniqueID}, Spawned: {adapter.Spawned}"); - - Log.Message("[WULA] Creating Dialog_EnterPortal..."); - Dialog_EnterPortal window = new Dialog_EnterPortal(adapter); - Log.Message("[WULA] Dialog created, adding to WindowStack..."); - Find.WindowStack.Add(window); - Log.Message("[WULA] Dialog added to WindowStack successfully."); - } - catch (Exception ex) - { - Log.Error($"[WULA] Error opening Dialog_EnterPortal: {ex}"); - Messages.Message("WULA.PocketSpace.LoadingDialogError".Translate(), MessageTypeDefOf.RejectInput); - } - }; - enterCommand.icon = EnterTex; - enterCommand.defaultLabel = EnterString + "..."; - enterCommand.defaultDesc = "WULA.PocketSpace.EnterDesc".Translate(); - - // 检查是否可以进入(模仿原版MapPortal.IsEnterable) - string reason; - enterCommand.Disabled = !IsEnterable(out reason); - enterCommand.disabledReason = reason; - yield return enterCommand; - } - - // 查看口袋地图按钮(模仿原版MapPortal) - if (pocketMap != null) - { - yield return new Command_Action - { - defaultLabel = "WULA.PocketSpace.ViewMap".Translate(), - defaultDesc = "WULA.PocketSpace.ViewMapDesc".Translate(), - icon = ViewPocketMapTex, - action = delegate - { - // 模仿原版,跳转到口袋地图并选中退出点 - if (exit != null) - { - CameraJumper.TryJumpAndSelect(exit); - } - else - { - SwitchToPocketSpace(); - } - } - }; - } - } - } - - - - #endregion - - #region IThingHolder接口实现 - - public ThingOwner GetDirectlyHeldThings() - { - // 返回containerProxy,与Dialog_EnterPortal兼容 - return containerProxy; - } + + #region IThingHolder public void GetChildHolders(List outChildren) { - ThingOwnerUtility.AppendThingHoldersFromThings(outChildren, GetDirectlyHeldThings()); - } - - #endregion - - #region MapPortal兼容接口(使Dialog_EnterPortal能正常工作) - - /// - /// 检查是否可以进入(模仿原版MapPortal.IsEnterable) - /// - public virtual bool IsEnterable(out string reason) - { - if (!allowDirectAccess) + if (this.TransporterComp != null) { - reason = "WULA.PocketSpace.AccessDenied".Translate(); - return false; + outChildren.Add(this.TransporterComp); } - - if (!Spawned) - { - reason = "WULA.PocketSpace.NotSpawned".Translate(); - return false; - } - - reason = ""; - return true; - } - - /// - /// 获取目标地图(模仿原版MapPortal.GetOtherMap) - /// - public virtual Map GetOtherMap() - { - if (pocketMap == null) - { - CreatePocketMap(); - } - return pocketMap; - } - - /// - /// 获取目标位置(模仿原版MapPortal.GetDestinationLocation) - /// - public virtual IntVec3 GetDestinationLocation() - { - if (exit != null) - { - return exit.Position; - } - return pocketMap?.Center ?? IntVec3.Invalid; - } - - /// - /// 处理进入事件(模仿原版MapPortal.OnEntered) - /// - public virtual void OnEntered(Pawn pawn) - { - // 通知物品被添加(用于统计和管理) - Notify_ThingAdded(pawn); - - // 播放传送音效(如果存在) - if (Find.CurrentMap == this.Map) - { - // 可以在这里添加音效播放 - // def.portal?.traverseSound?.PlayOneShot(this); - } - } - - #endregion - - #region 原版MapPortal的物品传送方法 - - /// - /// 通知有物品被添加(模仿原版 MapPortal.Notify_ThingAdded) - /// - public void Notify_ThingAdded(Thing t) - { - Log.Message($"[WULA] Notify_ThingAdded called for: {t?.def?.defName} x{t?.stackCount}"); - Log.Message($"[WULA] leftToLoad count before: {leftToLoad?.Count ?? 0}"); - - int removedCount = SubtractFromToLoadList(t, t.stackCount); - - Log.Message($"[WULA] Removed {removedCount} items from leftToLoad list"); - Log.Message($"[WULA] leftToLoad count after: {leftToLoad?.Count ?? 0}"); - - // 同时通知CompTransporter组件,确保原版装载系统也得到通知 - var compTransporter = this.GetComp(); - if (compTransporter != null) - { - Log.Message($"[WULA] Notifying CompTransporter about thing added: {t?.def?.defName}"); - try - { - // 调用CompTransporter的Notify_ThingAdded方法(如果存在) - var method = compTransporter.GetType().GetMethod("Notify_ThingAdded", new[] { typeof(Thing) }); - if (method != null) - { - method.Invoke(compTransporter, new object[] { t }); - Log.Message("[WULA] Successfully called CompTransporter.Notify_ThingAdded"); - } - else - { - Log.Message("[WULA] CompTransporter.Notify_ThingAdded method not found"); - } - } - catch (Exception ex) - { - Log.Warning($"[WULA] Failed to notify CompTransporter: {ex.Message}"); - } - } - else - { - Log.Message("[WULA] No CompTransporter found on this building"); - } - } - - /// - /// 添加到加载列表(模仿原版 MapPortal.AddToTheToLoadList) - /// - public void AddToTheToLoadList(TransferableOneWay t, int count) - { - if (!t.HasAnyThing || count <= 0) - { - return; - } - if (leftToLoad == null) - { - leftToLoad = new List(); - } - TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatching(t.AnyThing, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking); - if (transferableOneWay != null) - { - for (int i = 0; i < t.things.Count; i++) - { - if (!transferableOneWay.things.Contains(t.things[i])) - { - transferableOneWay.things.Add(t.things[i]); - } - } - if (transferableOneWay.CanAdjustBy(count).Accepted) - { - transferableOneWay.AdjustBy(count); - } - } - else - { - TransferableOneWay transferableOneWay2 = new TransferableOneWay(); - leftToLoad.Add(transferableOneWay2); - transferableOneWay2.things.AddRange(t.things); - transferableOneWay2.AdjustTo(count); - } - } - - /// - /// 从加载列表中减去(模仿原版 MapPortal.SubtractFromToLoadList) - /// - public int SubtractFromToLoadList(Thing t, int count) - { - Log.Message($"[WULA] SubtractFromToLoadList called for: {t?.def?.defName} x{count}"); - - if (leftToLoad == null) - { - Log.Message("[WULA] leftToLoad is null, returning 0"); - return 0; - } - - Log.Message($"[WULA] Searching in leftToLoad list with {leftToLoad.Count} entries"); - TransferableOneWay transferableOneWay = TransferableUtility.TransferableMatchingDesperate(t, leftToLoad, TransferAsOneMode.PodsOrCaravanPacking); - - if (transferableOneWay == null) - { - Log.Message($"[WULA] No matching transferable found for {t?.def?.defName}"); - return 0; - } - - Log.Message($"[WULA] Found matching transferable with CountToTransfer: {transferableOneWay.CountToTransfer}"); - - if (transferableOneWay.CountToTransfer <= 0) - { - Log.Message("[WULA] CountToTransfer <= 0, returning 0"); - return 0; - } - - int num = Mathf.Min(count, transferableOneWay.CountToTransfer); - Log.Message($"[WULA] Adjusting transferable by: -{num}"); - - transferableOneWay.AdjustBy(-num); - transferableOneWay.things.Remove(t); - - Log.Message($"[WULA] After adjustment - CountToTransfer: {transferableOneWay.CountToTransfer}, things.Count: {transferableOneWay.things.Count}"); - - if (transferableOneWay.CountToTransfer <= 0) - { - Log.Message("[WULA] Removing transferable from leftToLoad list"); - leftToLoad.Remove(transferableOneWay); - } - - Log.Message($"[WULA] leftToLoad list now has {leftToLoad.Count} entries"); - return num; - } - - /// - /// 取消加载(模仿原版 MapPortal.CancelLoad) - /// - public void CancelLoad(MapPortal portal = null) - { - // 简化版本:只清理leftToLoad列表 - // 原版需要查找MapPortal相关的Lord,但我们不是MapPortal类型 - if (leftToLoad != null) - { - leftToLoad.Clear(); - } - } - - - - #endregion - - #region 穿梭机状态变化处理 - - /// - /// 更新口袋空间中退出点的目标位置(处理穿梭机位置变化) - /// - public void UpdateExitPointTarget() - { - if (pocketMap == null || exit == null) return; - - try - { - // 如果退出点是我们的Building_PocketMapExit类型,更新其目标位置 - if (exit is Building_PocketMapExit pocketExit) - { - // 更新目标地图和位置 - if (this.Spawned) - { - // 穿梭机在地图上,更新目标位置 - if (pocketExit.targetMap != this.Map || pocketExit.targetPos != this.Position) - { - pocketExit.targetMap = this.Map; - pocketExit.targetPos = this.Position; - pocketExit.parentShuttle = this; - Log.Message($"[WULA] Updated pocket map exit target to shuttle location: {this.Map?.uniqueID} at {this.Position}"); - } - } - else - { - // 穿梭机不在地图上(可能在飞行中),记录警告但保持原有目标 - Log.Warning($"[WULA] Shuttle not spawned, pocket map exit target may be outdated. Current target: {pocketExit.targetMap?.uniqueID} at {pocketExit.targetPos}"); - } - } - } - catch (Exception ex) - { - Log.Error($"[WULA] Error updating exit point target: {ex}"); - } - } - - - - /// - /// 重写 SpawnSetup,确保位置变化时更新退出点 - /// - public override void SpawnSetup(Map map, bool respawningAfterLoad) - { - // 保存旧位置信息 - Map oldMap = this.Map; - IntVec3 oldPos = this.Position; - - base.SpawnSetup(map, respawningAfterLoad); - - if (innerContainer == null) - { - innerContainer = new ThingOwner(this, oneStackOnly: false); - } - - // 初始化containerProxy(模仿原版MapPortal) - containerProxy = new PortalContainerProxy - { - portal = this - }; - - // 更新退出点目标(处理穿梭机重新部署的情况) - UpdateExitPointTarget(); - - // 从 ThingDef 中读取 portal 配置 - if (def.HasModExtension()) - { - var portalProps = def.GetModExtension(); - if (portalProps.pocketMapGenerator != null) - { - mapGenerator = portalProps.pocketMapGenerator; - } - if (portalProps.exitDef != null) - { - exitDef = portalProps.exitDef; - } - if (portalProps.pocketMapSize != IntVec2.Zero) - { - pocketMapSize = portalProps.pocketMapSize; - } - allowDirectAccess = portalProps.allowDirectAccess; - } - - // 初始化地图生成器和退出点定义(如果 XML 中没有配置) - if (mapGenerator == null) - { - mapGenerator = DefDatabase.GetNamed("AncientStockpile", false) - ?? DefDatabase.GetNamed("Base_Player", false) - ?? MapGeneratorDefOf.Base_Player; - } - - if (exitDef == null) - { - exitDef = DefDatabase.GetNamed("WULA_PocketMapExit", false) - ?? ThingDefOf.Door; - } - - // 如果位置发生了变化,记录日志 - if (oldMap != null && (oldMap != map || oldPos != this.Position)) - { - Log.Message($"[WULA] Shuttle moved from {oldMap?.uniqueID}:{oldPos} to {map?.uniqueID}:{this.Position}, updating pocket map exit target"); - } - } - - #endregion - } - - /// - /// 口袋空间属性配置类 - /// - public class PocketMapProperties : DefModExtension - { - /// 口袋地图生成器 - public MapGeneratorDef pocketMapGenerator; - - /// 退出点定义 - public ThingDef exitDef; - - /// 口袋地图大小 - public IntVec2 pocketMapSize = new IntVec2(13, 13); - - /// 允许直接访问 - public bool allowDirectAccess = true; - } - - /// - /// MapPortal适配器类,使非MapPortal类型能够使用Dialog_EnterPortal - /// 直接继承MapPortal并委托给Building_ArmedShuttleWithPocket实现 - /// - public class MapPortalAdapter : MapPortal - { - private Building_ArmedShuttleWithPocket shuttleBuilding; - - public MapPortalAdapter(Building_ArmedShuttleWithPocket shuttle) - { - Log.Message($"[WULA] MapPortalAdapter constructor called for shuttle: {shuttle?.def?.defName}"); - shuttleBuilding = shuttle; - - // 确保基础属性正确设置 - this.def = shuttle.def ?? ThingDefOf.Wall; // 提供默认值避免null - this.HitPoints = shuttle.HitPoints; - - // 关键:手动设置Map和Position属性以避免null引用 - if (shuttle.Spawned && shuttle.Map != null) - { - // 手动调用父类的SpawnSetup,但要小心处理 - try - { - base.SpawnSetup(shuttle.Map, false); - Log.Message($"[WULA] SpawnSetup completed for map: {shuttle.Map.uniqueID}"); - } - catch (Exception ex) - { - Log.Warning($"[WULA] SpawnSetup failed, manually setting properties: {ex.Message}"); - // 如果SpawnSetup失败,手动设置关键属性 - } - } - - // 设置基础MapPortal属性 - this.pocketMap = shuttle.PocketMapForPortal; - this.leftToLoad = shuttle.leftToLoad ?? new List(); - - // 确保exit属性被正确设置 - // 注意:由于类型不兼容,暂时设为null,在GetDestinationLocation中处理 - this.exit = null; // 原版PocketMapExit类型与我们的Building_PocketMapExit不兼容 - - Log.Message($"[WULA] Synced pocketMap: {pocketMap?.uniqueID}, leftToLoad count: {leftToLoad?.Count}, exit: {exit != null}"); - - // 使用原版的PortalContainerProxy - try - { - this.containerProxy = new RimWorld.PortalContainerProxy - { - portal = this - }; - Log.Message("[WULA] Created RimWorld.PortalContainerProxy successfully"); - } - catch (Exception ex) - { - Log.Error($"[WULA] Failed to create RimWorld.PortalContainerProxy: {ex}"); - // 使用我们自己的实现作为回退 - Log.Message("[WULA] Using custom PortalContainerProxy as fallback"); - } - Log.Message("[WULA] MapPortalAdapter initialization complete"); - } - - // 委托给shuttleBuilding的关键属性(使用new隐藏基类属性) - // 委托给shuttleBuilding的关键属性(使用new隐藏基类属性) - public new Map Map - { - get - { - // 优先返回shuttleBuilding的Map - if (shuttleBuilding?.Map != null) - { - return shuttleBuilding.Map; - } - - // 如果shuttleBuilding的Map为null,返回基类的Map - if (base.Map != null) - { - return base.Map; - } - - // 最后的回退:返回当前游戏地图(避免null) - Log.Warning("[WULA] Both shuttleBuilding.Map and base.Map are null, using Current.Game.CurrentMap as fallback"); - return Find.CurrentMap ?? Current.Game.Maps?.FirstOrDefault(); - } - } - public new IntVec3 Position => shuttleBuilding?.Position ?? base.Position; - public new bool Spawned => shuttleBuilding?.Spawned ?? base.Spawned; - public new string Label => shuttleBuilding?.Label ?? base.Label; - - // 委托给shuttleBuilding的关键方法(重写虚拟方法) - public override bool IsEnterable(out string reason) - { - return shuttleBuilding.IsEnterable(out reason); - } - - public override Map GetOtherMap() - { - return shuttleBuilding.GetOtherMap(); - } - - public override IntVec3 GetDestinationLocation() - { - return shuttleBuilding.GetDestinationLocation(); - } - - public override void OnEntered(Pawn pawn) - { - shuttleBuilding.OnEntered(pawn); - } - - // 委托给shuttleBuilding的物品管理方法(使用new隐藏基类方法) - public new void Notify_ThingAdded(Thing t) - { - shuttleBuilding.Notify_ThingAdded(t); - } - - public new void AddToTheToLoadList(TransferableOneWay t, int count) - { - shuttleBuilding.AddToTheToLoadList(t, count); - } - - public new int SubtractFromToLoadList(Thing t, int count) - { - return shuttleBuilding.SubtractFromToLoadList(t, count); - } - - public new void CancelLoad() - { - // 调用shuttleBuilding的CancelLoad方法 - shuttleBuilding.CancelLoad(); - } - - // 重写原版MapPortal的关键属性 - public override string EnterString => shuttleBuilding.EnterString; - public override string CancelEnterString => shuttleBuilding.CancelEnterString; - public override string EnteringString => shuttleBuilding.EnteringString; - - // 隐藏LoadInProgress属性,确保Dialog_EnterPortal能正确读取 - public new bool LoadInProgress => shuttleBuilding?.LoadInProgress ?? false; - - // 确保SpawnSetup正确处理 - public override void SpawnSetup(Map map, bool respawningAfterLoad) - { - // 调用基类的SpawnSetup来正确初始化MapPortal的基础设施 - base.SpawnSetup(map, respawningAfterLoad); - - // 同步关键字段 - this.pocketMap = shuttleBuilding?.PocketMapForPortal; - this.leftToLoad = shuttleBuilding?.leftToLoad ?? new List(); - } - - // 重写AddItemsToTransferables,让Dialog_EnterPortal只处理人员 - // 因为物品已经通过装载按钮正确传送到内部空间了 - protected virtual void AddItemsToTransferables() - { - // 不添加任何物品,因为物品传送由装载按钮处理 - // 这样Dialog_EnterPortal只专注于人员传送 - Log.Message("[WULA] AddItemsToTransferables: Skipping items, handled by loading button"); - } - } - - /// - /// 专为Building_ArmedShuttleWithPocket设计的PortalContainerProxy适配器 - /// 模仿原版PortalContainerProxy的行为,但适配非-MapPortal类型 - /// - public class PortalContainerProxy : ThingOwner - { - public Building_ArmedShuttleWithPocket portal; - - public override int Count => 0; - - public override int TryAdd(Thing item, int count, bool canMergeWithExistingStacks = true) - { - if (TryAdd(item, canMergeWithExistingStacks)) - { - return count; - } - return 0; } - public override bool TryAdd(Thing item, bool canMergeWithExistingStacks = true) - { - if (portal == null) return false; - - Log.Message($"[WULA] PortalContainerProxy.TryAdd called for: {item?.def?.defName} x{item?.stackCount}"); - - Map otherMap = portal.GetOtherMap(); - IntVec3 destinationLocation = portal.GetDestinationLocation(); - - if (otherMap == null || !destinationLocation.IsValid) - { - Log.Warning("[WULA] PortalContainerProxy: Invalid target map or location, using inner container"); - // 如果目标地图或位置无效,将物品放入内部容器 - return portal.InnerContainer.TryAdd(item, canMergeWithExistingStacks); - } - - // 关键:严格按照原版顺序 - 先通知,再传送 - // 这样能确保leftToLoad列表在物品被传送前就得到更新 - Log.Message($"[WULA] Calling portal.Notify_ThingAdded for: {item?.def?.defName} x{item?.stackCount}"); - portal.Notify_ThingAdded(item); - - // 传送物品到目标地图 - Log.Message($"[WULA] Transporting item to pocket map: {item?.def?.defName}"); - GenDrop.TryDropSpawn(item, destinationLocation, otherMap, ThingPlaceMode.Near, out var _); - - Log.Message($"[WULA] Item transport completed successfully"); - return true; - } - - public override int IndexOf(Thing item) - { - return -1; - } - - public override bool Remove(Thing item) - { - return false; - } - - protected override Thing GetAt(int index) + public ThingOwner GetDirectlyHeldThings() { return null; } + + #endregion + + #region 穿梭机移动更新 + + public void UpdateExitPointTarget() + { + if (exit != null && exit.Spawned && exit.targetPos != this.Position) + { + exit.targetPos = this.Position; + } + } + + #endregion + + #region 启动与生成 + + public override void SpawnSetup(Map map, bool respawningAfterLoad) + { + base.SpawnSetup(map, respawningAfterLoad); + + var props = def.GetModExtension(); + if (props != null) + { + pocketMapSize = props.pocketMapSize; + mapGenerator = props.mapGenerator; + exitDef = props.exitDef; + } + else + { + pocketMapSize = new IntVec2(50, 50); + mapGenerator = MapGeneratorDefOf.Base_Player; + exitDef = ThingDef.Named("WULA_PocketMapExit"); + } + } + + #endregion } - + public class PocketMapProperties : DefModExtension + { + public IntVec2 pocketMapSize = new IntVec2(50, 50); + public MapGeneratorDef mapGenerator; + public ThingDef exitDef; + } } \ No newline at end of file