mirror of https://github.com/zeldaret/botw.git
ksys/gdt: Add reset wrappers to Manager and CommonFlags
This commit is contained in:
parent
b4178ad2b9
commit
fc4536b0d3
|
@ -53523,12 +53523,12 @@
|
|||
0x00000071008e4098,getFlag_100enemy_Activated,168,_ZN4ksys3gdt26getFlag_100enemy_ActivatedEb
|
||||
0x00000071008e4140,getBoolFlag,168,_ZN4ksys3gdt18getFlagGenericBoolENS0_10FlagHandleEb
|
||||
0x00000071008e41e8,getIntFlag,168,_ZN4ksys3gdt17getFlagGenericS32ENS0_10FlagHandleEb
|
||||
0x00000071008e4290,gdt::resetS32,276,
|
||||
0x00000071008e4290,gdt::resetS32,276,_ZN4ksys3gdt8resetS32ENS0_10FlagHandleEb?
|
||||
0x00000071008e43a4,getFlag_100enemy_IsPlayNow_ActivatedDemo,172,_ZN4ksys3gdt40getFlag_100enemy_IsPlayNow_ActivatedDemoEb
|
||||
0x00000071008e4450,sub_71008E4450,172,_ZN4ksys3gdt45getFlag_100enemy_KillMasterSwordBaseAttentionEb
|
||||
0x00000071008e44fc,sub_71008E44FC,180,_ZN4ksys3gdt45setFlag_100enemy_KillMasterSwordBaseAttentionEbb
|
||||
0x00000071008e45b0,getFlag_100enemy_SwordPower_StartTmp,172,_ZN4ksys3gdt36getFlag_100enemy_SwordPower_StartTmpEb
|
||||
0x00000071008e465c,sub_71008E465C,276,
|
||||
0x00000071008e465c,sub_71008E465C,276,_ZN4ksys3gdt10resetStr64ENS0_10FlagHandleEb?
|
||||
0x00000071008e4770,getFlag_ActorName_SeakSensor_Slot0,152,_ZN4ksys3gdt34getFlag_ActorName_SeakSensor_Slot0EPPKcb
|
||||
0x00000071008e4808,setFlag_ActorName_SeakSensor_Slot0,212,_ZN4ksys3gdt34setFlag_ActorName_SeakSensor_Slot0ERKN4sead14SafeStringBaseIcEEb
|
||||
0x00000071008e48dc,resetFlagMaybe_ActorName_SeakSensor_Slot0,24,
|
||||
|
@ -53536,7 +53536,7 @@
|
|||
0x00000071008e4994,setFlag_AlbumPictureActorName,224,_ZN4ksys3gdt29setFlag_AlbumPictureActorNameERKN4sead14SafeStringBaseIcEEib
|
||||
0x00000071008e4a74,getFlag_AlbumPictureIndex,180,_ZN4ksys3gdt25getFlag_AlbumPictureIndexEib
|
||||
0x00000071008e4b28,sub_71008E4B28,192,_ZN4ksys3gdt25setFlag_AlbumPictureIndexEiib
|
||||
0x00000071008e4be8,sub_71008E4BE8,300,
|
||||
0x00000071008e4be8,sub_71008E4BE8,300,_ZN4ksys3gdt8resetS32ENS0_10FlagHandleEib?
|
||||
0x00000071008e4d14,sub_71008E4D14,180,_ZN4ksys3gdt24getFlag_AlbumPictureSizeEib
|
||||
0x00000071008e4dc8,sub_71008E4DC8,192,
|
||||
0x00000071008e4e88,getFlag_AlbumSaveDistrictName,160,_ZN4ksys3gdt29getFlag_AlbumSaveDistrictNameEPPKcib
|
||||
|
@ -53547,7 +53547,7 @@
|
|||
0x00000071008e5234,setFlag_AmiiboItemOnOff,180,_ZN4ksys3gdt23setFlag_AmiiboItemOnOffEbb
|
||||
0x00000071008e52e8,getFlag_AnimalMaster_Appearance,172,_ZN4ksys3gdt31getFlag_AnimalMaster_AppearanceEb
|
||||
0x00000071008e5394,sub_71008E5394,172,_ZN4ksys3gdt28getFlag_AoC_HardMode_EnabledEb
|
||||
0x00000071008e5440,sub_71008E5440,276,
|
||||
0x00000071008e5440,sub_71008E5440,276,_ZN4ksys3gdt8resetF32ENS0_10FlagHandleEb?
|
||||
0x00000071008e5554,getFlag_App_Map_ForceSetScaleLevelWhenMiniMap,172,_ZN4ksys3gdt45getFlag_App_Map_ForceSetScaleLevelWhenMiniMapEb
|
||||
0x00000071008e5600,sub_71008E5600,180,_ZN4ksys3gdt45setFlag_App_Map_ForceSetScaleLevelWhenMiniMapEib
|
||||
0x00000071008e56b4,sub_71008E56B4,212,_ZN4ksys3gdt32setFlag_App_Map_WarpLocationNameERKN4sead14SafeStringBaseIcEEb
|
||||
|
@ -53906,7 +53906,8 @@
|
|||
0x00000071008f40ac,sub_71008F40AC,28,
|
||||
0x00000071008f40c8,sub_71008F40C8,160,_ZN4ksys3gdt25getFlag_MapApp_MapIconPosEPN4sead7Vector3IfEEib
|
||||
0x00000071008f4168,sub_71008F4168,196,_ZN4ksys3gdt25setFlag_MapApp_MapIconPosERKN4sead7Vector3IfEEib
|
||||
0x00000071008f422c,sub_71008F422C,328,
|
||||
0x00000071008f422c,sub_71008F422C,0x1c,
|
||||
0x00000071008f4248,_ZN4ksys3gdt10resetVec3fENS0_10FlagHandleEib,0x12c,_ZN4ksys3gdt10resetVec3fENS0_10FlagHandleEib?
|
||||
0x00000071008f4374,sub_71008F4374,160,_ZN4ksys3gdt37getFlag_MapApp_PointGuideInvisibleKeyEPPKcib
|
||||
0x00000071008f4414,sub_71008F4414,160,_ZN4ksys3gdt28getFlag_MapApp_PointGuidePosEPN4sead7Vector3IfEEib
|
||||
0x00000071008f44b4,sub_71008F44B4,160,_ZN4ksys3gdt35getFlag_MapApp_PointGuideVisibleKeyEPPKcib
|
||||
|
|
Can't render this file because it is too large.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -160,4 +160,28 @@ GDT_SET_FLAG_(setVec4f, const sead::Vector4f&)
|
|||
|
||||
#undef GDT_SET_FLAG_
|
||||
|
||||
#define GDT_RESET_FLAG_(NAME) \
|
||||
[[gnu::noinline]] inline void NAME(FlagHandle handle, bool debug = false) { \
|
||||
auto* mgr = Manager::instance(); \
|
||||
if (mgr) \
|
||||
mgr->NAME(handle, debug); \
|
||||
} \
|
||||
[[gnu::noinline]] inline void NAME(FlagHandle handle, s32 sub_idx, bool debug = false) { \
|
||||
auto* mgr = Manager::instance(); \
|
||||
if (mgr) \
|
||||
mgr->NAME(handle, debug, sub_idx); \
|
||||
}
|
||||
|
||||
GDT_RESET_FLAG_(resetBool)
|
||||
GDT_RESET_FLAG_(resetS32)
|
||||
GDT_RESET_FLAG_(resetF32)
|
||||
GDT_RESET_FLAG_(resetStr)
|
||||
GDT_RESET_FLAG_(resetStr64)
|
||||
GDT_RESET_FLAG_(resetStr256)
|
||||
GDT_RESET_FLAG_(resetVec2f)
|
||||
GDT_RESET_FLAG_(resetVec3f)
|
||||
GDT_RESET_FLAG_(resetVec4f)
|
||||
|
||||
#undef GDT_SET_FLAG_
|
||||
|
||||
} // namespace ksys::gdt
|
||||
|
|
|
@ -145,6 +145,30 @@ public:
|
|||
|
||||
#undef PROXY_GET_SET_IMPL_
|
||||
|
||||
#define PROXY_RESET_IMPL_(NAME) \
|
||||
bool NAME(s32 idx) { return getBuffer1()->NAME(idx, mRef.mCheckPermissions); } \
|
||||
bool NAME(s32 idx, s32 sub_idx) { \
|
||||
return getBuffer1()->NAME(idx, sub_idx, mRef.mCheckPermissions); \
|
||||
} \
|
||||
bool NAME(const sead::SafeString& name) { \
|
||||
return getBuffer1()->NAME(name, mRef.mCheckPermissions); \
|
||||
} \
|
||||
bool NAME(const sead::SafeString& name, s32 sub_idx) { \
|
||||
return getBuffer1()->NAME(name, sub_idx, mRef.mCheckPermissions); \
|
||||
}
|
||||
|
||||
PROXY_RESET_IMPL_(resetBool)
|
||||
PROXY_RESET_IMPL_(resetS32)
|
||||
PROXY_RESET_IMPL_(resetF32)
|
||||
PROXY_RESET_IMPL_(resetStr)
|
||||
PROXY_RESET_IMPL_(resetStr64)
|
||||
PROXY_RESET_IMPL_(resetStr256)
|
||||
PROXY_RESET_IMPL_(resetVec2f)
|
||||
PROXY_RESET_IMPL_(resetVec3f)
|
||||
PROXY_RESET_IMPL_(resetVec4f)
|
||||
|
||||
#undef PROXY_RESET_IMPL_
|
||||
|
||||
private:
|
||||
friend class TriggerParamRef;
|
||||
Proxy(const TriggerParamRef& ref, bool param1) : mUseParam1(param1), mRef(ref) {}
|
||||
|
@ -345,16 +369,14 @@ public:
|
|||
\
|
||||
bool NAME(TRAITS::WrapperArgType value, FlagHandle handle, bool debug) { \
|
||||
if (debug) { \
|
||||
setBool(true, "IsChangedByDebug"); \
|
||||
mBitFlags.set(BitFlag::_800); \
|
||||
onChangedByDebug(); \
|
||||
return NAME##NoCheckForce(TRAITS::convertValue(value), handle); \
|
||||
} \
|
||||
return NAME(TRAITS::convertValue(value), handle); \
|
||||
} \
|
||||
bool NAME(TRAITS::WrapperArgType value, const sead::SafeString& name, bool debug) { \
|
||||
if (debug) { \
|
||||
setBool(true, "IsChangedByDebug"); \
|
||||
mBitFlags.set(BitFlag::_800); \
|
||||
onChangedByDebug(); \
|
||||
return NAME##NoCheckForce(TRAITS::convertValue(value), name); \
|
||||
} \
|
||||
return NAME(TRAITS::convertValue(value), name); \
|
||||
|
@ -362,8 +384,7 @@ public:
|
|||
\
|
||||
bool NAME(TRAITS::WrapperArgType value, FlagHandle handle, bool debug, s32 sub_idx) { \
|
||||
if (debug) { \
|
||||
setBool(true, "IsChangedByDebug"); \
|
||||
mBitFlags.set(BitFlag::_800); \
|
||||
onChangedByDebug(); \
|
||||
return NAME##NoCheckForce(TRAITS::convertValue(value), handle, sub_idx); \
|
||||
} \
|
||||
return NAME(TRAITS::convertValue(value), handle, sub_idx); \
|
||||
|
@ -371,8 +392,7 @@ public:
|
|||
bool NAME(TRAITS::WrapperArgType value, const sead::SafeString& name, bool debug, \
|
||||
s32 sub_idx) { \
|
||||
if (debug) { \
|
||||
setBool(true, "IsChangedByDebug"); \
|
||||
mBitFlags.set(BitFlag::_800); \
|
||||
onChangedByDebug(); \
|
||||
return NAME##NoCheckForce(TRAITS::convertValue(value), name, sub_idx); \
|
||||
} \
|
||||
return NAME(TRAITS::convertValue(value), name, sub_idx); \
|
||||
|
@ -390,6 +410,55 @@ public:
|
|||
|
||||
#undef GDT_SET_
|
||||
|
||||
#define GDT_RESET_(NAME) \
|
||||
KSYS_ALWAYS_INLINE bool NAME##_(FlagHandle handle, bool debug) { \
|
||||
if (mBitFlags.isOn(BitFlag::_40000)) \
|
||||
return false; \
|
||||
return unwrapHandle<false>( \
|
||||
handle, debug, [&](u32 idx, TriggerParamRef& ref) { return ref.get().NAME(idx); }); \
|
||||
} \
|
||||
inline bool NAME(FlagHandle handle) { return NAME##_(handle, false); } \
|
||||
inline bool NAME##NoCheck(FlagHandle handle) { return NAME##_(handle, true); } \
|
||||
\
|
||||
KSYS_ALWAYS_INLINE bool NAME##_(FlagHandle handle, bool debug, s32 sub_idx) { \
|
||||
if (mBitFlags.isOn(BitFlag::_40000)) \
|
||||
return false; \
|
||||
return unwrapHandle<false>(handle, debug, [&](u32 idx, TriggerParamRef& ref) { \
|
||||
return ref.get().NAME(idx, sub_idx); \
|
||||
}); \
|
||||
} \
|
||||
inline bool NAME(FlagHandle handle, s32 sub_idx) { return NAME##_(handle, false, sub_idx); } \
|
||||
inline bool NAME##NoCheck(FlagHandle handle, s32 sub_idx) { \
|
||||
return NAME##_(handle, true, sub_idx); \
|
||||
} \
|
||||
\
|
||||
inline bool NAME(FlagHandle handle, bool debug) { \
|
||||
if (debug) { \
|
||||
onChangedByDebug(); \
|
||||
return NAME##NoCheck(handle); \
|
||||
} \
|
||||
return NAME(handle); \
|
||||
} \
|
||||
inline bool NAME(FlagHandle handle, bool debug, s32 sub_idx) { \
|
||||
if (debug) { \
|
||||
onChangedByDebug(); \
|
||||
return NAME##NoCheck(handle, sub_idx); \
|
||||
} \
|
||||
return NAME(handle, sub_idx); \
|
||||
}
|
||||
|
||||
GDT_RESET_(resetBool)
|
||||
GDT_RESET_(resetS32)
|
||||
GDT_RESET_(resetF32)
|
||||
GDT_RESET_(resetStr)
|
||||
GDT_RESET_(resetStr64)
|
||||
GDT_RESET_(resetStr256)
|
||||
GDT_RESET_(resetVec2f)
|
||||
GDT_RESET_(resetVec3f)
|
||||
GDT_RESET_(resetVec4f)
|
||||
|
||||
#undef GDT_RESET_
|
||||
|
||||
void init(sead::Heap* heap, sead::Framework* framework);
|
||||
|
||||
void addReinitCallback(ReinitSignal::Slot& slot);
|
||||
|
@ -467,6 +536,11 @@ private:
|
|||
unwrapHandle<Write, false>(handle, fn);
|
||||
}
|
||||
|
||||
void onChangedByDebug() {
|
||||
setBool(true, "IsChangedByDebug");
|
||||
mBitFlags.set(BitFlag::_800);
|
||||
}
|
||||
|
||||
void loadGameData(const sead::SafeString& path);
|
||||
void loadShopGameDataInfo(const sead::SafeString& path);
|
||||
void unloadResources();
|
||||
|
|
|
@ -249,7 +249,8 @@ s32 getFlagGenericS32(FlagHandle handle, bool debug = false);
|
|||
f"void getFlag_{name}({info.arg_type}* value, s32 idx, bool debug = false);\n")
|
||||
# Setter
|
||||
f.write(f"void setFlag_{name}({info.get_setter_arg_type()} value, s32 idx, bool debug = false);\n")
|
||||
# TODO: resetter (see resetFlag_ActorName_SeakSensor_Slot0 for an example)
|
||||
# Resetter
|
||||
f.write(f"void resetFlag_{name}(s32 idx, bool debug = false);\n")
|
||||
else:
|
||||
# Getter
|
||||
if info.is_value_inline():
|
||||
|
@ -260,8 +261,8 @@ s32 getFlagGenericS32(FlagHandle handle, bool debug = false);
|
|||
f"void getFlag_{name}({info.arg_type}* value, bool debug = false);\n")
|
||||
# Setter
|
||||
f.write(f"void setFlag_{name}({info.get_setter_arg_type()} value, bool debug = false);\n")
|
||||
# TODO: resetter (see resetFlag_ActorName_SeakSensor_Slot0 for an example)
|
||||
|
||||
# Resetter
|
||||
f.write(f"void resetFlag_{name}(bool debug = false);\n")
|
||||
|
||||
f.write("""\
|
||||
|
||||
|
@ -299,7 +300,10 @@ s32 getFlagGenericS32(FlagHandle handle, bool debug) { return getS32(handle, deb
|
|||
f.write(
|
||||
f"void setFlag_{name}({info.get_setter_arg_type()} value, s32 idx, bool debug) {{ "
|
||||
f"{info.get_setter_fn_name()}(value, flag_{name}(), idx, debug); }}\n")
|
||||
# TODO: resetter (see resetFlag_ActorName_SeakSensor_Slot0 for an example)
|
||||
# Resetter
|
||||
f.write(
|
||||
f"void resetFlag_{name}(s32 idx, bool debug) {{ "
|
||||
f"re{info.get_setter_fn_name()}(flag_{name}(), idx, debug); }}\n")
|
||||
else:
|
||||
# Getter
|
||||
if info.is_value_inline():
|
||||
|
@ -312,7 +316,9 @@ s32 getFlagGenericS32(FlagHandle handle, bool debug) { return getS32(handle, deb
|
|||
f.write(
|
||||
f"void setFlag_{name}({info.get_setter_arg_type()} value, bool debug) {{ "
|
||||
f"{info.get_setter_fn_name()}(value, flag_{name}(), debug); }}\n")
|
||||
# TODO: resetter (see resetFlag_ActorName_SeakSensor_Slot0 for an example)
|
||||
# Resetter
|
||||
f.write(
|
||||
f"void resetFlag_{name}(bool debug) {{ re{info.get_setter_fn_name()}(flag_{name}(), debug); }}\n")
|
||||
|
||||
f.write("""\
|
||||
|
||||
|
|
Loading…
Reference in New Issue