1
@@ -196,14 +196,6 @@
|
||||
<li>(7,11,7,11)</li>
|
||||
</rects>
|
||||
</FloodLight>
|
||||
<WulaWall>
|
||||
<rects>
|
||||
<li>(5,5,9,5)</li>
|
||||
<li>(5,6,5,9)</li>
|
||||
<li>(9,6,9,9)</li>
|
||||
<li>(6,9,8,9)</li>
|
||||
</rects>
|
||||
</WulaWall>
|
||||
<WulaShelter>
|
||||
<rects>
|
||||
<li>(1,1,5,1)</li>
|
||||
@@ -224,6 +216,22 @@
|
||||
<li>(10,13,12,13)</li>
|
||||
</rects>
|
||||
</WulaShelter>
|
||||
<WulaWall>
|
||||
<rects>
|
||||
<li>(5,5,9,5)</li>
|
||||
<li>(5,6,5,9)</li>
|
||||
<li>(9,6,9,9)</li>
|
||||
<li>(6,9,8,9)</li>
|
||||
</rects>
|
||||
</WulaWall>
|
||||
<Wula_Sonar_Mine>
|
||||
<rects>
|
||||
<li>(0,0,0,0)</li>
|
||||
<li>(14,0,14,0)</li>
|
||||
<li>(0,14,0,14)</li>
|
||||
<li>(14,14,14,14)</li>
|
||||
</rects>
|
||||
</Wula_Sonar_Mine>
|
||||
</things>
|
||||
</PrefabDef>
|
||||
<PrefabDef>
|
||||
@@ -333,6 +341,34 @@
|
||||
<li>(14,19,14,19)</li>
|
||||
</rects>
|
||||
</FloodLight>
|
||||
<WulaShelter>
|
||||
<rects>
|
||||
<li>(7,1,11,1)</li>
|
||||
<li>(13,1,17,1)</li>
|
||||
<li>(7,2,7,2)</li>
|
||||
<li>(11,2,11,2)</li>
|
||||
<li>(13,2,13,2)</li>
|
||||
<li>(17,2,17,2)</li>
|
||||
<li>(1,7,2,7)</li>
|
||||
<li>(22,7,23,7)</li>
|
||||
<li>(1,8,1,11)</li>
|
||||
<li>(23,8,23,11)</li>
|
||||
<li>(2,11,2,11)</li>
|
||||
<li>(22,11,22,11)</li>
|
||||
<li>(1,13,2,13)</li>
|
||||
<li>(22,13,23,13)</li>
|
||||
<li>(1,14,1,17)</li>
|
||||
<li>(23,14,23,17)</li>
|
||||
<li>(2,17,2,17)</li>
|
||||
<li>(22,17,22,17)</li>
|
||||
<li>(7,22,7,23)</li>
|
||||
<li>(11,22,11,23)</li>
|
||||
<li>(13,22,13,23)</li>
|
||||
<li>(17,22,17,23)</li>
|
||||
<li>(8,23,10,23)</li>
|
||||
<li>(14,23,16,23)</li>
|
||||
</rects>
|
||||
</WulaShelter>
|
||||
<WulaWall>
|
||||
<rects>
|
||||
<li>(3,3,7,3)</li>
|
||||
@@ -376,34 +412,22 @@
|
||||
<Wula_DarkEnergy_Generators>
|
||||
<position>(12, 0, 12)</position>
|
||||
</Wula_DarkEnergy_Generators>
|
||||
<WulaShelter>
|
||||
<Wula_Sonar_Mine>
|
||||
<rects>
|
||||
<li>(7,1,11,1)</li>
|
||||
<li>(13,1,17,1)</li>
|
||||
<li>(7,2,7,2)</li>
|
||||
<li>(11,2,11,2)</li>
|
||||
<li>(13,2,13,2)</li>
|
||||
<li>(17,2,17,2)</li>
|
||||
<li>(1,7,2,7)</li>
|
||||
<li>(22,7,23,7)</li>
|
||||
<li>(1,8,1,11)</li>
|
||||
<li>(23,8,23,11)</li>
|
||||
<li>(2,11,2,11)</li>
|
||||
<li>(22,11,22,11)</li>
|
||||
<li>(1,13,2,13)</li>
|
||||
<li>(22,13,23,13)</li>
|
||||
<li>(1,14,1,17)</li>
|
||||
<li>(23,14,23,17)</li>
|
||||
<li>(2,17,2,17)</li>
|
||||
<li>(22,17,22,17)</li>
|
||||
<li>(7,22,7,23)</li>
|
||||
<li>(11,22,11,23)</li>
|
||||
<li>(13,22,13,23)</li>
|
||||
<li>(17,22,17,23)</li>
|
||||
<li>(8,23,10,23)</li>
|
||||
<li>(14,23,16,23)</li>
|
||||
<li>(2,2,2,2)</li>
|
||||
<li>(22,2,22,2)</li>
|
||||
<li>(11,3,11,3)</li>
|
||||
<li>(13,3,13,3)</li>
|
||||
<li>(3,11,3,11)</li>
|
||||
<li>(21,11,21,11)</li>
|
||||
<li>(3,13,3,13)</li>
|
||||
<li>(21,13,21,13)</li>
|
||||
<li>(11,21,11,21)</li>
|
||||
<li>(13,21,13,21)</li>
|
||||
<li>(2,22,2,22)</li>
|
||||
<li>(22,22,22,22)</li>
|
||||
</rects>
|
||||
</WulaShelter>
|
||||
</Wula_Sonar_Mine>
|
||||
</things>
|
||||
<terrain>
|
||||
<WulaFloor>
|
||||
@@ -605,6 +629,66 @@
|
||||
<li>(35, 0, 40)</li>
|
||||
</positions>
|
||||
</Wula_Base_ATGun_Turret>
|
||||
<WulaShelter>
|
||||
<rects>
|
||||
<li>(0,0,3,0)</li>
|
||||
<li>(40,0,43,0)</li>
|
||||
<li>(0,1,0,3)</li>
|
||||
<li>(6,1,14,1)</li>
|
||||
<li>(29,1,37,1)</li>
|
||||
<li>(43,1,43,3)</li>
|
||||
<li>(6,2,6,3)</li>
|
||||
<li>(14,2,14,3)</li>
|
||||
<li>(29,2,29,3)</li>
|
||||
<li>(37,2,37,3)</li>
|
||||
<li>(17,3,20,3)</li>
|
||||
<li>(23,3,26,3)</li>
|
||||
<li>(17,4,17,6)</li>
|
||||
<li>(26,4,26,6)</li>
|
||||
<li>(1,6,3,6)</li>
|
||||
<li>(15,6,16,6)</li>
|
||||
<li>(27,6,28,6)</li>
|
||||
<li>(40,6,42,6)</li>
|
||||
<li>(1,7,1,14)</li>
|
||||
<li>(42,7,42,14)</li>
|
||||
<li>(2,14,3,14)</li>
|
||||
<li>(40,14,41,14)</li>
|
||||
<li>(6,15,6,18)</li>
|
||||
<li>(37,15,37,17)</li>
|
||||
<li>(38,17,40,17)</li>
|
||||
<li>(3,18,5,18)</li>
|
||||
<li>(40,18,40,20)</li>
|
||||
<li>(3,19,3,21)</li>
|
||||
<li>(3,23,3,26)</li>
|
||||
<li>(40,23,40,26)</li>
|
||||
<li>(4,26,6,26)</li>
|
||||
<li>(37,26,39,26)</li>
|
||||
<li>(6,27,6,28)</li>
|
||||
<li>(37,27,37,28)</li>
|
||||
<li>(1,29,3,29)</li>
|
||||
<li>(40,29,42,29)</li>
|
||||
<li>(1,30,1,37)</li>
|
||||
<li>(42,30,42,37)</li>
|
||||
<li>(2,37,3,37)</li>
|
||||
<li>(15,37,17,37)</li>
|
||||
<li>(26,37,28,37)</li>
|
||||
<li>(40,37,41,37)</li>
|
||||
<li>(17,38,17,40)</li>
|
||||
<li>(26,38,26,40)</li>
|
||||
<li>(0,40,0,43)</li>
|
||||
<li>(6,40,6,42)</li>
|
||||
<li>(14,40,14,42)</li>
|
||||
<li>(18,40,20,40)</li>
|
||||
<li>(23,40,25,40)</li>
|
||||
<li>(29,40,29,42)</li>
|
||||
<li>(37,40,37,42)</li>
|
||||
<li>(43,40,43,43)</li>
|
||||
<li>(7,42,13,42)</li>
|
||||
<li>(30,42,36,42)</li>
|
||||
<li>(1,43,3,43)</li>
|
||||
<li>(40,43,42,43)</li>
|
||||
</rects>
|
||||
</WulaShelter>
|
||||
<WulaWall>
|
||||
<rects>
|
||||
<li>(6,6,14,6)</li>
|
||||
@@ -693,66 +777,26 @@
|
||||
<li>(26, 0, 26)</li>
|
||||
</positions>
|
||||
</Wula_DarkEnergy_Generators>
|
||||
<WulaShelter>
|
||||
<Wula_Sonar_Mine>
|
||||
<rects>
|
||||
<li>(0,0,3,0)</li>
|
||||
<li>(40,0,43,0)</li>
|
||||
<li>(0,1,0,3)</li>
|
||||
<li>(6,1,14,1)</li>
|
||||
<li>(29,1,37,1)</li>
|
||||
<li>(43,1,43,3)</li>
|
||||
<li>(6,2,6,3)</li>
|
||||
<li>(14,2,14,3)</li>
|
||||
<li>(29,2,29,3)</li>
|
||||
<li>(37,2,37,3)</li>
|
||||
<li>(17,3,20,3)</li>
|
||||
<li>(23,3,26,3)</li>
|
||||
<li>(17,4,17,6)</li>
|
||||
<li>(26,4,26,6)</li>
|
||||
<li>(1,6,3,6)</li>
|
||||
<li>(15,6,16,6)</li>
|
||||
<li>(27,6,28,6)</li>
|
||||
<li>(40,6,42,6)</li>
|
||||
<li>(1,7,1,14)</li>
|
||||
<li>(42,7,42,14)</li>
|
||||
<li>(2,14,3,14)</li>
|
||||
<li>(40,14,41,14)</li>
|
||||
<li>(6,15,6,18)</li>
|
||||
<li>(37,15,37,17)</li>
|
||||
<li>(38,17,40,17)</li>
|
||||
<li>(3,18,5,18)</li>
|
||||
<li>(40,18,40,20)</li>
|
||||
<li>(3,19,3,21)</li>
|
||||
<li>(3,23,3,26)</li>
|
||||
<li>(40,23,40,26)</li>
|
||||
<li>(4,26,6,26)</li>
|
||||
<li>(37,26,39,26)</li>
|
||||
<li>(6,27,6,28)</li>
|
||||
<li>(37,27,37,28)</li>
|
||||
<li>(1,29,3,29)</li>
|
||||
<li>(40,29,42,29)</li>
|
||||
<li>(1,30,1,37)</li>
|
||||
<li>(42,30,42,37)</li>
|
||||
<li>(2,37,3,37)</li>
|
||||
<li>(15,37,17,37)</li>
|
||||
<li>(26,37,28,37)</li>
|
||||
<li>(40,37,41,37)</li>
|
||||
<li>(17,38,17,40)</li>
|
||||
<li>(26,38,26,40)</li>
|
||||
<li>(0,40,0,43)</li>
|
||||
<li>(6,40,6,42)</li>
|
||||
<li>(14,40,14,42)</li>
|
||||
<li>(18,40,20,40)</li>
|
||||
<li>(23,40,25,40)</li>
|
||||
<li>(29,40,29,42)</li>
|
||||
<li>(37,40,37,42)</li>
|
||||
<li>(43,40,43,43)</li>
|
||||
<li>(7,42,13,42)</li>
|
||||
<li>(30,42,36,42)</li>
|
||||
<li>(1,43,3,43)</li>
|
||||
<li>(40,43,42,43)</li>
|
||||
<li>(10,2,10,2)</li>
|
||||
<li>(33,2,33,2)</li>
|
||||
<li>(16,5,16,5)</li>
|
||||
<li>(27,5,27,5)</li>
|
||||
<li>(2,10,2,10)</li>
|
||||
<li>(41,10,41,10)</li>
|
||||
<li>(38,16,38,16)</li>
|
||||
<li>(5,17,5,17)</li>
|
||||
<li>(5,27,5,27)</li>
|
||||
<li>(38,27,38,27)</li>
|
||||
<li>(2,33,2,33)</li>
|
||||
<li>(41,33,41,33)</li>
|
||||
<li>(16,38,16,38)</li>
|
||||
<li>(27,38,27,38)</li>
|
||||
<li>(10,41,10,41)</li>
|
||||
<li>(33,41,33,41)</li>
|
||||
</rects>
|
||||
</WulaShelter>
|
||||
</Wula_Sonar_Mine>
|
||||
</things>
|
||||
<terrain>
|
||||
<WulaFloor>
|
||||
@@ -1235,75 +1279,102 @@
|
||||
</PrefabDef>
|
||||
<PrefabDef>
|
||||
<defName>WULA_Progressive_Ship_Mini_Prefeb</defName> <!-- rename -->
|
||||
<size>(13,11)</size>
|
||||
<size>(13,13)</size>
|
||||
<things>
|
||||
<WULA_MechAssembler>
|
||||
<positions>
|
||||
<li>(7, 0, 1)</li>
|
||||
<li>(7, 0, 9)</li>
|
||||
</positions>
|
||||
<position>(8, 0, 6)</position>
|
||||
</WULA_MechAssembler>
|
||||
<WulaDoor>
|
||||
<position>(11, 0, 5)</position>
|
||||
<relativeRotation>Clockwise</relativeRotation>
|
||||
</WulaDoor>
|
||||
<WULA_Wall_Flag_Building>
|
||||
<rects>
|
||||
<li>(12,4,12,4)</li>
|
||||
<li>(12,6,12,6)</li>
|
||||
<li>(8,3,8,3)</li>
|
||||
<li>(8,9,8,9)</li>
|
||||
</rects>
|
||||
<relativeRotation>Counterclockwise</relativeRotation>
|
||||
</WULA_Wall_Flag_Building>
|
||||
</WulaDoor>
|
||||
<WULA_Cat_Bunker>
|
||||
<positions>
|
||||
<li>(10, 0, 1)</li>
|
||||
<li>(1, 0, 2)</li>
|
||||
<li>(1, 0, 8)</li>
|
||||
<li>(10, 0, 9)</li>
|
||||
<li>(11, 0, 2)</li>
|
||||
<li>(1, 0, 3)</li>
|
||||
<li>(1, 0, 9)</li>
|
||||
<li>(11, 0, 10)</li>
|
||||
</positions>
|
||||
</WULA_Cat_Bunker>
|
||||
<SmallThruster>
|
||||
<position>(1, 0, 5)</position>
|
||||
<positions>
|
||||
<li>(9, 0, 0)</li>
|
||||
<li>(1, 0, 1)</li>
|
||||
<li>(2, 0, 6)</li>
|
||||
<li>(1, 0, 11)</li>
|
||||
<li>(9, 0, 12)</li>
|
||||
</positions>
|
||||
<relativeRotation>Clockwise</relativeRotation>
|
||||
</SmallThruster>
|
||||
<WulaWall>
|
||||
<rects>
|
||||
<li>(9,3,11,3)</li>
|
||||
<li>(1,4,9,4)</li>
|
||||
<li>(11,4,11,4)</li>
|
||||
<li>(1,6,9,6)</li>
|
||||
<li>(11,6,11,7)</li>
|
||||
<li>(9,7,10,7)</li>
|
||||
<li>(2,0,5,0)</li>
|
||||
<li>(5,1,5,2)</li>
|
||||
<li>(9,1,9,4)</li>
|
||||
<li>(4,2,4,3)</li>
|
||||
<li>(3,3,3,5)</li>
|
||||
<li>(7,3,7,4)</li>
|
||||
<li>(6,4,6,8)</li>
|
||||
<li>(10,4,12,4)</li>
|
||||
<li>(1,5,2,5)</li>
|
||||
<li>(4,5,5,5)</li>
|
||||
<li>(10,5,11,5)</li>
|
||||
<li>(10,6,10,8)</li>
|
||||
<li>(1,7,5,7)</li>
|
||||
<li>(11,7,11,8)</li>
|
||||
<li>(3,8,3,9)</li>
|
||||
<li>(7,8,7,9)</li>
|
||||
<li>(9,8,9,11)</li>
|
||||
<li>(12,8,12,8)</li>
|
||||
<li>(4,9,4,10)</li>
|
||||
<li>(5,10,5,12)</li>
|
||||
<li>(2,12,4,12)</li>
|
||||
</rects>
|
||||
</WulaWall>
|
||||
</things>
|
||||
<terrain>
|
||||
<Substructure>
|
||||
<rects>
|
||||
<li>(6,0,11,2)</li>
|
||||
<li>(0,1,2,3)</li>
|
||||
<li>(5,1,5,2)</li>
|
||||
<li>(12,1,12,2)</li>
|
||||
<li>(9,3,11,10)</li>
|
||||
<li>(1,4,8,6)</li>
|
||||
<li>(0,7,2,9)</li>
|
||||
<li>(5,8,8,9)</li>
|
||||
<li>(12,8,12,9)</li>
|
||||
<li>(6,10,8,10)</li>
|
||||
<li>(2,0,5,2)</li>
|
||||
<li>(9,0,10,12)</li>
|
||||
<li>(1,1,1,5)</li>
|
||||
<li>(11,1,12,4)</li>
|
||||
<li>(0,2,0,4)</li>
|
||||
<li>(2,3,4,3)</li>
|
||||
<li>(7,3,8,9)</li>
|
||||
<li>(2,4,3,12)</li>
|
||||
<li>(6,4,6,8)</li>
|
||||
<li>(4,5,5,7)</li>
|
||||
<li>(11,5,11,5)</li>
|
||||
<li>(1,7,1,11)</li>
|
||||
<li>(11,7,11,11)</li>
|
||||
<li>(0,8,0,10)</li>
|
||||
<li>(12,8,12,11)</li>
|
||||
<li>(4,9,4,12)</li>
|
||||
<li>(5,10,5,12)</li>
|
||||
</rects>
|
||||
</Substructure>
|
||||
<WulaFloor>
|
||||
<rects>
|
||||
<li>(6,0,11,2)</li>
|
||||
<li>(0,1,2,3)</li>
|
||||
<li>(5,1,5,2)</li>
|
||||
<li>(12,1,12,2)</li>
|
||||
<li>(9,3,11,10)</li>
|
||||
<li>(1,4,8,6)</li>
|
||||
<li>(0,7,2,9)</li>
|
||||
<li>(5,8,8,9)</li>
|
||||
<li>(12,8,12,9)</li>
|
||||
<li>(6,10,8,10)</li>
|
||||
<li>(2,0,5,2)</li>
|
||||
<li>(9,0,10,12)</li>
|
||||
<li>(1,1,1,5)</li>
|
||||
<li>(11,1,12,4)</li>
|
||||
<li>(0,2,0,4)</li>
|
||||
<li>(2,3,4,3)</li>
|
||||
<li>(7,3,8,9)</li>
|
||||
<li>(2,4,3,12)</li>
|
||||
<li>(6,4,6,8)</li>
|
||||
<li>(4,5,5,7)</li>
|
||||
<li>(11,5,11,5)</li>
|
||||
<li>(1,7,1,11)</li>
|
||||
<li>(11,7,11,11)</li>
|
||||
<li>(0,8,0,10)</li>
|
||||
<li>(12,8,12,11)</li>
|
||||
<li>(4,9,4,12)</li>
|
||||
<li>(5,10,5,12)</li>
|
||||
</rects>
|
||||
</WulaFloor>
|
||||
</terrain>
|
||||
|
||||
@@ -790,7 +790,7 @@
|
||||
<graphicData>
|
||||
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone_Plus</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<drawSize>(13,11)</drawSize>
|
||||
<drawSize>(13,13)</drawSize>
|
||||
<damageData>
|
||||
<enabled>false</enabled>
|
||||
</damageData>
|
||||
@@ -819,7 +819,7 @@
|
||||
<Mass>1</Mass>
|
||||
<Flammability>0</Flammability>
|
||||
</statBases>
|
||||
<size>(13,11)</size>
|
||||
<size>(13,13)</size>
|
||||
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
|
||||
<resourcesFractionWhenDeconstructed>1</resourcesFractionWhenDeconstructed>
|
||||
<stuffCategories Inherit="False" />
|
||||
@@ -852,18 +852,18 @@
|
||||
<defName>WULA_Progressive_Ship_Mini_Prefeb_Incoming</defName>
|
||||
<label>乌拉帝国微型突击护航舰(下落中)</label>
|
||||
<thingClass>WulaFallenEmpire.Skyfaller_PrefabSpawner</thingClass>
|
||||
<size>(13,11)</size>
|
||||
<size>(13,13)</size>
|
||||
<graphicData>
|
||||
<texPath>Wula/Building/WULA_Progressive_Ship_Mini_Prefeb_Incoming</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>CutoutFlying</shaderType>
|
||||
<drawSize>(14.75,11)</drawSize>
|
||||
<drawSize>(14.85,13.35)</drawSize>
|
||||
<drawOffset>(-1,0,0)</drawOffset>
|
||||
</graphicData>
|
||||
<skyfaller>
|
||||
<movementType>Decelerate</movementType>
|
||||
<shadow>Things/Skyfaller/SkyfallerShadowDropPod</shadow>
|
||||
<shadowSize>(13,11)</shadowSize>
|
||||
<shadowSize>(13,13)</shadowSize>
|
||||
<anticipationSound>DropPod_Fall</anticipationSound>
|
||||
<anticipationSoundTicks>100</anticipationSoundTicks>
|
||||
<impactSound>Explosion_Vaporize</impactSound>
|
||||
|
||||
@@ -572,7 +572,7 @@
|
||||
<drawSize>(2,2.5)</drawSize>
|
||||
</graphicData>
|
||||
<projectile>
|
||||
<damageDef>Flame</damageDef>
|
||||
<damageDef>Bomb</damageDef>
|
||||
<damageAmountBase>35</damageAmountBase>
|
||||
<speed>60</speed>
|
||||
<explosionRadius>3.9</explosionRadius>
|
||||
|
||||
|
Before Width: | Height: | Size: 637 KiB After Width: | Height: | Size: 834 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 198 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
@@ -91,19 +91,44 @@ namespace WulaFallenEmpire
|
||||
public override void PostExposeData()
|
||||
{
|
||||
base.PostExposeData();
|
||||
Scribe_Collections.Look(ref turrets, "turrets", LookMode.Deep);
|
||||
|
||||
if (Scribe.mode == LoadSaveMode.PostLoadInit && turrets == null)
|
||||
// 在保存和加载时重新建立 parent 引用
|
||||
if (Scribe.mode == LoadSaveMode.Saving)
|
||||
{
|
||||
Scribe_Collections.Look(ref turrets, "turrets", LookMode.Deep);
|
||||
}
|
||||
else if (Scribe.mode == LoadSaveMode.LoadingVars)
|
||||
{
|
||||
Scribe_Collections.Look(ref turrets, "turrets", LookMode.Deep);
|
||||
}
|
||||
|
||||
if (Scribe.mode == LoadSaveMode.PostLoadInit)
|
||||
{
|
||||
if (turrets == null)
|
||||
{
|
||||
turrets = new List<TurretInstance>();
|
||||
}
|
||||
else
|
||||
{
|
||||
// 重新建立 parent 引用
|
||||
for (int i = 0; i < turrets.Count; i++)
|
||||
{
|
||||
if (turrets[i] != null)
|
||||
{
|
||||
turrets[i].SetParent(this);
|
||||
turrets[i].SetIndex(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
UpdateTurrets();
|
||||
}
|
||||
}
|
||||
|
||||
// 单个炮塔实例类,实现 IAttackTargetSearcher 接口
|
||||
public class TurretInstance : IExposable, IAttackTargetSearcher
|
||||
{
|
||||
private CompStorageTurret parent;
|
||||
private int index;
|
||||
private CompStorageTurret _parent;
|
||||
private int _index;
|
||||
|
||||
// 炮塔状态
|
||||
public Thing gun;
|
||||
@@ -113,8 +138,12 @@ namespace WulaFallenEmpire
|
||||
public float curRotation;
|
||||
public Material turretMat;
|
||||
|
||||
// 安全访问器
|
||||
public CompStorageTurret Parent => _parent;
|
||||
public int Index => _index;
|
||||
|
||||
// IAttackTargetSearcher 接口实现
|
||||
public Thing Thing => parent.parent;
|
||||
public Thing Thing => _parent?.parent;
|
||||
public Verb CurrentEffectiveVerb => AttackVerb;
|
||||
public LocalTargetInfo LastAttackedTarget => LocalTargetInfo.Invalid;
|
||||
public int LastAttackTargetTick => -1;
|
||||
@@ -126,7 +155,8 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
get
|
||||
{
|
||||
var compEq = gun?.TryGetComp<CompEquippable>();
|
||||
if (gun == null) return null;
|
||||
var compEq = gun.TryGetComp<CompEquippable>();
|
||||
return compEq?.PrimaryVerb;
|
||||
}
|
||||
}
|
||||
@@ -135,7 +165,10 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!parent.parent.Spawned || parent.parent.Destroyed)
|
||||
if (_parent == null || _parent.parent == null)
|
||||
return false;
|
||||
|
||||
if (!_parent.parent.Spawned || _parent.parent.Destroyed)
|
||||
return false;
|
||||
|
||||
if (AttackVerb == null)
|
||||
@@ -161,32 +194,48 @@ namespace WulaFallenEmpire
|
||||
}
|
||||
}
|
||||
|
||||
// 无参构造函数用于序列化
|
||||
public TurretInstance() { }
|
||||
|
||||
public TurretInstance(CompStorageTurret parent, int index)
|
||||
{
|
||||
this.parent = parent;
|
||||
this.index = index;
|
||||
SetParent(parent);
|
||||
SetIndex(index);
|
||||
MakeGun();
|
||||
}
|
||||
|
||||
public void SetParent(CompStorageTurret parent)
|
||||
{
|
||||
_parent = parent;
|
||||
}
|
||||
|
||||
public void SetIndex(int index)
|
||||
{
|
||||
_index = index;
|
||||
}
|
||||
|
||||
private void MakeGun()
|
||||
{
|
||||
gun = ThingMaker.MakeThing(parent.Props.turretDef, null);
|
||||
if (_parent == null || _parent.Props == null || _parent.Props.turretDef == null)
|
||||
return;
|
||||
|
||||
gun = ThingMaker.MakeThing(_parent.Props.turretDef, null);
|
||||
UpdateGunVerbs();
|
||||
}
|
||||
|
||||
private void UpdateGunVerbs()
|
||||
{
|
||||
if (gun == null) return;
|
||||
|
||||
var compEq = gun.TryGetComp<CompEquippable>();
|
||||
if (compEq == null) return;
|
||||
|
||||
foreach (var verb in compEq.AllVerbs)
|
||||
{
|
||||
verb.caster = parent.parent;
|
||||
verb.caster = _parent?.parent;
|
||||
verb.castCompleteCallback = () =>
|
||||
{
|
||||
burstCooldownTicksLeft = AttackVerb.verbProps.defaultCooldownTime.SecondsToTicks();
|
||||
burstCooldownTicksLeft = AttackVerb?.verbProps?.defaultCooldownTime.SecondsToTicks() ?? 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -200,7 +249,7 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
Vector3 targetPos = currentTarget.Cell.ToVector3Shifted();
|
||||
Vector3 turretPos = GetTurretDrawPos();
|
||||
curRotation = (targetPos - turretPos).AngleFlat() + parent.Props.angleOffset;
|
||||
curRotation = (targetPos - turretPos).AngleFlat() + _parent.Props.angleOffset;
|
||||
}
|
||||
|
||||
AttackVerb.VerbTick();
|
||||
@@ -222,7 +271,7 @@ namespace WulaFallenEmpire
|
||||
burstCooldownTicksLeft--;
|
||||
}
|
||||
|
||||
if (burstCooldownTicksLeft <= 0 && parent.parent.IsHashIntervalTick(10))
|
||||
if (burstCooldownTicksLeft <= 0 && _parent.parent.IsHashIntervalTick(10))
|
||||
{
|
||||
// 修复:将 this 作为 IAttackTargetSearcher 传递
|
||||
currentTarget = (Thing)AttackTargetFinder.BestShootTargetFromCurrentPosition(
|
||||
@@ -250,14 +299,19 @@ namespace WulaFallenEmpire
|
||||
|
||||
public void DrawTurret()
|
||||
{
|
||||
if (_parent == null || _parent.parent == null || !_parent.parent.Spawned)
|
||||
return;
|
||||
|
||||
Vector3 drawPos = GetTurretDrawPos();
|
||||
float angle = curRotation;
|
||||
|
||||
if (turretMat == null)
|
||||
if (turretMat == null && _parent.Props?.turretDef?.graphicData?.texPath != null)
|
||||
{
|
||||
turretMat = MaterialPool.MatFrom(parent.Props.turretDef.graphicData.texPath);
|
||||
turretMat = MaterialPool.MatFrom(_parent.Props.turretDef.graphicData.texPath);
|
||||
}
|
||||
|
||||
if (turretMat == null) return;
|
||||
|
||||
Matrix4x4 matrix = default(Matrix4x4);
|
||||
matrix.SetTRS(drawPos, Quaternion.AngleAxis(angle, Vector3.up), Vector3.one);
|
||||
Graphics.DrawMesh(MeshPool.plane10, matrix, turretMat, 0);
|
||||
@@ -265,9 +319,12 @@ namespace WulaFallenEmpire
|
||||
|
||||
private Vector3 GetTurretDrawPos()
|
||||
{
|
||||
if (_parent == null || _parent.parent == null)
|
||||
return Vector3.zero;
|
||||
|
||||
// 计算炮塔位置(围绕建筑排列)
|
||||
float angle = 360f * index / parent.Props.maxTurrets;
|
||||
float radius = parent.Props.turretSpacing;
|
||||
float angle = 360f * _index / _parent.Props.maxTurrets;
|
||||
float radius = _parent.Props.turretSpacing;
|
||||
|
||||
Vector3 offset = new Vector3(
|
||||
Mathf.Cos(angle * Mathf.Deg2Rad) * radius,
|
||||
@@ -275,7 +332,7 @@ namespace WulaFallenEmpire
|
||||
Mathf.Sin(angle * Mathf.Deg2Rad) * radius
|
||||
);
|
||||
|
||||
return parent.parent.DrawPos + offset + new Vector3(0, 0.5f, 0);
|
||||
return _parent.parent.DrawPos + offset + new Vector3(0, 0.5f, 0);
|
||||
}
|
||||
|
||||
public void ExposeData()
|
||||
|
||||
@@ -46,13 +46,6 @@ namespace WulaFallenEmpire
|
||||
// 检查是否处于眩晕状态
|
||||
if (IsStunned())
|
||||
{
|
||||
// 眩晕状态下暂停所有活动
|
||||
if (isWarmingUp)
|
||||
{
|
||||
// 如果正在预热,暂停预热
|
||||
// 不清除预热计数,恢复时会继续
|
||||
Log.Message($"[CompTrapLauncher] {parent.Label} is stunned, pausing warmup");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -495,25 +488,5 @@ namespace WulaFallenEmpire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在检视字符串中添加眩晕状态信息
|
||||
/// </summary>
|
||||
public override string CompInspectStringExtra()
|
||||
{
|
||||
string baseString = base.CompInspectStringExtra();
|
||||
|
||||
if (IsStunned())
|
||||
{
|
||||
string stunInfo = "WULA_TrapLauncherStunned".Translate();
|
||||
if (!string.IsNullOrEmpty(baseString))
|
||||
{
|
||||
return baseString + "\n" + stunInfo;
|
||||
}
|
||||
return stunInfo;
|
||||
}
|
||||
|
||||
return baseString;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
美术与文本源文件/Wula/Storyteller/军团/11.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
美术与文本源文件/Wula/Storyteller/军团/11bg.png
Normal file
|
After Width: | Height: | Size: 10 MiB |