From 2388034c82c372ac7d870eafcaa8b8561b50397f Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Mon, 25 Aug 2025 20:29:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(wula):=20=E6=9B=B4=E6=96=B0=E6=AD=A6?= =?UTF-8?q?=E8=A3=85=E7=A9=BF=E6=A2=AD=E6=9C=BA=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=96=B0=E6=AD=A6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重新设计了武装穿梭机的外观和性能 - 添加了带有口袋空间功能的武装穿梭机 - 新增了 PMr-89 "四叶" 自动炮和 PMr-88 "三叶" 突击步枪 - 优化了子弹和武器的特效 --- .../Building_WULA_ArmedShuttleWithPocket.xml | 287 ----------------- .../Building_WULA_Shuttle.xml | 301 ++++++++++++++++-- .../ThingDefs_Misc/Weapons/WULA_Weapon.xml | 94 ++++++ ...A_Weapon_Homing_Examples_Bullet_Homing.xml | 177 ---------- .../ArmedPocketShuttle_DesignDocument.md | 109 ------- .../3516260226.code-workspace | 3 - 6 files changed, 372 insertions(+), 599 deletions(-) delete mode 100644 1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml delete mode 100644 1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon_Homing_Examples_Bullet_Homing.xml delete mode 100644 Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml b/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml deleted file mode 100644 index b02b03f9..00000000 --- a/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml +++ /dev/null @@ -1,287 +0,0 @@ - - - - - WULA_ArmedShuttleWithPocket - - An advanced chemfuel-powered shuttle with integrated pocket space technology. Equipped with a defensive turret and internal storage dimension that doesn't require hacking to access. Perfect for long-distance exploration and mobile operations. - WulaFallenEmpire.Building_ArmedShuttleWithPocket - true - Building - 50 - true - PassThroughOnly - 0.5 - (3,5) - true - (0.56, 0.62, 0.9) - 1 - - Graphic_Multi - Things/Building/PassengerShuttle/PassengerShuttle - CutoutComplex - (3,5) - - (1.8, 1.0, 4.1) - (-0.1, 0, 0) - - - - 6000 - 0.5 - 40000 - 150 - 0.65 - - Normal - Odyssey - 8 - - 300 - 200 - 8 - 2 - 1 - - true - - 60 - 60 - 5 - 4 - - true - true - (2, 0, 0) - East - true - Light - BulletImpact_Metal - true - RealtimeOnly - ConstructMetal - true - - false - BuildingDestroyed_Metal_Big - true - true - -
  • ShuttleEngine
  • -
    - WULA_WM_Panzer_Turret - 5.5 - 1.75 - (0, 0.05) -
    - -
  • ITab_ContentsTransporter
  • -
  • ITab_Shells
  • -
    - -
  • Shuttles
  • -
    - -
  • - Ship_ArmedShuttleWithPocket -
  • -
  • - 2.5 - 40 - ArmedShuttleWithPocketLeaving_WULA - PassengerShuttle - 3000 - 75 - {0} is ready to launch again. -
  • -
  • - 750 - true - true - Shuttle_PawnLoaded - Shuttle_PawnExit - true -
  • -
  • - 500 - true - 500 - - -
  • Chemfuel
  • - - - Chemfuel - Chemfuel - true - 1 - true - false - true - true - -
  • - CompPowerPlant - -400 - true -
  • -
  • - ShuttleIdle_Ambience -
  • -
  • - 6 - true - (0.5, 0.3, 0.9, 0.5) - BulletShieldGenerator_Reactivate - BulletShield_Ambience - 1080 - -1 - 0 -
  • -
    - -
  • - WULA_PocketSpace_Small - WULA_PocketMapExit - (13, 13) - true -
  • -
    - -
  • PlaceWorker_NotUnderRoof
  • -
  • PlaceWorker_TurretTop
  • -
    - 2601 -
    - - - - ArmedShuttleWithPocketIncoming_WULA - - ShuttleIncoming - - Graphic_Multi - Things/Building/PassengerShuttle/PassengerShuttle - CutoutComplex - (0.85, 0.9, 1.0) - (3,5) - - (3,5) - - Shuttle_Landing - 250 - 200~250 - (3.5,5.5) - - -
  • (0,30)
  • -
  • (0.5,5)
  • -
  • (0.9,-5)
  • -
  • (0.95,0)
  • -
    -
    - - -
  • (0.95,2.5)
  • -
  • (1,0)
  • -
    -
    - - -
  • (0.6,0.6)
  • -
  • (0.95,0.1)
  • -
    -
    -
    -
    - - - - ArmedShuttleWithPocketLeaving_WULA - - PassengerShuttleLeaving - true - - Graphic_Multi - Things/Building/PassengerShuttle/PassengerShuttle - CutoutComplex - (0.85, 0.9, 1.0) - (3,5) - - (3,5) - - true - Shuttle_Leaving - -10 - -40~-15 - 0.05 - Things/Skyfaller/SkyfallerShadowRectangle - (3.5,5.5) - 1 - - -
  • (0,0)
  • -
  • (0.15,10)
  • -
  • (0.5,-5)
  • -
    -
    - - -
  • (0,0)
  • -
  • (0.08,2)
  • -
    -
    - - -
  • (0,0.2)
  • -
  • (0.4,0.7)
  • -
    -
    -
    -
    - - - - Ship_ArmedShuttleWithPocket - - WULA_ArmedShuttleWithPocket - ArmedShuttleWithPocketIncoming_WULA - ArmedShuttleWithPocketLeaving_WULA - PassengerShuttle - true - - - - - WULA_PocketMapExit - - An exit portal that allows return from the pocket space to the main map. - WulaFallenEmpire.Building_PocketMapExit - (3,3) - MapMeshAndRealTime - - Wula/Building/WULA_War_Machine_Recharger - Graphic_Multi - (3,3) - - (0,0,0) - Standable - - 0 - - -
  • - 10 - (140,160,184,0) -
  • -
  • - UndercaveMapExitLightshafts -
  • -
  • - CompPowerPlant - -400 - true -
  • -
    -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_Shuttle.xml b/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_Shuttle.xml index 9af6bb37..f51c8014 100644 --- a/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_Shuttle.xml +++ b/1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_Shuttle.xml @@ -2,8 +2,8 @@ WULA_ArmedShuttle - - A chemfuel-powered shuttle designed for long-distance travel, equipped with a turret for defense. It is capable of reaching orbital locations. + + 乌拉帝国所使用的大气内专用近地穿梭机。配备集成能量发生器投射暗物质护盾。并且装载一门近防炮武装保护帝国资产。 WulaFallenEmpire.Building_ArmedShuttle true Building @@ -11,23 +11,23 @@ true PassThroughOnly 0.5 - (3,5) + (4,4) true (0.56, 0.62, 0.9) 1 Graphic_Multi - Things/Building/PassengerShuttle/PassengerShuttle + Wula/Building/WULA_ArmedShuttle CutoutComplex - (3,5) + (4,4) - (1.8, 1.0, 4.1) - (-0.1, 0, 0) + (3.5, 1.0, 3.5) + (0.1, 0, -0.1) 6000 - 0.5 + 0 40000 150 0.65 @@ -68,7 +68,7 @@
  • ShuttleEngine
  • - WULA_WM_Panzer_Turret + WULA_Shuttle_Autocannon 5.5 1.75 (0, 0.05) @@ -123,7 +123,7 @@ ShuttleIdle_Ambience
  • - 6 + 12 true (0.5, 0.3, 0.9, 0.5) BulletShieldGenerator_Reactivate @@ -140,31 +140,285 @@ 2601 - - WULA_Bullet_ArmedShuttle - + + WULA_ArmedShuttleWithPocket + + 乌拉帝国所使用的大气内专用近地穿梭机。集成折叠空间技术能安全装载比体积大得多的货物。配备集成能量发生器投射暗物质护盾。并且装载一门近防炮武装保护帝国资产。 + WulaFallenEmpire.Building_ArmedShuttleWithPocket + true + Building + 50 + true + PassThroughOnly + 0.5 + (4,4) + true + (0.56, 0.62, 0.9) + 1 - Things/Projectile/Bullet_Big + Graphic_Multi + Wula/Building/WULA_ArmedShuttle + CutoutComplex + (4,4) + + (3.5, 1.0, 3.5) + (0.1, 0, -0.1) + + + + 6000 + 0 + 40000 + 150 + 0.65 + + Normal + Odyssey + 8 + + 300 + 200 + 8 + 2 + 1 + + true + + 60 + 60 + 5 + 4 + + true + true + (2, 0, 0) + East + true + Light + BulletImpact_Metal + true + RealtimeOnly + ConstructMetal + true + + false + BuildingDestroyed_Metal_Big + true + true + +
  • ShuttleEngine
  • + + WULA_Shuttle_Autocannon + 5.5 + 1.75 + (0, 0.05) + + +
  • ITab_ContentsTransporter
  • +
  • ITab_Shells
  • +
    + +
  • Shuttles
  • +
    + +
  • + Ship_ArmedShuttle +
  • +
  • + 3 + 50 + ArmedShuttleLeaving_WULA + PassengerShuttle + 3750 + 62 + {0} is ready to launch again. +
  • +
  • + 500 + true + true + Shuttle_PawnLoaded + Shuttle_PawnExit + true +
  • +
  • + 500 + true + 500 + + +
  • Chemfuel
  • + + + Chemfuel + Chemfuel + true + 1 + true + false + true + true + +
  • + CompPowerPlant + -400 + true +
  • +
  • + ShuttleIdle_Ambience +
  • +
  • + 12 + true + (0.5, 0.3, 0.9, 0.5) + BulletShieldGenerator_Reactivate + BulletShield_Ambience + 1080 + -1 + 0 +
  • +
    + +
  • + WULA_PocketSpace_Small + WULA_PocketMapExit + (13, 13) + true +
  • +
    + +
  • PlaceWorker_NotUnderRoof
  • +
  • PlaceWorker_TurretTop
  • +
    + 2601 +
    + + + + WULA_PocketMapExit + + 用于在穿梭机内外运输人员和物品的升降平台. + WulaFallenEmpire.Building_PocketMapExit + (3,3) + MapMeshAndRealTime + + Wula/Building/WULA_War_Machine_Recharger + Graphic_Multi + (3,3) + + (0,0,0) + Standable + + 0 + + +
  • + 10 + (140,160,184,0) +
  • +
  • + UndercaveMapExitLightshafts +
  • +
  • + CompPowerPlant + -400 + true +
  • +
    +
    + + + + WULA_Shuttle_Autocannon + + 由乌拉帝国的穿梭机所装备的自动炮,能够组织起高射速的弹幕压制杀伤大规模目标。 + Ultra + 0 + + Wula/Weapon/WULA_WM_Panzer_Autocannon Graphic_Single + 2 + + 0.5 + None + + 40000 + 150 + 0.5 + 0.5 + 0.4 + 0.35 + 1.5 + + +
  • WULA_AI_Heavy_Panzer_Gunner_Weapon
  • +
    + + 500 + 150 + 8 + + +
  • + WulaFallenEmpire.Verb_ShootShotgun + true + Bullet_Shuttle_Homing_Autocannon + 2.0 + 24 + 6 + 12 + Shot_TurretSniper + GunTail_Heavy + 9 + Mote_BeamRepeater_Charge + 1.07 +
  • +
    +
    + + + Bullet_Shuttle_Homing_Autocannon + + + Wula/Projectile/WULA_Bullet_Plasma + Graphic_Single + (61,199,157,202) + (0.75,1) Bullet - 25 - 70 + 16 + 0.75 + 30 + WulaFallenEmpire.Projectile_TrackingBullet + +
  • + 0.1 + 30 + + 60 + 120 + + WULA_GunTail_Plasma +
  • +
  • + 4 +
  • +
    - + ArmedShuttleIncoming_WULA WulaFallenEmpire.ArmedShuttleIncoming Graphic_Multi - Things/Building/PassengerShuttle/PassengerShuttle + Wula/Building/WULA_ArmedShuttle CutoutComplex - (3,5) + (4,4) - (3,5) + (4,4) Shuttle_Landing 250 @@ -200,11 +454,11 @@ true Graphic_Multi - Things/Building/PassengerShuttle/PassengerShuttle + Wula/Building/WULA_ArmedShuttle CutoutComplex - (3,5) + (4,4) - (3,5) + (4,4) true Shuttle_Leaving @@ -245,4 +499,5 @@ PassengerShuttle true +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml index fc0df624..b32840b7 100644 --- a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml +++ b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon.xml @@ -1712,6 +1712,100 @@ --> + + WULA_RW_Plasma_Homing_AR + + 乌拉帝国的旧式多用途突击步枪,搭载了一套用于发射等离子体的谐振器,可以射出高精度的等离子体,这种改型可以发射制导等离子体。 + Spacer + + Wula/Weapon/WULA_RW_Plasma_AR + Graphic_Single + 1.4 + + 1 + Interact_Rifle + +
  • LongShots
  • +
  • RangedHeavy
  • +
    + + +
  • WULA_Cube_Productor_BIO
  • +
  • WULA_Cube_Productor_Energy
  • +
    + WULA_Synth_Weapon_Technology + UnfinishedWeapon +
    + + 1500 + 3.0 + 0.6 + 0.75 + 0.85 + 0.8 + 1.2 + + + 100 + 5 + 20 + + +
  • + WulaFallenEmpire.Verb_ShootShotgun + true + Bullet_WULA_RW_Plasma_Homing_AR + 2.0 + 28 + 3 + 12 + Shot_BeamRepeater + GunTail_Medium + 9 + Mote_BeamRepeater_Charge + 1.07 +
  • +
    + +
  • Wula_Weapon_Init
  • +
  • HomingWeapon
  • +
    + +
  • RewardStandardQualitySuper
  • +
    +
    + + Bullet_WULA_RW_Plasma_Homing_AR + + + Wula/Projectile/WULA_Bullet_Plasma + Graphic_Single + (61,199,157,202) + (0.75,1) + + + Bullet + 16 + 0.75 + 30 + + WulaFallenEmpire.Projectile_TrackingBullet + +
  • + 0.1 + 30 + + 60 + 120 + + WULA_GunTail_Plasma +
  • +
  • + 2 +
  • +
    +
    + WULA_WM_Panzer_Turret diff --git a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon_Homing_Examples_Bullet_Homing.xml b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon_Homing_Examples_Bullet_Homing.xml deleted file mode 100644 index dd45ba60..00000000 --- a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_Weapon_Homing_Examples_Bullet_Homing.xml +++ /dev/null @@ -1,177 +0,0 @@ - - - - WULA_RW_Plasma_Homing_AR - - 乌拉帝国的旧式多用途突击步枪,搭载了一套用于发射等离子体的谐振器,可以射出高精度的等离子体,这种改型可以发射制导等离子体。 - Spacer - - Wula/Weapon/WULA_RW_Plasma_AR - Graphic_Single - 1.4 - - 1 - Interact_Rifle - -
  • LongShots
  • -
  • RangedHeavy
  • -
    - - -
  • WULA_Cube_Productor_BIO
  • -
  • WULA_Cube_Productor_Energy
  • -
    - WULA_Synth_Weapon_Technology - UnfinishedWeapon -
    - - 1500 - 3.0 - 0.6 - 0.75 - 0.85 - 0.8 - 1.2 - - - 100 - 5 - 20 - - -
  • - WulaFallenEmpire.Verb_ShootShotgun - true - Bullet_WULA_RW_Plasma_Homing_AR - 2.0 - 28 - 3 - 12 - Shot_BeamRepeater - GunTail_Medium - 9 - Mote_BeamRepeater_Charge - 1.07 -
  • -
    - -
  • Wula_Weapon_Init
  • -
  • HomingWeapon
  • -
    - -
  • RewardStandardQualitySuper
  • -
    -
    - - Bullet_WULA_RW_Plasma_Homing_AR - - - Wula/Projectile/WULA_Bullet_Plasma - Graphic_Single - (61,199,157,202) - (0.75,1) - - - Bullet - 16 - 0.75 - 30 - - WulaFallenEmpire.Projectile_TrackingBullet - -
  • - 0.1 - 30 - - 60 - 120 - - WULA_GunTail_Plasma -
  • -
  • - 2 -
  • -
    -
    - - WULA_RW_Plasma_HomingExplosive_Old - - 搭载于SNm-6"狼蛛"机甲的高能等离子武器,会发射一连串密集且携带跟踪性能的等离子射弹,引起熔融爆炸并毁灭敌军。 - Spacer - - Wula/Weapon/WULA_WM_Alpha_Wolf_Plasma_Gun - Graphic_Single - 1.4 - - 0.8 - Interact_ChargeRifle - - - 2000 - 5.0 - 0.4 - 0.6 - 0.7 - 0.65 - 3.0 - - - 150 - 8 - 30 - 10 - - -
  • - Verb_Shoot - true - Bullet_WULA_RW_Plasma_HomingExplosive_Old - 1.25 - 48 - 6 - 3 - ChargeLance_Fire - GunTail_Medium - 7 -
  • -
    - - - -
    - - Bullet_WULA_RW_Plasma_HomingExplosive_Old - - - Wula/Projectile/WULA_Bullet_Plasma - Graphic_Single - MoteGlow - (61,199,157,202) - (1.5,2) - - WulaFallenEmpire.Projectile_ExplosiveTrackingBullet - - 30 - Damage_WULA_Plasma_Explosive - 10 - 0.7 - 2.0 - - -
  • - 2.5 - Damage_WULA_Plasma_Explosive -
  • -
  • - 0.25 - 90 - - 60 - 120 - - WULA_GunTail_Plasma - 1 -
  • -
    -
    -
    \ No newline at end of file diff --git a/Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md b/Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md deleted file mode 100644 index bd41a7f0..00000000 --- a/Source/ProjectDocumentation/ArmedPocketShuttle_DesignDocument.md +++ /dev/null @@ -1,109 +0,0 @@ -# 武装口袋穿梭机 (Armed Pocket Shuttle) - 设计文档 - -## 1. 项目概述 - -**目标**:重新设计并实现一个《边缘世界》(RimWorld) 的Mod,引入一种具备武装能力和内部“口袋空间”的特殊穿梭机。该穿梭机将解决现有实现中存在的顽固bug,并提供更稳定、更灵活的游戏体验。 - -**核心问题**:现有 `Building_ArmedShuttleWithPocket.cs` 的实现尝试过度模仿原版 `MapPortal` 的内部机制,导致代码复杂且难以调试和维护,最终陷入无法修复的bug。 - -**解决方案理念**: -* **放弃现有问题代码**:彻底废弃当前 `Building_ArmedShuttleWithPocket.cs` 中导致bug的复杂逻辑。 -* **回归原版基础**:以 `Building_PassengerShuttle` 为基类,利用其成熟的运输和组件系统。 -* **组合与委托**:通过组合而非直接继承或深度模仿的方式,将 `MapPortal` 的概念融入到新穿梭机中,实现口袋空间功能。 -* **职责分离**:明确区分穿梭机本体(武装、飞行、外部运输)和口袋空间(内部地图、内部传送)的职责。 - -## 2. 核心设计思路 - -### 2.1 穿梭机本体 (`Building_ArmedShuttleWithPocket` - 新版) - -* **继承**: `Building_ArmedShuttleWithPocket` 将继承 `Building_ArmedShuttle`,从而自然继承了武装能力和 `Building_PassengerShuttle` 的所有基础功能,包括 `CompTransporter` 和 `CompShuttle` 组件。 -* **唯一容器**: 穿梭机自身的 `CompTransporter` 将是唯一且权威的物品和人员容器。所有装载操作都将首先将物品和人员放入这个 `CompTransporter` 的 `innerContainer`。 -* **武装能力**:通过继承 `Building_ArmedShuttle`,穿梭机将保留其炮塔和攻击逻辑。 - -### 2.2 口袋空间实现 - -口袋空间将是一个独立生成的 `Map` 实例,通过 `PocketMapUtility` 进行管理。 - -* **内部地图 (`pocketMap`)**: `Building_ArmedShuttleWithPocket` 将持有一个 `Map` 类型的私有字段 `pocketMap`,代表内部空间。 -* **地图生成**: - * 口袋地图的生成将通过 `CreatePocketMap()` 方法触发,该方法会调用 `PocketMapUtility.GeneratePocketMap()`。 - * 地图的尺寸 (`pocketMapSize`)、生成器 (`mapGenerator`) 和出口定义 (`exitDef`) 将通过 `PocketMapProperties` (`DefModExtension`) 从XML配置中获取。 - * 生成后,会在口袋地图的特定位置放置一个 `Building_PocketMapExit` 实例,作为进出内部空间的唯一通道。 -* **人员/物品进出**: - * **从主地图进入口袋空间**: - * 人员:通过 `EnterPocketSpace(IEnumerable pawns)` 方法,将选定的小人从主地图传送到口袋地图的指定位置(例如出口附近)。 - * 物品:物品将首先通过穿梭机的 `CompTransporter` 装载。 - * **从口袋空间返回主地图**: 通过 `Building_PocketMapExit` 来实现,它将负责将口袋空间内的物品和人员传送到主地图的穿梭机位置。 -* **内部物品管理**: 口袋地图内的物品将直接作为地图上的 `Thing` 存在,而不是由穿梭机本体的 `CompTransporter` 直接管理。当穿梭机被销毁时,口袋地图内的所有物品和人员将被安全地转移回主地图的穿梭机位置。 - -### 2.3 装载机制 (`GetGizmos` 重构) - -`Building_ArmedShuttleWithPocket` 的 `GetGizmos()` 方法将被重写,以提供清晰且功能分离的装载选项: - -1. **“装载至货仓” (WULA.LoadIntoCargo)**: - * **功能**: 模拟原版穿梭机的装载行为。玩家选择人员和物品后,殖民者会将它们搬运到穿梭机,并存放到穿梭机自身的 `this.TransporterComp.innerContainer` 中。 - * **实现**: 调用 `this.TransporterComp` 提供的标准装载对话框和逻辑。 - -2. **“装载并传送入内” (WULA.LoadAndTeleport)**: - * **功能**: 玩家选择人员和物品,殖民者将其搬运到穿梭机并存放到 `this.TransporterComp.innerContainer`。**一旦装载完成**(即 `this.TransporterComp.leftToLoad` 为空),系统将自动触发一个内部传送过程,将 `this.TransporterComp.innerContainer` 中的所有物品和人员取出,并直接放置到口袋地图的指定位置。 - * **实现**: - * 通过一个布尔标志 (`doTeleportAfterLoading`) 来标记当前装载操作是否需要进行内部传送。 - * 在 `Tick()` 方法中监控 `this.TransporterComp.leftToLoad` 的状态。当其变为空且 `doTeleportAfterLoading` 为 `true` 时,调用 `TeleportContentsToPocketDimension()` 方法。 - * `TeleportContentsToPocketDimension()` 方法将遍历 `this.TransporterComp.innerContainer` 中的所有物品和人员,使用 `Thing.DeSpawn()` 和 `GenPlace.TryPlaceThing()` 将它们移动到 `pocketMap` 的指定位置。 - * **可见性**: 只有当口袋空间 (`pocketMap`) 已经生成 (`PocketMapExists == true`) 时,此按钮才会在UI中显示。 - -## 3. 关键组件/类 (`WulaFallenEmpire` 命名空间) - -* **`Building_ArmedShuttleWithPocket.cs` (主类)**: - * 继承 `Building_ArmedShuttle`。 - * 私有字段 `pocketMap` (类型 `Map`)。 - * 布尔标志 `pocketMapGenerated`。 - * `MapGeneratorDef mapGenerator` 和 `ThingDef exitDef` 用于XML配置。 - * `public Building_PocketMapExit exit` 引用口袋出口。 - * 布尔标志 `doTeleportAfterLoading` 和 `wasLoading` 用于控制传送逻辑。 - * 属性 `PocketMap`, `PocketMapExists`, `PocketMapGenerated`。 - * 重写 `ExposeData()` 进行持久化。 - * 重写 `DeSpawn()` 清理口袋地图。 - * 重写 `Tick()` 监控装载状态并触发传送。 - * 重写 `GetInspectString()` 提供状态信息。 - * 重写 `GetGizmos()` 提供自定义Gizmo。 - * 方法 `CreateLoadGizmo(bool teleport)` 生成装载按钮。 - * 方法 `TeleportContentsToPocketDimension()` 执行内部传送。 - * 方法 `EnterPocketSpace(IEnumerable pawns)` 将人员传送到口袋空间。 - * 方法 `SwitchToPocketSpace()` 切换视角。 - * 方法 `CreatePocketMap()` 生成口袋地图。 - * 方法 `GeneratePocketMapInt()` (受保护虚方法,可重写)。 - * 方法 `GetExtraGenSteps()` (受保护虚方法,可重写)。 - * 方法 `PlaceExitInPocketMap()` 在口袋地图中放置出口。 - * 方法 `TransferPawnToPocketSpace(Pawn pawn)` 将单个小人传送到口袋空间。 - * 方法 `TransferAllFromPocketToMainMap()` 在销毁时将口袋内容传回主地图。 - * 实现 `IThingHolder` 接口:`GetChildHolders()` (将 `this.TransporterComp` 添加为子容器) 和 `GetDirectlyHeldThings()` (返回一个空的 `ThingOwner` 实例)。 - * `UpdateExitPointTarget()` 更新出口目标位置。 - * 重写 `SpawnSetup()` 初始化组件和属性。 - -* **`Building_PocketMapExit.cs` (现有)**: - * 作为口袋空间的出口,负责将内部人员和物品传回主地图。 - -* **`PocketMapProperties.cs` (现有)**: - * `DefModExtension` 类,用于在XML中配置口袋地图的尺寸 (`pocketMapSize`)、地图生成器 (`mapGenerator`) 和出口建筑定义 (`exitDef`)。 - -## 4. XML 定义 (`1.6/1.6/Defs/ThingDefs_Buildings/Building_WULA_ArmedShuttleWithPocket.xml`) - -* `ThingDef` 定义 `WULA_ArmedShuttleWithPocket`。 -* `modExtensions` 中包含 `PocketMapProperties`: - ```xml - -
  • - WULA_PocketSpace_Small - WULA_PocketMapExit - (13, 13) -
  • -
    - ``` - -## 5. 预期结果 - -* 一个功能稳定、没有运行时崩溃的武装口袋穿梭机。 -* 清晰的UI和交互流程,允许玩家选择不同的装载模式。 -* 口袋空间能够正确生成、管理和销毁,内部物品和人员能够安全进出。 -* 代码结构更清晰,易于理解和未来的维护。 \ No newline at end of file diff --git a/Source/WulaFallenEmpire/3516260226.code-workspace b/Source/WulaFallenEmpire/3516260226.code-workspace index 2d26aeb1..28a1867a 100644 --- a/Source/WulaFallenEmpire/3516260226.code-workspace +++ b/Source/WulaFallenEmpire/3516260226.code-workspace @@ -3,9 +3,6 @@ { "name": "3516260226", "path": "../.." - }, - { - "path": "../../../../../../workshop/content/294100/3551234893/1.6/Assemblies/ShelterShuttle" } ], "settings": {}