Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 83 additions & 15 deletions Defs/ThingDefs_Misc/Apparel_Carrying.xml
Original file line number Diff line number Diff line change
Expand Up @@ -79,14 +79,17 @@
<li>Leathery</li>
</stuffCategories>
<apparel>
<renderNodeProperties> <!-- Allows visibility to be toggled in the mod options. -->
<!--<renderNodeProperties> Currently disabled due to a regression in vanilla apparel handling
<li>
<nodeClass>PawnRenderNode_Apparel</nodeClass>
<workerClass>CombatExtended.PawnRenderNodeWorker_Webbing</workerClass>
<workerClass>PawnRenderNodeWorker_Apparel_Body</workerClass>
<parentTagDef>ApparelBody</parentTagDef>
<baseLayer>29</baseLayer>
<subworkerClasses>
<li>CombatExtended.PawnRenderSubWorker_Webbing</li>
</subworkerClasses>
</li>
</renderNodeProperties>
</renderNodeProperties>-->
<bodyPartGroups>
<li>Torso</li>
</bodyPartGroups>
Expand All @@ -104,6 +107,11 @@
<tradeTags>
<li>Clothing</li>
</tradeTags>
<modExtensions>
<li Class="CombatExtended.ApparelDefExtension">
<isWebbing>true</isWebbing> <!-- Temporary solution for render toggling -->
</li>
</modExtensions>
</ThingDef>

<ThingDef Name="ApparelBackpackBase" ParentName="ApparelCarryGearBase">
Expand Down Expand Up @@ -136,14 +144,25 @@
<li>Leathery</li>
</stuffCategories>
<apparel>
<renderNodeProperties> <!-- Allows visibility to be toggled in the mod options. -->
<!--<renderNodeProperties> Currently disabled due to a regression in vanilla apparel handling
<li>
<nodeClass>PawnRenderNode_Apparel</nodeClass>
<workerClass>CombatExtended.PawnRenderNodeWorker_Backpack</workerClass>
<workerClass>PawnRenderNodeWorker_Apparel_Body</workerClass>
<parentTagDef>ApparelBody</parentTagDef>
<baseLayer>30</baseLayer>
<drawData>
<dataNorth>
<layer>93</layer>
</dataNorth>
<dataSouth>
<layer>-3</layer>
</dataSouth>
</drawData>
<subworkerClasses>
<li>CombatExtended.PawnRenderSubWorker_Backpack</li>
</subworkerClasses>
</li>
</renderNodeProperties>
</renderNodeProperties>-->
<countsAsClothingForNudity>false</countsAsClothingForNudity>
<careIfDamaged>false</careIfDamaged>
<bodyPartGroups>
Expand Down Expand Up @@ -230,6 +249,11 @@
<tradeTags>
<li>Clothing</li>
</tradeTags>
<modExtensions>
<li Class="CombatExtended.ApparelDefExtension">
<isBackpack>true</isBackpack> <!-- Temporary solution for render toggling -->
</li>
</modExtensions>
</ThingDef>

<ThingDef ParentName="ApparelBackpackBase">
Expand All @@ -251,14 +275,25 @@
</equippedStatOffsets>
<costStuffCount>20</costStuffCount>
<apparel>
<renderNodeProperties>
<!--<renderNodeProperties> Currently disabled due to a regression in vanilla apparel handling
<li>
<nodeClass>PawnRenderNode_Apparel</nodeClass>
<workerClass>CombatExtended.PawnRenderNodeWorker_Backpack</workerClass>
<workerClass>PawnRenderNodeWorker_Apparel_Body</workerClass>
<parentTagDef>ApparelBody</parentTagDef>
<baseLayer>30</baseLayer>
<drawData>
<dataNorth>
<layer>93</layer>
</dataNorth>
<dataSouth>
<layer>-3</layer>
</dataSouth>
</drawData>
<subworkerClasses>
<li>CombatExtended.PawnRenderSubWorker_Backpack</li>
</subworkerClasses>
</li>
</renderNodeProperties>
</renderNodeProperties>-->
<developmentalStageFilter>Child</developmentalStageFilter>
<tags Inherit="False">
<li>IndustrialBasic</li>
Expand All @@ -277,6 +312,11 @@
</north>
</wornGraphicData>
</apparel>
<modExtensions>
<li Class="CombatExtended.ApparelDefExtension">
<isBackpack>true</isBackpack>
</li>
</modExtensions>
</ThingDef>

