@@ -7,81 +7,48 @@ float GetStatValue(unsigned short stat) {
77 return plugin::CallAndReturn<float , 0x558E40 , unsigned short >(stat);
88}
99
10- void BodyStateFeature::Initialize (RwFrame* pFrame, CWeapon *pWeapon) {
11- WepData &data = wepData.Get (pWeapon);
12-
13- RwFrame* child = pFrame->child ;
14- while (child) {
15- const std::string name = GetFrameNodeName (child);
16-
17- if (name == " slim" ) {
18- data.pSlim = child;
19- } else if (name == " fat" ) {
20- data.pFat = child;
21- } else if (name == " muscle" ) {
22- data.pMuscle = child;
23- } else if (name == " slim+" ) {
24- data.pSlimp = child;
25- } else if (name == " fat+" ) {
26- data.pFatp = child;
27- } else if (name == " muscle+" ) {
28- data.pMusclep = child;
29- }
30- child = child->next ;
31- }
32- }
33-
3410void BodyStateFeature::Process (RwFrame* frame, CWeapon *pWeapon) {
3511 std::string name = GetFrameNodeName (frame);
36- if (name.find (" x_body_state_zen" ) != std::string::npos) {
37- WepData &data = wepData.Get (pWeapon);
38- if (!data.m_bInitialized ) {
39- Initialize (frame, pWeapon);
40- data.m_bInitialized = true ;
41- }
42-
12+ if (name.find (" x_body_state" ) != std::string::npos) {
4313 bool isMuscle = GetStatValue (23 ) == 1000 .0f ;
4414 bool isFat = GetStatValue (21 ) == 1000 .0f ;
4515 bool isSlim = !(isMuscle && isFat);
4616
4717 Util::HideAllChilds (frame);
4818 if (isMuscle) { // muscle
49- Util::ShowAllAtomics (data. pMuscle );
19+ Util::ShowChildWithName (frame, " muscle " );
5020 } else if (isMuscle) { // fat
51- Util::ShowAllAtomics (data. pFat );
21+ Util::ShowChildWithName (frame, " fat " );
5222 } else { // slim
53- Util::ShowAllAtomics (data. pSlim );
23+ Util::ShowChildWithName (frame, " slim " );
5424 }
5525 }
5626}
5727
5828void BodyStateFeature::ProcessZen (RwFrame* frame, CWeapon *pWeapon) {
5929 std::string name = GetFrameNodeName (frame);
60- if (name.find (" x_body_state" ) != std::string::npos) {
61- WepData &data = wepData.Get (pWeapon);
62- if (!data.m_bInitialized ) {
63- Initialize (frame, pWeapon);
64- data.m_bInitialized = true ;
65- }
66-
30+ if (name.find (" x_body_state_zen" ) != std::string::npos) {
6731 bool isMuscle = GetStatValue (23 ) == 1000 ;
6832 bool isFat = GetStatValue (21 ) == 1000 ;
6933 bool isSlim = !(isMuscle && isFat);
70-
7134 CPlayerPed *pPlayer = FindPlayerPed ();
7235 if (!pPlayer) {
7336 return ;
7437 }
7538
7639 bool isLarge = pPlayer->m_pPlayerData ->m_pPedClothesDesc ->m_anModelKeys [0 ] != 3139216588 ; // hoodyA model
77-
40+ bool isUniform = pPlayer->m_pPlayerData ->m_pPedClothesDesc ->m_anTextureKeys [17 ] != 0 ; // default outfit
41+ bool isPlus = isLarge && !isUniform;
42+
7843 Util::HideAllChilds (frame);
79- if (isFat) { // fat
80- Util::ShowAllAtomics (isLarge? data.pFatp : data.pFat );
44+ if (isFat && isMuscle) {
45+ Util::ShowChildWithName (frame, " fat_muscle" );
46+ } else if (isFat) { // fat
47+ Util::ShowChildWithName (frame, isPlus? " fat+" : " fat" );
8148 } else if (isMuscle) { // muscle
82- Util::ShowAllAtomics (isLarge? data. pMusclep : data. pMuscle );
49+ Util::ShowChildWithName (frame, isPlus? " muscle+ " : " muscle " );
8350 } else { // slim
84- Util::ShowAllAtomics (isLarge? data. pSlimp : data. pSlim );
51+ Util::ShowChildWithName (frame, isPlus? " slim+ " : " slim " );
8552 }
8653 }
8754}
0 commit comments