diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 54bcdbf..77027aa 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml index be69e9f..92df577 100644 --- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml +++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml @@ -1555,7 +1555,7 @@ Verb_CastAbility 24 0 - Heatspikes_Shot + SpitterSpit Heatspikes_Tail True diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml index 31c3503..b7b01e3 100644 --- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml +++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml @@ -1299,7 +1299,7 @@ ARA_Skyraider_Hivelord - 这只阿拉克涅空天种已经获得拔耀,可以孵化大量的天巢种辅虫,这些灵敏的辅虫会后散开四处狩猎目标。 + 这只阿拉克涅空天种已经获得拔耀,可以投掷天巢种辅虫,这些灵敏的辅虫会后散开四处狩猎目标。 HediffWithComps (0.6, 0.4, 0.8) false @@ -1347,12 +1347,12 @@
  • ArachnaeBase_Race_Skyhive - 8 + 4 200
  • - +
    @@ -1383,7 +1383,7 @@ ARA_Skyraider_Empthrower - 使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得孵化磁暴种辅虫的能力——这种辅虫会以自杀式袭击的方式释放出EMP,以对抗机械族。\n\n该进化方向提供3只阿拉克涅电磁种辅虫。 + 使空天种发生内驱性进化,以降低机动力和失去高空机动能力为代价,使其获得投掷磁暴种辅虫的能力——这种辅虫会以自杀式袭击的方式释放出EMP,以对抗机械族。\n\n该进化方向不提供阿拉克涅辅虫。 ArachnaeSwarm/UI/Abilities/ARA_Skyraider_Empthrower 1800 false @@ -1422,7 +1422,7 @@ ARA_Skyraider_Empthrower - 这只阿拉克涅空天种已经获得拔耀,会孵化磁暴种辅虫,这些辅虫以自杀性袭击释放EMP对抗敌方机械族。 + 这只阿拉克涅空天种已经获得拔耀,会投掷磁暴种辅虫,这些辅虫以自杀性袭击释放EMP对抗敌方机械族。 HediffWithComps (0.6, 0.4, 0.8) false @@ -1466,16 +1466,7 @@ -
  • - -
  • - ArachnaeBase_Race_Empsuicider - 3 - 200 -
  • - - - +
    diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml index 5b0078f..56b63ca 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Psy.xml @@ -152,6 +152,7 @@
  • ArachnaeBase_Race_Acidcut
  • ArachnaeBase_Race_Baneling
  • ArachnaeBase_Race_Skyhive
  • +
  • ArachnaeBase_Race_Locust
  • ArachnaeNode_Race_MimicNematode
  • diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml index 13ffd01..6ec54eb 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml @@ -83,14 +83,6 @@ -
  • - ARA_Cycle_Suppression_Hediff - ARA_LifespanHediff - 12 - 寿命 - 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 - true -
  • ARA_TemperatureRegulation
  • @@ -174,6 +166,14 @@
  • +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 12 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • @@ -246,13 +246,21 @@
  • Cut
  • - 7 + 4 2.8 HeadAttackTool true +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 12 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • @@ -323,6 +331,14 @@ +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 12 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • false Crafting @@ -411,6 +427,14 @@
  • +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 12 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • @@ -469,6 +493,14 @@ 6.6 +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 30 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • @@ -538,6 +570,14 @@ 6.6 +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 0.5 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • @@ -625,6 +665,14 @@
  • +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 12 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • Always @@ -706,6 +754,14 @@
  • +
  • + ARA_Cycle_Suppression_Hediff + ARA_LifespanHediff + 15 + 寿命 + 阿拉克涅辅虫从出生起就走在死亡的道路上了——它们的寿命就是如此短暂。 + true +
  • diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml index 0111707..df45cc3 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBeastSwarm.xml @@ -9,7 +9,7 @@ 5 - 2500 + 100 ArachnaeSlayer_Body ARA_Insect_Beast diff --git a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml index ee3927b..46adc40 100644 --- a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml +++ b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml @@ -1,6 +1,5 @@ - ARA_Insect_Beast @@ -1010,9 +1009,6 @@ MentalStateCritical
  • - -
  • -
  • @@ -1110,9 +1106,11 @@
  • + +
  • - 100 - 100 + 30 + 35
  • @@ -1372,9 +1370,6 @@ MentalStateCritical
  • - -
  • -
  • @@ -1472,9 +1467,11 @@
  • + +
  • - 100 - 100 + 30 + 35
  • @@ -2265,9 +2262,6 @@ MentalStateCritical
  • - -
  • -
  • @@ -2303,8 +2297,8 @@
  • - 100 - 100 + 30 + 35
  • @@ -2365,9 +2359,11 @@
  • + +
  • - 100 - 100 + 30 + 35
  • @@ -2540,9 +2536,6 @@ MentalStateCritical
  • - -
  • -
  • @@ -2640,9 +2633,11 @@
  • + +
  • - 100 - 100 + 30 + 35
  • @@ -2815,11 +2810,6 @@ MentalStateCritical
  • - -
  • - 2.9 -
  • -
  • diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index e9c2625..f110a70 100644 Binary files a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo and b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo differ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json index 320b115..6f3bf4c 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -3,35 +3,55 @@ "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_productstorage\\compproperties_productstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_productstorage\\compproperties_productstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\compinteractiveproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\compabilityeffect_transformcorpse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\compabilityeffect_transformcorpse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_followproducer\\thinknode_conditionalnotproducedbymechcarrier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_followproducer\\thinknode_conditionalnotproducedbymechcarrier.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_pawnprogressbar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_neutronflux.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\necrotictransformationutility.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\gizmo_queuedincubationprogress.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { @@ -76,9 +96,91 @@ "DockedWidth": 200, "SelectedChildIndex": 6, "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, { "$type": "Document", "DocumentIndex": 1, + "Title": "CompRefuelableNutrition.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs", + "RelativeDocumentMoniker": "Building_Comps\\CompRefuelableNutrition.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs", + "RelativeToolTip": "Building_Comps\\CompRefuelableNutrition.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAyAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-27T03:51:40.77Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "CompProperties_ProductStorage.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs", + "RelativeDocumentMoniker": "Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs", + "RelativeToolTip": "Building_Comps\\ARA_ProductStorage\\CompProperties_ProductStorage.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAABKAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-27T03:51:33.86Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "CompInteractiveProducer.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs", + "RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs", + "RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompInteractiveProducer.cs", + "ViewState": "AgIAAFICAAAAAAAAAAAAAFICAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-27T03:51:32.573Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "CompAbilityEffect_TransformCorpse.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs", + "RelativeDocumentMoniker": "Abilities\\CompAbilityEffect_TransformCorpse.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs", + "RelativeToolTip": "Abilities\\CompAbilityEffect_TransformCorpse.cs", + "ViewState": "AgIAAFQAAAAAAAAAAAAuwGkAAABdAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-27T03:51:29.604Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ThinkNode_ConditionalNotProducedByMechCarrier.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs", + "RelativeDocumentMoniker": "Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs", + "RelativeToolTip": "Jobs\\JobDriver_FollowProducer\\ThinkNode_ConditionalNotProducedByMechCarrier.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-27T00:51:15.459Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Building_Ootheca.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "ViewState": "AgIAABwCAAAAAAAAAAAvwDICAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-23T08:31:14.555Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, "Title": "NecroticTransformationUtility.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs", "RelativeDocumentMoniker": "Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs", @@ -86,12 +188,11 @@ "RelativeToolTip": "Hediffs\\ARA_ConfigurableMutant\\NecroticTransformationUtility.cs", "ViewState": "AgIAAA8AAAAAAAAAAAAtwCIAAAAcAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-26T08:44:42.184Z", - "EditorCaption": "" + "WhenOpened": "2026-01-26T08:44:42.184Z" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 9, "Title": "CompNodeSwarmLifetime.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs", "RelativeDocumentMoniker": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs", @@ -99,12 +200,11 @@ "RelativeToolTip": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs", "ViewState": "AgIAADYAAAAAAAAAAAAtwEoAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-26T08:44:35.266Z", - "EditorCaption": "" + "WhenOpened": "2026-01-26T08:44:35.266Z" }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 10, "Title": "Gizmo_QueuedIncubationProgress.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs", "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs", @@ -112,29 +212,24 @@ "RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_QueuedIncubationProgress.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-26T08:11:04.23Z", - "EditorCaption": "" - }, - { - "$type": "Bookmark", - "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + "WhenOpened": "2026-01-26T08:11:04.23Z" }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 6, "Title": "Gizmo_PawnProgressBar.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs", "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs", "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs", "RelativeToolTip": "Buildings\\Building_Ootheca\\Gizmo_PawnProgressBar.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAmAAAAAAAAAA==", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAFAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2026-01-26T08:12:03.772Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 7, "Title": "Gizmo_NeutronFlux.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs", "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Gizmo_NeutronFlux.cs", @@ -147,20 +242,7 @@ }, { "$type": "Document", - "DocumentIndex": 0, - "Title": "Building_Ootheca.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "ViewState": "AgIAABEBAAAAAAAAAAAswCoBAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-23T08:31:14.555Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 11, "Title": "Building_EquipmentOotheca.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", @@ -168,12 +250,11 @@ "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", "ViewState": "AgIAAEIBAAAAAAAAAAAAAEMBAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-26T07:52:41.869Z", - "EditorCaption": "" + "WhenOpened": "2026-01-26T07:52:41.869Z" }, { "$type": "Document", - "DocumentIndex": 7, + "DocumentIndex": 12, "Title": "Building_CorpseVat.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", "RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", @@ -181,12 +262,11 @@ "RelativeToolTip": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAASAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-23T10:24:46.264Z", - "EditorCaption": "" + "WhenOpened": "2026-01-23T10:24:46.264Z" }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 14, "Title": "JobGiver_Grower.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", "RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", @@ -198,7 +278,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 16, "Title": "Hediff_Possession.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", "RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", @@ -210,7 +290,7 @@ }, { "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 17, "Title": "CompAbilityEffect_Possess.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", "RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", @@ -222,7 +302,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 13, "Title": "CorpseVatExtension.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs", "RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs", @@ -234,7 +314,7 @@ }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 18, "Title": "CompDelayedTerrainSpawn.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", "RelativeDocumentMoniker": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", @@ -246,7 +326,7 @@ }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 19, "Title": "CompProperties_HediffTerrainSpawn.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", "RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", @@ -258,7 +338,7 @@ }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 15, "Title": "JobGiver_Cleaner.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", "RelativeDocumentMoniker": "Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", @@ -270,7 +350,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 20, "Title": "CompHediffTerrainSpawn.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", "RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs index 13521dc..477b8ae 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs @@ -561,6 +561,7 @@ namespace ArachnaeSwarm } public override IEnumerable GetGizmos() { + base.GetGizmos(); // 首先获取选中的同类建筑 var selectedOothecas = GetSelectedOothecas(); bool isMultiSelect = selectedOothecas.Count > 1; diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs index 5444d56..08c46be 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Gizmo_PawnProgressBar.cs @@ -1,7 +1,5 @@ -// 修改 Gizmo_PawnProgressBar.cs using RimWorld; using System.Collections.Generic; -using System.Linq; using UnityEngine; using Verse; @@ -9,7 +7,6 @@ namespace ArachnaeSwarm { /// /// 统一的双向进度条 Gizmo - 用于所有孵化建筑/组件 - /// 支持多选显示 /// [StaticConstructorOnStartup] public class Gizmo_PawnProgressBar : Gizmo @@ -25,219 +22,16 @@ namespace ArachnaeSwarm private static readonly Texture2D EmptyBarTex = SolidColorMaterials.NewSolidColorTexture(new Color(0.1f, 0.1f, 0.1f, 0.5f)); private readonly IOrderGizmoProvider provider; - private readonly Thing parentThing; - - // 多选相关 - private bool isMultiSelect = false; - private List multiSelectProviders = new List(); public Gizmo_PawnProgressBar(IOrderGizmoProvider provider) { this.provider = provider; - this.parentThing = provider as Thing; this.Order = -140f; - - // 检查是否是多个建筑被选中 - UpdateMultiSelectInfo(); - } - - private void UpdateMultiSelectInfo() - { - if (Find.Selector == null || parentThing == null) - return; - - // 获取选中的同类建筑 - var selectedThings = Find.Selector.SelectedObjects - .Where(obj => obj is Thing thing && - thing.def == parentThing.def && - thing.Faction == Faction.OfPlayer) - .ToList(); - - isMultiSelect = selectedThings.Count > 1; - - if (isMultiSelect) - { - multiSelectProviders.Clear(); - foreach (var thing in selectedThings) - { - if (thing is IOrderGizmoProvider provider) - { - multiSelectProviders.Add(provider); - } - } - } } public override float GetWidth(float maxWidth) => Mathf.Min(Width, maxWidth); public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms) - { - // 更新多选信息 - UpdateMultiSelectInfo(); - - if (isMultiSelect) - { - return DrawMultiSelectGizmo(topLeft, maxWidth); - } - else - { - return DrawSingleSelectGizmo(topLeft, maxWidth); - } - } - - private GizmoResult DrawMultiSelectGizmo(Vector2 topLeft, float maxWidth) - { - // 计算显示多少个建筑的进度 - int displayCount = Mathf.Min(multiSelectProviders.Count, 4); // 最多显示4个 - - // 计算高度 - float contentHeight = Padding * 2 + Text.LineHeight + Spacing; // 标题 - contentHeight += displayCount * (BarHeight + Spacing + 14f); // 每个建筑的进度条 - float totalHeight = Mathf.Max(75f, contentHeight); - - Rect rect = new Rect(topLeft.x, topLeft.y - (totalHeight - 75f), GetWidth(maxWidth), totalHeight); - Widgets.DrawWindowBackground(rect); - - Rect innerRect = rect.ContractedBy(Padding); - float curY = innerRect.y; - - // === 多选标题区域 === - Text.Font = GameFont.Small; - Rect titleRect = new Rect(innerRect.x, curY, innerRect.width, Text.LineHeight); - - string title = "ARA_Gizmo_MultiSelectTitle".Translate(multiSelectProviders.Count); - GUI.color = new Color(0.7f, 0.9f, 1f); - Widgets.Label(titleRect, title); - GUI.color = Color.white; - - curY += Text.LineHeight + Spacing; - - // === 显示每个建筑的进度 === - for (int i = 0; i < displayCount; i++) - { - var currentProvider = multiSelectProviders[i]; - var orders = currentProvider.GetOrdersForGizmo(); - - if (orders.Count > 0) - { - // 建筑标签 - Text.Font = GameFont.Tiny; - Rect buildingLabelRect = new Rect(innerRect.x, curY, innerRect.width, 12f); - string buildingLabel = $"{i+1}. {(currentProvider as Thing)?.LabelCap ?? "Unknown"}"; - Widgets.Label(buildingLabelRect, buildingLabel); - curY += 12f; - - // 显示第一个订单 - var order = orders[0]; - Rect orderRect = new Rect(innerRect.x, curY, innerRect.width, BarHeight + 14f); - DrawMultiSelectOrderItem(orderRect, order, currentProvider, i); - curY += BarHeight + 14f + Spacing; - } - else - { - // 无订单状态 - Text.Font = GameFont.Tiny; - Rect emptyRect = new Rect(innerRect.x, curY, innerRect.width, 20f); - GUI.color = new Color(0.7f, 0.7f, 0.7f); - Widgets.Label(emptyRect, "ARA_Status_Empty".Translate()); - GUI.color = Color.white; - curY += 20f + Spacing; - } - - // 添加分隔线 - if (i < displayCount - 1) - { - Widgets.DrawLineHorizontal(innerRect.x, curY - Spacing/2, innerRect.width); - curY += 2f; - } - } - - // 如果有更多建筑,显示提示 - if (multiSelectProviders.Count > displayCount) - { - Text.Font = GameFont.Tiny; - Rect moreRect = new Rect(innerRect.x, curY, innerRect.width, 14f); - GUI.color = new Color(0.5f, 0.5f, 0.5f); - Widgets.Label(moreRect, "ARA_Gizmo_MoreBuildings".Translate(multiSelectProviders.Count - displayCount)); - GUI.color = Color.white; - } - - Text.Font = GameFont.Small; - return new GizmoResult(GizmoState.Clear); - } - - private void DrawMultiSelectOrderItem(Rect rect, PawnOrderDisplayInfo order, IOrderGizmoProvider provider, int index) - { - float labelHeight = 14f; - - // 标签行 - Text.Font = GameFont.Tiny; - Rect labelRect = new Rect(rect.x, rect.y, rect.width - 20f, labelHeight); - - GUI.color = Color.white; - Widgets.Label(labelRect, $"{order.label} {order.progress.ToStringPercent("F0")}"); - - // 取消按钮(针对单个建筑) - Rect cancelRect = new Rect(rect.xMax - 16f, rect.y, 16f, labelHeight); - if (Widgets.ButtonText(cancelRect, "×", false)) - { - provider.RemoveOrderByIndex(0); - } - - // 进度条 - Rect barRect = new Rect(rect.x, rect.y + labelHeight, rect.width, BarHeight); - - if (order.status == OrderStatus.Incubating) - { - // 双向进度条:品质向左,进度向右 - float midX = barRect.x + barRect.width / 2f; - float halfWidth = barRect.width / 2f; - - // 背景 - GUI.DrawTexture(barRect, EmptyBarTex); - - // 品质进度(向左) - float qualityWidth = halfWidth * order.qualityProgress; - Rect qualityRect = new Rect(midX - qualityWidth, barRect.y, qualityWidth, barRect.height); - GUI.DrawTexture(qualityRect, QualityBarTex); - - // 生产进度(向右) - float progressWidth = halfWidth * order.progress; - Rect progressRect = new Rect(midX, barRect.y, progressWidth, barRect.height); - GUI.DrawTexture(progressRect, ProgressBarTex); - - // 中线 - Widgets.DrawLineVertical(midX, barRect.y, barRect.height); - - // 百分比文字 - Text.Font = GameFont.Tiny; - Text.Anchor = TextAnchor.MiddleLeft; - GUI.color = new Color(0.8f, 0.9f, 1f); - Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height), - order.qualityProgress.ToStringPercent("F0")); - - Text.Anchor = TextAnchor.MiddleRight; - GUI.color = new Color(0.8f, 1f, 0.8f); - Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height), - order.progress.ToStringPercent("F0")); - - Text.Anchor = TextAnchor.UpperLeft; - GUI.color = Color.white; - } - else - { - // 等待幼虫状态:显示等待指示 - GUI.DrawTexture(barRect, EmptyBarTex); - Text.Font = GameFont.Tiny; - Text.Anchor = TextAnchor.MiddleCenter; - GUI.color = new Color(0.8f, 0.6f, 0.2f); - Widgets.Label(barRect, "ARA_Status_WaitingForLarva".Translate()); - GUI.color = Color.white; - Text.Anchor = TextAnchor.UpperLeft; - } - } - - private GizmoResult DrawSingleSelectGizmo(Vector2 topLeft, float maxWidth) { var orders = provider.GetOrdersForGizmo(); int orderCount = orders.Count; @@ -257,10 +51,10 @@ namespace ArachnaeSwarm // === 标题区域(可点击打开菜单) === Text.Font = GameFont.Small; Rect titleRect = new Rect(innerRect.x, curY, innerRect.width, Text.LineHeight); - + string title; bool canAdd = orderCount < provider.QueueLimit; - + if (orderCount > 0) { // 显示第一个订单名称 @@ -279,12 +73,12 @@ namespace ArachnaeSwarm { Widgets.DrawHighlight(titleRect); } - + if (Widgets.ButtonInvisible(titleRect)) { provider.ShowOrderMenu(); } - + // 带下拉箭头的标题 GUI.color = new Color(0.7f, 0.9f, 1f); Widgets.Label(titleRect, title.Truncate(titleRect.width - 20f) + " ▼"); @@ -305,18 +99,18 @@ namespace ArachnaeSwarm float listHeight = Mathf.Min(visibleCount, orderCount) * itemHeight; float totalContentHeight = orderCount * itemHeight; bool needsScrollbar = orderCount > MaxVisibleOrders; - + float scrollbarWidth = needsScrollbar ? 12f : 0f; Rect listRect = new Rect(innerRect.x, curY, innerRect.width - scrollbarWidth, listHeight); Rect viewRect = new Rect(0, 0, listRect.width, totalContentHeight); - + // 滚动条区域 if (needsScrollbar) { Rect scrollbarRect = new Rect(innerRect.xMax - scrollbarWidth, curY, scrollbarWidth, listHeight); float scrollMax = totalContentHeight - listHeight; provider.GizmoScrollPosition = GUI.VerticalScrollbar(scrollbarRect, provider.GizmoScrollPosition, listHeight, 0f, totalContentHeight); - + // 也支持滚轮 if (Mouse.IsOver(listRect)) { @@ -332,7 +126,7 @@ namespace ArachnaeSwarm { var order = orders[i]; Rect itemRect = new Rect(0, drawY, listRect.width, itemHeight - Spacing); - + if (itemRect.yMax > 0 && itemRect.y < listRect.height) { DrawOrderItem(itemRect, order, i); @@ -358,11 +152,11 @@ namespace ArachnaeSwarm private void DrawOrderItem(Rect rect, PawnOrderDisplayInfo order, int index) { float labelHeight = 14f; - + // 标签行 Text.Font = GameFont.Tiny; Rect labelRect = new Rect(rect.x, rect.y, rect.width - 20f, labelHeight); - + if (order.status == OrderStatus.WaitingForLarva) { // 整个标签区域可点击呼叫幼虫 @@ -370,12 +164,12 @@ namespace ArachnaeSwarm { Widgets.DrawHighlight(labelRect); } - + if (Widgets.ButtonInvisible(labelRect)) { provider.CallLarvaForGizmo(); } - + GUI.color = new Color(1f, 0.8f, 0.4f); Widgets.Label(labelRect, $"{order.label} [" + "ARA_Status_WaitingForLarva".Translate() + "]"); } @@ -395,7 +189,7 @@ namespace ArachnaeSwarm // 进度条 Rect barRect = new Rect(rect.x, rect.y + labelHeight, rect.width, BarHeight); - + if (order.status == OrderStatus.Incubating) { // 双向进度条:品质向左,进度向右 @@ -417,24 +211,24 @@ namespace ArachnaeSwarm // 中线 Widgets.DrawLineVertical(midX, barRect.y, barRect.height); - + // 百分比文字(在进度条内部) Text.Font = GameFont.Tiny; Text.Anchor = TextAnchor.MiddleLeft; GUI.color = new Color(0.8f, 0.9f, 1f); - Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height), + Widgets.Label(new Rect(barRect.x + 2f, barRect.y, halfWidth - 4f, barRect.height), order.qualityProgress.ToStringPercent("F0")); - + Text.Anchor = TextAnchor.MiddleRight; GUI.color = new Color(0.8f, 1f, 0.8f); - Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height), + Widgets.Label(new Rect(midX + 2f, barRect.y, halfWidth - 4f, barRect.height), order.progress.ToStringPercent("F0")); - + Text.Anchor = TextAnchor.UpperLeft; GUI.color = Color.white; // Tooltip - string tooltip = $"{order.label}\n" + + string tooltip = $"{order.label}\n" + "ARA_Tooltip_Quality".Translate(order.qualityProgress.ToStringPercent(), order.estimatedQuality) + "\n" + "ARA_Tooltip_Progress".Translate(order.progress.ToStringPercent()) + "\n" + "ARA_Tooltip_Remaining".Translate(order.remainingTime); diff --git a/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs b/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs index 73ef1c0..528b4ab 100644 --- a/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs +++ b/Source/ArachnaeSwarm/Jobs/JobDriver_FollowProducer/ThinkNode_ConditionalNotProducedByMechCarrier.cs @@ -14,17 +14,14 @@ namespace ArachnaeSwarm private bool checkProducerAlive = true; // 可选:是否检查生产者是否在同一地图 - private bool checkSameMap = true; + private bool checkSameMap = false; // 可选:是否检查生产者是否可到达 - private bool checkReachable = true; + private bool checkReachable = false; // 可选:是否检查生产者类型(pawn必须征召才跟随) private bool checkProducerTypeConditions = true; - // 可选:额外条件类(可以通过XML添加额外条件) - public string extraConditionClass; - public ThinkNode_ConditionalNotProducedByMechCarrier() { }