mirror of https://github.com/zeldaret/botw.git
ksys/Map: Fix initialization order for key hashes
This commit is contained in:
parent
75eaf5608f
commit
8faa579a69
|
@ -3,32 +3,66 @@
|
||||||
|
|
||||||
namespace ksys::map {
|
namespace ksys::map {
|
||||||
|
|
||||||
static const u32 sCrc32_SRTHash = sead::HashCRC32::calcStringHash("SRTHash");
|
namespace {
|
||||||
static const u32 sCrc32_Index = sead::HashCRC32::calcStringHash("Index");
|
struct KeyHashes {
|
||||||
static const u32 sCrc32_HashId = sead::HashCRC32::calcStringHash("HashId");
|
KeyHashes() {
|
||||||
static const u32 sCrc32_DestUnitHashId = sead::HashCRC32::calcStringHash("DestUnitHashId");
|
SRTHash = sead::HashCRC32::calcStringHash("SRTHash");
|
||||||
static const u32 sCrc32_LocationPosX = sead::HashCRC32::calcStringHash("LocationPosX");
|
Index = sead::HashCRC32::calcStringHash("Index");
|
||||||
static const u32 sCrc32_LocationPosZ = sead::HashCRC32::calcStringHash("LocationPosZ");
|
HashId = sead::HashCRC32::calcStringHash("HashId");
|
||||||
static const u32 sCrc32_NextDistance = sead::HashCRC32::calcStringHash("NextDistance");
|
DestUnitHashId = sead::HashCRC32::calcStringHash("DestUnitHashId");
|
||||||
static const u32 sCrc32_PrevDistance = sead::HashCRC32::calcStringHash("PrevDistance");
|
LocationPosX = sead::HashCRC32::calcStringHash("LocationPosX");
|
||||||
static const u32 sCrc32_IsClosed = sead::HashCRC32::calcStringHash("IsClosed");
|
LocationPosZ = sead::HashCRC32::calcStringHash("LocationPosZ");
|
||||||
static const u32 sCrc32_OnlyOne = sead::HashCRC32::calcStringHash("OnlyOne");
|
NextDistance = sead::HashCRC32::calcStringHash("NextDistance");
|
||||||
static const u32 sCrc32_RailType = sead::HashCRC32::calcStringHash("RailType");
|
PrevDistance = sead::HashCRC32::calcStringHash("PrevDistance");
|
||||||
static const u32 sCrc32_UniqueName = sead::HashCRC32::calcStringHash("UniqueName");
|
IsClosed = sead::HashCRC32::calcStringHash("IsClosed");
|
||||||
static const u32 sCrc32_UnitConfigName = sead::HashCRC32::calcStringHash("UnitConfigName");
|
OnlyOne = sead::HashCRC32::calcStringHash("OnlyOne");
|
||||||
static const u32 sCrc32_CheckPointName = sead::HashCRC32::calcStringHash("CheckPointName");
|
RailType = sead::HashCRC32::calcStringHash("RailType");
|
||||||
static const u32 sCrc32_EntryPointName = sead::HashCRC32::calcStringHash("EntryPointName");
|
UniqueName = sead::HashCRC32::calcStringHash("UniqueName");
|
||||||
static const u32 sCrc32_DefinitionName = sead::HashCRC32::calcStringHash("DefinitionName");
|
UnitConfigName = sead::HashCRC32::calcStringHash("UnitConfigName");
|
||||||
static const u32 sCrc32_Objs = sead::HashCRC32::calcStringHash("Objs");
|
CheckPointName = sead::HashCRC32::calcStringHash("CheckPointName");
|
||||||
static const u32 sCrc32_Rails = sead::HashCRC32::calcStringHash("Rails");
|
EntryPointName = sead::HashCRC32::calcStringHash("EntryPointName");
|
||||||
static const u32 sCrc32_LinksToObj = sead::HashCRC32::calcStringHash("LinksToObj");
|
DefinitionName = sead::HashCRC32::calcStringHash("DefinitionName");
|
||||||
static const u32 sCrc32_LinksToRail = sead::HashCRC32::calcStringHash("LinksToRail");
|
Objs = sead::HashCRC32::calcStringHash("Objs");
|
||||||
static const u32 sCrc32_Rotate = sead::HashCRC32::calcStringHash("Rotate");
|
Rails = sead::HashCRC32::calcStringHash("Rails");
|
||||||
static const u32 sCrc32_Scale = sead::HashCRC32::calcStringHash("Scale");
|
LinksToObj = sead::HashCRC32::calcStringHash("LinksToObj");
|
||||||
static const u32 sCrc32_Translate = sead::HashCRC32::calcStringHash("Translate");
|
LinksToRail = sead::HashCRC32::calcStringHash("LinksToRail");
|
||||||
static const u32 sCrc32_RailPoints = sead::HashCRC32::calcStringHash("RailPoints");
|
Rotate = sead::HashCRC32::calcStringHash("Rotate");
|
||||||
static const u32 sCrc32_ControlPoints = sead::HashCRC32::calcStringHash("ControlPoints");
|
Scale = sead::HashCRC32::calcStringHash("Scale");
|
||||||
static const u32 sCrc32_Junctions = sead::HashCRC32::calcStringHash("Junctions");
|
Translate = sead::HashCRC32::calcStringHash("Translate");
|
||||||
|
RailPoints = sead::HashCRC32::calcStringHash("RailPoints");
|
||||||
|
ControlPoints = sead::HashCRC32::calcStringHash("ControlPoints");
|
||||||
|
Junctions = sead::HashCRC32::calcStringHash("Junctions");
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 SRTHash;
|
||||||
|
u32 Index;
|
||||||
|
u32 HashId;
|
||||||
|
u32 DestUnitHashId;
|
||||||
|
u32 IsClosed;
|
||||||
|
u32 OnlyOne;
|
||||||
|
u32 LocationPosX;
|
||||||
|
u32 LocationPosZ;
|
||||||
|
u32 NextDistance;
|
||||||
|
u32 PrevDistance;
|
||||||
|
u32 RailType;
|
||||||
|
u32 UniqueName;
|
||||||
|
u32 UnitConfigName;
|
||||||
|
u32 CheckPointName;
|
||||||
|
u32 EntryPointName;
|
||||||
|
u32 DefinitionName;
|
||||||
|
u32 Objs;
|
||||||
|
u32 Rails;
|
||||||
|
u32 LinksToObj;
|
||||||
|
u32 LinksToRail;
|
||||||
|
u32 Rotate;
|
||||||
|
u32 Scale;
|
||||||
|
u32 Translate;
|
||||||
|
u32 RailPoints;
|
||||||
|
u32 ControlPoints;
|
||||||
|
u32 Junctions;
|
||||||
|
};
|
||||||
|
const KeyHashes sHashes;
|
||||||
|
} // namespace
|
||||||
|
|
||||||
MubinIter::MubinIter() : ByamlIter() {}
|
MubinIter::MubinIter() : ByamlIter() {}
|
||||||
|
|
||||||
|
@ -37,7 +71,7 @@ MubinIter::MubinIter(const u8* data) : ByamlIter(data) {}
|
||||||
bool MubinIter::tryGetParamUInt8ByKey(u8* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamUInt8ByKey(u8* value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
|
|
||||||
if (sCrc32_SRTHash == hash || sCrc32_Index == hash) {
|
if (sHashes.SRTHash == hash || sHashes.Index == hash) {
|
||||||
s32 x = 0;
|
s32 x = 0;
|
||||||
if (!tryGetIntByKey(&x, key.cstr()))
|
if (!tryGetIntByKey(&x, key.cstr()))
|
||||||
return false;
|
return false;
|
||||||
|
@ -57,7 +91,7 @@ bool MubinIter::tryGetParamUInt8ByKey(u8* value, const sead::SafeString& key) co
|
||||||
|
|
||||||
bool MubinIter::tryGetParamIntByKey(s32* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamIntByKey(s32* value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_SRTHash == hash || sCrc32_Index == hash)
|
if (sHashes.SRTHash == hash || sHashes.Index == hash)
|
||||||
return tryGetIntByKey(value, key.cstr());
|
return tryGetIntByKey(value, key.cstr());
|
||||||
|
|
||||||
al::ByamlIter iter;
|
al::ByamlIter iter;
|
||||||
|
@ -66,7 +100,7 @@ bool MubinIter::tryGetParamIntByKey(s32* value, const sead::SafeString& key) con
|
||||||
|
|
||||||
bool MubinIter::tryGetParamUIntByKey(u32* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamUIntByKey(u32* value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_HashId == hash || sCrc32_DestUnitHashId == hash)
|
if (sHashes.HashId == hash || sHashes.DestUnitHashId == hash)
|
||||||
return tryGetUIntByKey(value, key.cstr());
|
return tryGetUIntByKey(value, key.cstr());
|
||||||
|
|
||||||
al::ByamlIter iter;
|
al::ByamlIter iter;
|
||||||
|
@ -75,8 +109,8 @@ bool MubinIter::tryGetParamUIntByKey(u32* value, const sead::SafeString& key) co
|
||||||
|
|
||||||
bool MubinIter::tryGetParamFloatByKey(f32* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamFloatByKey(f32* value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_LocationPosX == hash || sCrc32_LocationPosZ == hash || sCrc32_NextDistance == hash ||
|
if (sHashes.LocationPosX == hash || sHashes.LocationPosZ == hash ||
|
||||||
sCrc32_PrevDistance == hash) {
|
sHashes.NextDistance == hash || sHashes.PrevDistance == hash) {
|
||||||
return tryGetFloatByKey(value, key.cstr());
|
return tryGetFloatByKey(value, key.cstr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +120,7 @@ bool MubinIter::tryGetParamFloatByKey(f32* value, const sead::SafeString& key) c
|
||||||
|
|
||||||
bool MubinIter::tryGetParamBoolByKey(bool* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamBoolByKey(bool* value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_IsClosed == hash || sCrc32_OnlyOne == hash)
|
if (sHashes.IsClosed == hash || sHashes.OnlyOne == hash)
|
||||||
return tryGetBoolByKey(value, key.cstr());
|
return tryGetBoolByKey(value, key.cstr());
|
||||||
|
|
||||||
al::ByamlIter iter;
|
al::ByamlIter iter;
|
||||||
|
@ -95,9 +129,9 @@ bool MubinIter::tryGetParamBoolByKey(bool* value, const sead::SafeString& key) c
|
||||||
|
|
||||||
bool MubinIter::tryGetParamStringByKey(const char** value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamStringByKey(const char** value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_RailType == hash || sCrc32_UniqueName == hash || sCrc32_UnitConfigName == hash ||
|
if (sHashes.RailType == hash || sHashes.UniqueName == hash || sHashes.UnitConfigName == hash ||
|
||||||
sCrc32_CheckPointName == hash || sCrc32_EntryPointName == hash ||
|
sHashes.CheckPointName == hash || sHashes.EntryPointName == hash ||
|
||||||
sCrc32_DefinitionName == hash) {
|
sHashes.DefinitionName == hash) {
|
||||||
return tryGetStringByKey(value, key.cstr());
|
return tryGetStringByKey(value, key.cstr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,10 +145,10 @@ bool MubinIter::tryGetIterByIndex(MubinIter* iter, s32 index) const {
|
||||||
|
|
||||||
bool MubinIter::tryGetParamIterByKey(MubinIter* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetParamIterByKey(MubinIter* value, const sead::SafeString& key) const {
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_Objs == hash || sCrc32_Rails == hash || sCrc32_LinksToObj == hash ||
|
if (sHashes.Objs == hash || sHashes.Rails == hash || sHashes.LinksToObj == hash ||
|
||||||
sCrc32_LinksToRail == hash || sCrc32_Rotate == hash || sCrc32_Scale == hash ||
|
sHashes.LinksToRail == hash || sHashes.Rotate == hash || sHashes.Scale == hash ||
|
||||||
sCrc32_Translate == hash || sCrc32_RailPoints == hash || sCrc32_ControlPoints == hash ||
|
sHashes.Translate == hash || sHashes.RailPoints == hash || sHashes.ControlPoints == hash ||
|
||||||
sCrc32_Junctions == hash) {
|
sHashes.Junctions == hash) {
|
||||||
return tryGetIterByKey(value, key.cstr());
|
return tryGetIterByKey(value, key.cstr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,10 +167,10 @@ bool MubinIter::isValid() const {
|
||||||
bool MubinIter::tryGetFloatArrayByKey(f32* value, const sead::SafeString& key) const {
|
bool MubinIter::tryGetFloatArrayByKey(f32* value, const sead::SafeString& key) const {
|
||||||
al::ByamlIter iter;
|
al::ByamlIter iter;
|
||||||
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
const u32 hash = sead::HashCRC32::calcStringHash(key.cstr());
|
||||||
if (sCrc32_Objs == hash || sCrc32_Rails == hash || sCrc32_LinksToObj == hash ||
|
if (sHashes.Objs == hash || sHashes.Rails == hash || sHashes.LinksToObj == hash ||
|
||||||
sCrc32_LinksToRail == hash || sCrc32_Rotate == hash || sCrc32_Scale == hash ||
|
sHashes.LinksToRail == hash || sHashes.Rotate == hash || sHashes.Scale == hash ||
|
||||||
sCrc32_Translate == hash || sCrc32_RailPoints == hash || sCrc32_ControlPoints == hash ||
|
sHashes.Translate == hash || sHashes.RailPoints == hash || sHashes.ControlPoints == hash ||
|
||||||
sCrc32_Junctions == hash) {
|
sHashes.Junctions == hash) {
|
||||||
if (!tryGetIterByKey(&iter, key.cstr()))
|
if (!tryGetIterByKey(&iter, key.cstr()))
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue