diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index ee4c8bd8..5dd9f76f 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs b/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs index f096946b..dfc33ae7 100644 --- a/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs +++ b/Source/WulaFallenEmpire/WULA_Shuttle/Building_ArmedShuttleWithPocket.cs @@ -652,103 +652,6 @@ namespace WulaFallenEmpire Log.Error($"[WULA-ERROR] Stack trace: {ex.StackTrace}"); } } - - /// - /// 手动同步口袋空间中的所有物品到穿梭机主容器 - /// 用于解决物品消失问题 - /// - public void SyncPocketItemsToMainContainer() - { - Log.Message("[WULA-DEBUG] SyncPocketItemsToMainContainer started"); - - if (pocketMap == null || !pocketMapGenerated) - { - Log.Warning("[WULA-DEBUG] SyncPocketItemsToMainContainer: No pocket map to sync"); - return; - } - - CompTransporter transporter = this.GetComp(); - if (transporter == null) - { - Log.Error("[WULA-ERROR] No CompTransporter found on shuttle, cannot sync items"); - return; - } - - Log.Message($"[WULA-DEBUG] Starting sync. Current container has {transporter.innerContainer.Count} items"); - - try - { - List itemsInPocket = pocketMap.listerThings.AllThings - .Where(t => t.def.category == ThingCategory.Item && t.def.EverHaulable && t.Spawned).ToList(); - - Log.Message($"[WULA-DEBUG] Found {itemsInPocket.Count} items in pocket space to check"); - - int syncedCount = 0; - int droppedCount = 0; - int skippedCount = 0; - - foreach (Thing item in itemsInPocket) - { - // 检查物品是否已经在主容器中 - if (!transporter.innerContainer.Contains(item)) - { - Log.Message($"[WULA-DEBUG] Syncing item: {item.LabelShort} (not in main container)"); - - // 从口袋地图中移除 - IntVec3 originalPos = item.Position; - item.DeSpawn(); - - // 尝试添加到主容器 - if (transporter.innerContainer.TryAdd(item)) - { - syncedCount++; - Log.Message($"[WULA-DEBUG] Successfully synced item: {item.LabelShort}"); - } - else - { - Log.Warning($"[WULA-WARNING] Container full, dropping item: {item.LabelShort}"); - // 如果主容器满了,放到穿梭机附近(玩家可以手动装载) - IntVec3 dropPos = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 3); - if (dropPos.IsValid) - { - GenPlace.TryPlaceThing(item, dropPos, this.Map, ThingPlaceMode.Near); - droppedCount++; - Log.Message($"[WULA-DEBUG] Dropped item {item.LabelShort} at {dropPos}"); - } - else - { - // 如果找不到合适位置,重新放回口袋空间 - GenPlace.TryPlaceThing(item, originalPos, pocketMap, ThingPlaceMode.Near); - Log.Warning($"[WULA-WARNING] Could not find drop position, returned item {item.LabelShort} to pocket"); - } - } - } - else - { - skippedCount++; - Log.Message($"[WULA-DEBUG] Item {item.LabelShort} already in main container, skipping"); - } - } - - string message = $"[WULA-SUCCESS] 同步完成: {syncedCount} 个物品已同步"; - if (droppedCount > 0) - { - message += $", {droppedCount} 个物品因容器已满被放置在附近"; - } - if (skippedCount > 0) - { - message += $", {skippedCount} 个物品已在容器中"; - } - - Log.Message(message); - Log.Message($"[WULA-DEBUG] Final container state: {transporter.innerContainer.Count} items"); - } - catch (Exception ex) - { - Log.Error($"[WULA-ERROR] Error syncing pocket items to main container: {ex}"); - Log.Error($"[WULA-ERROR] Stack trace: {ex.StackTrace}"); - } - } /// /// 获取口袋空间状态信息(用于调试) @@ -1097,7 +1000,6 @@ namespace WulaFallenEmpire int itemsInPocket = pocketMap.listerThings.AllThings.Count(t => t.def.category == ThingCategory.Item && t.def.EverHaulable && t.Spawned); if (itemsInPocket > 0) { - SyncPocketItemsToMainContainer(); if (Prefs.DevMode) { Log.Message($"[WULA] Auto-synced pocket items. Current status: {GetPocketSpaceDebugInfo()}");