Skip to content

Commit 34452be

Browse files
committed
prm tweaks
1 parent 8be53cd commit 34452be

File tree

2 files changed

+101
-32
lines changed

2 files changed

+101
-32
lines changed

include/io/PrmIO.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ struct LCTPrm {
7676
float mKiryuCount;
7777
float mNumGround;
7878
uint8_t mFlag;
79+
std::vector<uint16_t> mEnabledProperties;
7980
};
8081

8182
class LPrmIO {

src/io/PrmIO.cpp

Lines changed: 100 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

178244
void 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

Comments
 (0)