<ThingDef ParentName="ApparelCarryGearBase">
Expand Down Expand Up @@ -312,14 +352,25 @@
</recipeUsers>
</recipeMaker>
<apparel>
<renderNodeProperties>
<!--<renderNodeProperties> Currently disabled due to a regression in vanilla apparel handling
<li>
<nodeClass>PawnRenderNode_Apparel</nodeClass>
<workerClass>CombatExtended.PawnRenderNodeWorker_Backpack</workerClass>
<workerClass>PawnRenderNodeWorker_Apparel_Body</workerClass>
<parentTagDef>ApparelBody</parentTagDef>
<baseLayer>30</baseLayer>
<drawData>
<dataNorth>
<layer>93</layer>
</dataNorth>
<dataSouth>
<layer>-3</layer>
</dataSouth>
</drawData>
<subworkerClasses>
<li>CombatExtended.PawnRenderSubWorker_Backpack</li>
</subworkerClasses>
</li>
</renderNodeProperties>
</renderNodeProperties>-->
<countsAsClothingForNudity>false</countsAsClothingForNudity>
<careIfDamaged>false</careIfDamaged>
<bodyPartGroups>
Expand Down Expand Up @@ -418,6 +469,11 @@
<tradeTags>
<li>BasicClothing</li>
</tradeTags>
<modExtensions>
<li Class="CombatExtended.ApparelDefExtension">
<isBackpack>true</isBackpack>
</li>
</modExtensions>
</ThingDef>

<ThingDef ParentName="ApparelCarryGearBase">
Expand Down Expand Up @@ -452,14 +508,25 @@
<ComponentIndustrial>4</ComponentIndustrial>
</costList>
<apparel>
<renderNodeProperties>
<!--<renderNodeProperties> Currently disabled due to a regression in vanilla apparel handling
<li>
<nodeClass>PawnRenderNode_Apparel</nodeClass>
<workerClass>CombatExtended.PawnRenderNodeWorker_Backpack</workerClass>
<workerClass>PawnRenderNodeWorker_Apparel_Body</workerClass>
<parentTagDef>ApparelBody</parentTagDef>
<baseLayer>30</baseLayer>
<drawData>
<dataNorth>
<layer>93</layer>
</dataNorth>
<dataSouth>
<layer>-3</layer>
</dataSouth>
</drawData>
<subworkerClasses>
<li>CombatExtended.PawnRenderSubWorker_Backpack</li>
</subworkerClasses>
</li>
</renderNodeProperties>
</renderNodeProperties>-->
<countsAsClothingForNudity>false</countsAsClothingForNudity>
<careIfDamaged>false</careIfDamaged>
<careIfWornByCorpse>false</careIfWornByCorpse>
Expand Down Expand Up @@ -543,6 +610,7 @@
<modExtensions>
<li Class="CombatExtended.ApparelDefExtension">
<isRadioPack>true</isRadioPack>
<isBackpack>true</isBackpack>
</li>
</modExtensions>
</ThingDef>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;

namespace CombatExtended;
public class ApparelDefExtension : DefModExtension
{
public bool isRadioPack = false;
public bool isSoftArmor = false;
public bool isBackpack = false;
public bool isWebbing = false;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Verse;

namespace CombatExtended;

public class PawnRenderSubWorker_Backpack : PawnRenderSubWorker
{
public override bool CanDrawNowSub(PawnRenderNode node, PawnDrawParms parms)
{
return Controller.settings.ShowBackpacks;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
using Verse;

namespace CombatExtended;

[Obsolete]
public class PawnRenderNodeWorker_Backpack : PawnRenderNodeWorker_Apparel_Body
{
public override bool CanDrawNow(PawnRenderNode node, PawnDrawParms parms)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using Verse;
using System;
using Verse;

namespace CombatExtended;

[Obsolete]
public class PawnRenderNodeWorker_Webbing : PawnRenderNodeWorker_Apparel_Body
{
public override bool CanDrawNow(PawnRenderNode node, PawnDrawParms parms)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using Verse;

namespace CombatExtended;

public class PawnRenderSubWorker_Webbing : PawnRenderSubWorker
{
public override bool CanDrawNowSub(PawnRenderNode node, PawnDrawParms parms)
{
return Controller.settings.ShowTacticalVests;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System.Collections.Generic;
using HarmonyLib;
using RimWorld;
using Verse;

namespace CombatExtended.HarmonyCE;

[HarmonyPatch(typeof(DynamicPawnRenderNodeSetup_Apparel), nameof(DynamicPawnRenderNodeSetup_Apparel.ProcessApparel))]
public class Harmony_RenderNodeSetup_ProcessApparel
{
public static IEnumerable<(PawnRenderNode node, PawnRenderNode parent)> Postfix(IEnumerable<(PawnRenderNode node, PawnRenderNode parent)> input, Apparel ap)
{
foreach ((PawnRenderNode node, PawnRenderNode parent) in input)
{
if (ap?.def.HasModExtension<ApparelDefExtension>() ?? false)
{
var ext = ap.def.GetModExtension<ApparelDefExtension>();
if (ext.isBackpack)
{
if (node.Props.Worker is PawnRenderNodeWorker_Apparel_Body)
{
node.Props.subworkerClasses ??= [];
node.Props.subworkerClasses.Add(typeof(PawnRenderSubWorker_Backpack));
}
}
if (ext.isWebbing)
{
if (node.Props.Worker is PawnRenderNodeWorker_Apparel_Body)
{
node.Props.subworkerClasses ??= [];
node.Props.subworkerClasses.Add(typeof(PawnRenderSubWorker_Webbing));
}
}
}
yield return (node, parent);
}
}
}