@@ -143,41 +143,108 @@ void LPrmIO::Save(std::string name, bStream::CStream * stream)
143143 ambColor |= ((uint32_t )(prm->mAmbColor .a *255 ));
144144
145145 stream->writeUInt32 (28 );
146- WritePropertyInt32 (stream, 0xa62f , " mLife" , prm->mLife );
147- WritePropertyInt32 (stream, 0x2528 , " mHitDamage" , prm->mHitDamage );
148- WritePropertyInt32 (stream, 0xad88 , " mSpeed" , prm->mSpeed );
149- WritePropertyInt32 (stream, 0x93d1 , " mSpeedUnseen" , prm->mSpeedUnseen );
150- WritePropertyInt32 (stream, 0x4b45 , " mSpeedFight" , prm->mSpeedFight );
151- WritePropertyInt32 (stream, 0x5f6a , " mEyesight" , prm->mEyesight );
152- WritePropertyInt32 (stream, 0xd9f9 , " mLightBindFrame" , prm->mLightBindFrame );
153- WritePropertyFloat (stream, 0x29fe , " mMinLightBindRange" , prm->mMinLightBindRange );
154- WritePropertyFloat (stream, 0xac49 , " mMaxLightBindRange" , prm->mMaxLightBindRange );
155- WritePropertyInt32 (stream, 0x30aa , " mNumAtkKarakai" , prm->mNumAtkKarakai );
156- WritePropertyInt32 (stream, 0x560a , " mNumAtkOrooro" , prm->mNumAtkOrooro );
157- WritePropertyFloat (stream, 0xcc48 , " mHikiPower" , prm->mHikiPower );
158- WritePropertyFloat (stream, 0xc42e , " mEffectiveDeg" , prm->mEffectiveDegree );
159- WritePropertyFloat (stream, 0x7a1c , " mTsuriHeight" , prm->mTsuriHeight );
160- WritePropertyInt32 (stream, 0xe753 , " mDissapearFrame" , prm->mDissapearFrame );
161- WritePropertyInt32 (stream, 0x11db , " mActAfterSu" , prm->mActAfterSu );
162- WritePropertyInt32 (stream, 0x04a9 , " mActAfterFa" , prm->mActAfterFa );
163- WritePropertyInt32 (stream, 0x3960 , " mTsuriType" , (uint32_t )prm->mTsuriType );
164- WritePropertyInt32 (stream, 0x1f58 , " mAttackPattern1" , (uint32_t )prm->mAttackPattern );
165- WritePropertyInt32 (stream, 0xf8f2 , " mElement" , (uint32_t )prm->mElement );
166- ptrdiff_t tsuriTblId = LGenUtility::VectorIndexOf (itemFishingNodes, prm->mTsuriItemTblId .lock ());
167- ptrdiff_t normalTblId = LGenUtility::VectorIndexOf (itemAppearNodes, prm->mNormalItemTblId .lock ());
168- WritePropertyInt32 (stream, 0x55a0 , " mTsuriItemTblId" , tsuriTblId);
169- WritePropertyInt32 (stream, 0x7d81 , " mNormalItemTblId" , normalTblId);
170- WritePropertyFloat (stream, 0x9b49 , " mPointerRange" , prm->mPointerRange );
171- WritePropertyInt32 (stream, 0x61f8 , " mBrightColor" , brightColor);
172- WritePropertyInt32 (stream, 0xcf8a , " mAmbColor" , ambColor);
173- WritePropertyInt32 (stream, 0x97f5 , " mKiryuCount" , prm->mKiryuCount );
174- WritePropertyInt32 (stream, 0xc135 , " mNumGround" , prm->mNumGround );
175- WritePropertyInt16 (stream, 0x31d1 , " mCheckbox" , prm->mCheckbox );
146+
147+ for (int m = 0 ; m < mCtpParams [name]->mEnabledProperties .size (); m++){
148+ switch (mCtpParams [name]->mEnabledProperties [m]){
149+ case 0xa62f :
150+ WritePropertyInt32 (stream, 0xa62f , " mLife" , prm->mLife );
151+ break ;
152+ case 0x2528 :
153+ WritePropertyInt32 (stream, 0x2528 , " mHitDamage" , prm->mHitDamage );
154+ break ;
155+ case 0xad88 :
156+ WritePropertyInt32 (stream, 0xad88 , " mSpeed" , prm->mSpeed );
157+ break ;
158+ case 0x93d1 :
159+ WritePropertyInt32 (stream, 0x93d1 , " mSpeedUnseen" , prm->mSpeedUnseen );
160+ break ;
161+ case 0x4b45 :
162+ WritePropertyInt32 (stream, 0x4b45 , " mSpeedFight" , prm->mSpeedFight );
163+ break ;
164+ case 0x5f6a :
165+ WritePropertyInt32 (stream, 0x5f6a , " mEyesight" , prm->mEyesight );
166+ break ;
167+ case 0xd9f9 :
168+ WritePropertyInt32 (stream, 0xd9f9 , " mLightBindFrame" , prm->mLightBindFrame );
169+ break ;
170+ case 0x29fe :
171+ WritePropertyFloat (stream, 0x29fe , " mMinLightBindRange" , prm->mMinLightBindRange );
172+ break ;
173+ case 0xac49 :
174+ WritePropertyFloat (stream, 0xac49 , " mMaxLightBindRange" , prm->mMaxLightBindRange );
175+ break ;
176+ case 0x30aa :
177+ WritePropertyInt32 (stream, 0x30aa , " mNumAtkKarakai" , prm->mNumAtkKarakai );
178+ break ;
179+ case 0x560a :
180+ WritePropertyInt32 (stream, 0x560a , " mNumAtkOrooro" , prm->mNumAtkOrooro );
181+ break ;
182+ case 0xcc48 :
183+ WritePropertyFloat (stream, 0xcc48 , " mHikiPower" , prm->mHikiPower );
184+ break ;
185+ case 0xc42e :
186+ WritePropertyFloat (stream, 0xc42e , " mEffectiveDeg" , prm->mEffectiveDegree );
187+ break ;
188+ case 0x7a1c :
189+ WritePropertyFloat (stream, 0x7a1c , " mTsuriHeight" , prm->mTsuriHeight );
190+ break ;
191+ case 0xe753 :
192+ WritePropertyInt32 (stream, 0xe753 , " mDissapearFrame" , prm->mDissapearFrame );
193+ break ;
194+ case 0x11db :
195+ WritePropertyInt32 (stream, 0x11db , " mActAfterSu" , prm->mActAfterSu );
196+ break ;
197+ case 0x04a9 :
198+ WritePropertyInt32 (stream, 0x04a9 , " mActAfterFa" , prm->mActAfterFa );
199+ break ;
200+ case 0x3960 :
201+ WritePropertyInt32 (stream, 0x3960 , " mTsuriType" , (uint32_t )prm->mTsuriType );
202+ break ;
203+ case 0x1f58 :
204+ WritePropertyInt32 (stream, 0x1f58 , " mAttackPattern1" , (uint32_t )prm->mAttackPattern );
205+ break ;
206+ case 0xf8f2 :
207+ WritePropertyInt32 (stream, 0xf8f2 , " mElement" , (uint32_t )prm->mElement );
208+ break ;
209+ case 0x55a0 :
210+ {
211+ std::ptrdiff_t tsuriTblId = LGenUtility::VectorIndexOf (itemFishingNodes, prm->mTsuriItemTblId .lock ());
212+ WritePropertyInt32 (stream, 0x55a0 , " mTsuriItemTblId" , tsuriTblId);
213+ }
214+ break ;
215+ case 0x7d81 :
216+ {
217+ std::ptrdiff_t normalTblId = LGenUtility::VectorIndexOf (itemAppearNodes, prm->mNormalItemTblId .lock ());
218+ WritePropertyInt32 (stream, 0x7d81 , " mNormalItemTblId" , normalTblId);
219+ }
220+ break ;
221+ case 0x9b49 :
222+ WritePropertyFloat (stream, 0x9b49 , " mPointerRange" , prm->mPointerRange );
223+ break ;
224+ case 0x61f8 :
225+ WritePropertyInt32 (stream, 0x61f8 , " mBrightColor" , brightColor);
226+ break ;
227+ case 0xcf8a :
228+ WritePropertyInt32 (stream, 0xcf8a , " mAmbColor" , ambColor);
229+ break ;
230+ case 0x97f5 :
231+ WritePropertyInt32 (stream, 0x97f5 , " mKiryuCount" , prm->mKiryuCount );
232+ break ;
233+ case 0xc135 :
234+ WritePropertyInt32 (stream, 0xc135 , " mNumGround" , prm->mNumGround );
235+ break ;
236+ case 0x31d1 :
237+ WritePropertyInt16 (stream, 0x31d1 , " mCheckbox" , prm->mCheckbox );
238+ break ;
239+ }
240+ }
241+
176242}
177243
178244void LPrmIO::Load (std::string name, bStream::CStream* stream)
179245{
180246 mCtpParams [name] = std::make_shared<LCTPrm>();
247+ mCtpParams [name]->mEnabledProperties .reserve (32 );
181248
182249 auto itemFishingNodes = mMap .lock ()->GetChildrenOfType <LItemFishingDOMNode>(EDOMNodeType::ItemFishing);
183250 auto itemAppearNodes = mMap .lock ()->GetChildrenOfType <LItemAppearDOMNode>(EDOMNodeType::ItemAppear);
@@ -187,6 +254,7 @@ void LPrmIO::Load(std::string name, bStream::CStream* stream)
187254 uint16_t hash = stream->readUInt16 (); // skip hash
188255 std::string memberName = stream->readString (stream->readUInt16 ());
189256 stream->skip (4 );
257+ mCtpParams [name]->mEnabledProperties .push_back (hash);
190258 switch (hash){
191259 case 0xa62f :
192260 mCtpParams [name]->mLife = stream->readUInt32 ();
@@ -250,15 +318,15 @@ void LPrmIO::Load(std::string name, bStream::CStream* stream)
250318 break ;
251319 case 0x55a0 :
252320 {
253- size_t fid = stream->readUInt32 ();
321+ std:: size_t fid = stream->readUInt32 ();
254322 if (fid < itemFishingNodes.size () && itemFishingNodes.size () > 0 ){
255323 mCtpParams [name]->mTsuriItemTblId = itemFishingNodes.at (fid < itemFishingNodes.size () ? fid : itemFishingNodes.size () - 1 );
256324 }
257325 }
258326 break ;
259327 case 0x7d81 :
260328 {
261- size_t nid = stream->readUInt32 ();
329+ std:: size_t nid = stream->readUInt32 ();
262330 if (nid < itemAppearNodes.size () && itemAppearNodes.size () > 0 ){
263331 mCtpParams [name]->mNormalItemTblId = itemAppearNodes.at (nid < itemAppearNodes.size () ? nid : itemAppearNodes.size () - 1 );
264332 }
0 commit comments