From 5328fd2782464cc8170275450db7f07944475855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 22 Jan 2021 16:52:26 +0100 Subject: [PATCH] Move Damage to Game/ and add more DamageInfoMgr members Damage stuff seems to be considered game code rather than KingSystem code based on the function order in the executable and on the fact that the Damage code uses other components that are known to be in Game/U-King rather than in KingSystem. --- data/uking_functions.csv | 122 +++++++++--------- src/Game/CMakeLists.txt | 1 + .../Damage/CMakeLists.txt | 3 +- .../Damage/dmgDamageCallback.h | 6 +- .../Damage/dmgDamageManagerBase.cpp | 23 ++-- .../Damage/dmgDamageManagerBase.h | 21 ++- src/Game/Damage/dmgInfoManager.cpp | 7 + src/Game/Damage/dmgInfoManager.h | 48 +++++++ .../Damage/dmgStruct20.cpp | 6 +- src/{KingSystem => Game}/Damage/dmgStruct20.h | 4 +- src/KingSystem/CMakeLists.txt | 1 - src/KingSystem/Damage/dmgDamageInfoManager.h | 33 ----- 12 files changed, 149 insertions(+), 126 deletions(-) rename src/{KingSystem => Game}/Damage/CMakeLists.txt (77%) rename src/{KingSystem => Game}/Damage/dmgDamageCallback.h (79%) rename src/{KingSystem => Game}/Damage/dmgDamageManagerBase.cpp (91%) rename src/{KingSystem => Game}/Damage/dmgDamageManagerBase.h (89%) create mode 100644 src/Game/Damage/dmgInfoManager.cpp create mode 100644 src/Game/Damage/dmgInfoManager.h rename src/{KingSystem => Game}/Damage/dmgStruct20.cpp (93%) rename src/{KingSystem => Game}/Damage/dmgStruct20.h (96%) delete mode 100644 src/KingSystem/Damage/dmgDamageInfoManager.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 24780ae5..8caa0380 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -210,33 +210,33 @@ 0x0000007100003f48,DamageMgrBow::m54,164, 0x0000007100003fec,DamageMgrBow::m0,132, 0x0000007100004070,DamageMgrBow::m1,92, -0x00000071000040cc,DamageMgrBase::m2_null,4,_ZN4ksys3dmg17DamageManagerBaseD2Ev +0x00000071000040cc,DamageMgrBase::m2_null,4,_ZN5uking3dmg17DamageManagerBaseD2Ev 0x00000071000040d0,j__ZdlPv_0,4, -0x00000071000040d4,DamageMgrBase::m5,8,_ZN4ksys3dmg17DamageManagerBase10getField48Ev -0x00000071000040dc,DamageMgrBase::getMinDmg,8,_ZN4ksys3dmg17DamageManagerBase9getMinDmgEv -0x00000071000040e4,DamageMgrBase::m7,8,_ZN4ksys3dmg17DamageManagerBase10getField50Ev -0x00000071000040ec,DamageMgrBase::m9,8,_ZN4ksys3dmg17DamageManagerBase16checkDamageFlagsEv -0x00000071000040f4,DamageMgrBase::m10,8,_ZN4ksys3dmg17DamageManagerBase9getFlags2Ev -0x00000071000040fc,DamageMgrBase::m13,8,_ZN4ksys3dmg17DamageManagerBase3m13Ev -0x0000007100004104,DamageMgrBase::m14,8,_ZN4ksys3dmg17DamageManagerBase3m14Ev -0x000000710000410c,DamageMgrBase::m16,8,_ZN4ksys3dmg17DamageManagerBase3m16Ev -0x0000007100004114,DamageMgrBase::m17_null,4,_ZN4ksys3dmg17DamageManagerBase3m17Ev +0x00000071000040d4,DamageMgrBase::m5,8,_ZN5uking3dmg17DamageManagerBase10getField48Ev +0x00000071000040dc,DamageMgrBase::getMinDmg,8,_ZN5uking3dmg17DamageManagerBase9getMinDmgEv +0x00000071000040e4,DamageMgrBase::m7,8,_ZN5uking3dmg17DamageManagerBase10getField50Ev +0x00000071000040ec,DamageMgrBase::m9,8,_ZN5uking3dmg17DamageManagerBase16checkDamageFlagsEv +0x00000071000040f4,DamageMgrBase::m10,8,_ZN5uking3dmg17DamageManagerBase9getFlags2Ev +0x00000071000040fc,DamageMgrBase::m13,8,_ZN5uking3dmg17DamageManagerBase3m13Ev +0x0000007100004104,DamageMgrBase::m14,8,_ZN5uking3dmg17DamageManagerBase3m14Ev +0x000000710000410c,DamageMgrBase::m16,8,_ZN5uking3dmg17DamageManagerBase3m16Ev +0x0000007100004114,DamageMgrBase::m17_null,4,_ZN5uking3dmg17DamageManagerBase3m17Ev 0x0000007100004118,DamageMgrBow::m18,8, -0x0000007100004120,DamageMgrBase::initCallbacks,8,_ZN4ksys3dmg17DamageManagerBase13initCallbacksEPN4sead4HeapE -0x0000007100004128,DamageMgrBase::m21_null,4,_ZN4ksys3dmg17DamageManagerBase10preDelete2Ev -0x000000710000412c,DamageMgrBase::m25,8,_ZN4ksys3dmg17DamageManagerBase3m25Ev -0x0000007100004134,DamageMgrBase::m26,8,_ZN4ksys3dmg17DamageManagerBase3m26Ev -0x000000710000413c,DamageMgrBase::m31,8,_ZN4ksys3dmg17DamageManagerBase3m31Ev -0x0000007100004144,DamageMgrBase::m32,8,_ZN4ksys3dmg17DamageManagerBase3m32Ev -0x000000710000414c,DamageMgrBase::m34,8,_ZN4ksys3dmg17DamageManagerBase26tgSensorMaterialOnHitMaybeEv -0x0000007100004154,DamageMgrBase::m35,8,_ZN4ksys3dmg17DamageManagerBase3m35Ev -0x000000710000415c,DamageMgrBase::m38,8,_ZN4ksys3dmg17DamageManagerBase3m38Ev -0x0000007100004164,DamageMgrBase::m40,8,_ZN4ksys3dmg17DamageManagerBase3m40Ev -0x000000710000416c,DamageMgrBase::m41,8,_ZN4ksys3dmg17DamageManagerBase3m41Ev -0x0000007100004174,DamageMgrBase::m42,8,_ZN4ksys3dmg17DamageManagerBase3m42Ev -0x000000710000417c,DamageMgrBase::m43_null,4,_ZN4ksys3dmg17DamageManagerBase3m43Ev +0x0000007100004120,DamageMgrBase::initCallbacks,8,_ZN5uking3dmg17DamageManagerBase13initCallbacksEPN4sead4HeapE +0x0000007100004128,DamageMgrBase::m21_null,4,_ZN5uking3dmg17DamageManagerBase10preDelete2Ev +0x000000710000412c,DamageMgrBase::m25,8,_ZN5uking3dmg17DamageManagerBase3m25Ev +0x0000007100004134,DamageMgrBase::m26,8,_ZN5uking3dmg17DamageManagerBase3m26Ev +0x000000710000413c,DamageMgrBase::m31,8,_ZN5uking3dmg17DamageManagerBase3m31Ev +0x0000007100004144,DamageMgrBase::m32,8,_ZN5uking3dmg17DamageManagerBase3m32Ev +0x000000710000414c,DamageMgrBase::m34,8,_ZN5uking3dmg17DamageManagerBase26tgSensorMaterialOnHitMaybeEv +0x0000007100004154,DamageMgrBase::m35,8,_ZN5uking3dmg17DamageManagerBase3m35Ev +0x000000710000415c,DamageMgrBase::m38,8,_ZN5uking3dmg17DamageManagerBase3m38Ev +0x0000007100004164,DamageMgrBase::m40,8,_ZN5uking3dmg17DamageManagerBase3m40Ev +0x000000710000416c,DamageMgrBase::m41,8,_ZN5uking3dmg17DamageManagerBase3m41Ev +0x0000007100004174,DamageMgrBase::m42,8,_ZN5uking3dmg17DamageManagerBase3m42Ev +0x000000710000417c,DamageMgrBase::m43_null,4,_ZN5uking3dmg17DamageManagerBase3m43Ev 0x0000007100004180,DamageMgr::m44,8, -0x0000007100004188,DamageMgrBase::onApplyDamage,4,_ZN4ksys3dmg17DamageManagerBase13onApplyDamageEv +0x0000007100004188,DamageMgrBase::onApplyDamage,4,_ZN5uking3dmg17DamageManagerBase13onApplyDamageEv 0x000000710000418c,DamageMgrBow::m51,8, 0x0000007100004194,DamageMgrBow::m52,8, 0x000000710000419c,DamageMgrBow::m53,8, @@ -639,11 +639,11 @@ 0x000000710001bd9c,DamageMgrWeapon::rtti1,288, 0x000000710001bebc,sub_710001BEBC,92, 0x000000710001bf18,j__ZdlPv_12,4, -0x000000710001bf1c,DamageMgrBase::m18,8,_ZN4ksys3dmg17DamageManagerBase15getNumCallbacksEv -0x000000710001bf24,DamageMgrBase::m22_null,4,_ZN4ksys3dmg17DamageManagerBase3m22Ev -0x000000710001bf28,DamageMgrBase::m27,8,_ZN4ksys3dmg17DamageManagerBase11getPositionEv -0x000000710001bf30,DamageMgrBase::m28,8,_ZN4ksys3dmg17DamageManagerBase3m28Ev -0x000000710001bf38,DamageMgrBase::m33,8,_ZN4ksys3dmg17DamageManagerBase3m33Ev +0x000000710001bf1c,DamageMgrBase::m18,8,_ZN5uking3dmg17DamageManagerBase15getNumCallbacksEv +0x000000710001bf24,DamageMgrBase::m22_null,4,_ZN5uking3dmg17DamageManagerBase3m22Ev +0x000000710001bf28,DamageMgrBase::m27,8,_ZN5uking3dmg17DamageManagerBase11getPositionEv +0x000000710001bf30,DamageMgrBase::m28,8,_ZN5uking3dmg17DamageManagerBase3m28Ev +0x000000710001bf38,DamageMgrBase::m33,8,_ZN5uking3dmg17DamageManagerBase3m33Ev 0x000000710001bf40,nullsub_55,4, 0x000000710001bf44,sub_710001BF44,8, 0x000000710001bf4c,DamageMgrWeapon::m52,8, @@ -40168,9 +40168,9 @@ 0x0000007100670fe4,sub_7100670FE4,960, 0x00000071006713a4,sub_71006713A4,656, 0x0000007100671634,sub_7100671634,8, -0x000000710067163c,_ZN3agl3utl23DynamicTextureAllocator18SingletonDisposer_D2Ev,100, -0x00000071006716a0,sub_71006716A0,108, -0x000000710067170c,DamageInfoMgr::createInstance,136, +0x000000710067163c,_ZN5uking3dmg13DamageInfoMgr18SingletonDisposer_D2Ev,100,_ZN5uking3dmg13DamageInfoMgr18SingletonDisposer_D2Ev +0x00000071006716a0,sub_71006716A0,108,_ZN5uking3dmg13DamageInfoMgr18SingletonDisposer_D0Ev +0x000000710067170c,DamageInfoMgr::createInstance,136,_ZN5uking3dmg13DamageInfoMgr14createInstanceEPN4sead4HeapE 0x0000007100671794,sub_7100671794,684, 0x0000007100671a40,sub_7100671A40,36, 0x0000007100671a64,sub_7100671A64,16, @@ -45002,7 +45002,7 @@ 0x00000071006d8be4,DamageMgr::m55,516, 0x00000071006d8de8,sub_71006D8DE8,148, 0x00000071006d8e7c,sub_71006D8E7C,68, -0x00000071006d8ec0,sub_71006D8EC0,244,_ZN4ksys3dmg10Struct20_212combineMaybeEPNS0_12Struct20BaseE +0x00000071006d8ec0,sub_71006D8EC0,244,_ZN5uking3dmg10Struct20_212combineMaybeEPNS0_12Struct20BaseE 0x00000071006d8fb4,DamageMgr::rtti0,288, 0x00000071006d90d4,DamageMgr::rtti2,92, 0x00000071006d9130,DamageMgr::m2,212, @@ -45014,10 +45014,10 @@ 0x00000071006d9310,DamageMgr::m53,8, 0x00000071006d9318,sub_71006D9318,212, 0x00000071006d93ec,sub_71006D93EC,224, -0x00000071006d94cc,sub_71006D94CC,288,_ZNK4ksys3dmg10Struct20_227checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE -0x00000071006d95ec,sub_71006D95EC,92,_ZNK4ksys3dmg10Struct20_218getRuntimeTypeInfoEv -0x00000071006d9648,j__ZdlPv_292,4,_ZN4ksys3dmg10Struct20_2D0Ev -0x00000071006d964c,sub_71006D964C,24,_ZN4ksys3dmg10Struct20_25resetEv +0x00000071006d94cc,sub_71006D94CC,288,_ZNK5uking3dmg10Struct20_227checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071006d95ec,sub_71006D95EC,92,_ZNK5uking3dmg10Struct20_218getRuntimeTypeInfoEv +0x00000071006d9648,j__ZdlPv_292,4,_ZN5uking3dmg10Struct20_2D0Ev +0x00000071006d964c,sub_71006D964C,24,_ZN5uking3dmg10Struct20_25resetEv 0x00000071006d9664,j__ZdlPv_293,4, 0x00000071006d9668,sub_71006D9668,8, 0x00000071006d9670,j__ZdlPv_294,4, @@ -45026,12 +45026,12 @@ 0x00000071006d9748,sub_71006D9748,92, 0x00000071006d97a4,sub_71006D97A4,112, 0x00000071006d9814,sub_71006D9814,92, -0x00000071006d9870,Struct20::m2,20,_ZN4ksys3dmg8Struct20D2Ev +0x00000071006d9870,Struct20::m2,20,_ZN5uking3dmg8Struct20D2Ev 0x00000071006d9884,j__ZdlPv_295,4, 0x00000071006d9888,nullsub_2287,4, 0x00000071006d988c,nullsub_2288,4, -0x00000071006d9890,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3dmg8Struct20EE9isDerivedEPKNS0_9InterfaceE,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3dmg8Struct20EE9isDerivedEPKNS0_9InterfaceE -0x00000071006d991c,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3dmg12Struct20BaseEE9isDerivedEPKNS0_9InterfaceE,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3dmg12Struct20BaseEE9isDerivedEPKNS0_9InterfaceE +0x00000071006d9890,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking3dmg8Struct20EE9isDerivedEPKNS0_9InterfaceE,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking3dmg8Struct20EE9isDerivedEPKNS0_9InterfaceE +0x00000071006d991c,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking3dmg12Struct20BaseEE9isDerivedEPKNS0_9InterfaceE,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN5uking3dmg12Struct20BaseEE9isDerivedEPKNS0_9InterfaceE 0x00000071006d99a8,sub_71006D99A8,76, 0x00000071006d99f4,sub_71006D99F4,48, 0x00000071006d9a24,sub_71006D9A24,268, @@ -45166,21 +45166,21 @@ 0x00000071006dfcb0,nullsub_2297,4, 0x00000071006dfcb4,nullsub_2298,4, 0x00000071006dfcb8,nullsub_2299,4, -0x00000071006dfcbc,DamageMgrBase::allocStruct20,132,_ZN4ksys3dmg17DamageManagerBase13allocStruct20EPN4sead4HeapE -0x00000071006dfd40,DamageMgrBase::m24,76,_ZN4ksys3dmg17DamageManagerBase10preDelete1Ev -0x00000071006dfd8c,DamageMgrBase::ctor,76,_ZN4ksys3dmg17DamageManagerBaseC1EPNS_3act5ActorE? +0x00000071006dfcbc,DamageMgrBase::allocStruct20,132,_ZN5uking3dmg17DamageManagerBase13allocStruct20EPN4sead4HeapE +0x00000071006dfd40,DamageMgrBase::m24,76,_ZN5uking3dmg17DamageManagerBase10preDelete1Ev +0x00000071006dfd8c,DamageMgrBase::ctor,76,_ZN5uking3dmg17DamageManagerBaseC1EPN4ksys3act5ActorE? 0x00000071006dfdd8,DamageMgrBase::m20,96, 0x00000071006dfe38,DamageMgrBase::resetStuff,20, -0x00000071006dfe4c,DamageMgrBase::applyDamage,500,_ZN4ksys3dmg17DamageManagerBase11applyDamageERi! -0x00000071006e0040,DamageMgrBase::m46,204,_ZN4ksys3dmg17DamageManagerBase21handleDamageForPlayerEPjS2_S2_S2_S2_ -0x00000071006e010c,DamageMgrBase::addDamage,72,_ZN4ksys3dmg17DamageManagerBase9addDamageEliiiiii +0x00000071006dfe4c,DamageMgrBase::applyDamage,500,_ZN5uking3dmg17DamageManagerBase11applyDamageERi! +0x00000071006e0040,DamageMgrBase::m46,204,_ZN5uking3dmg17DamageManagerBase21handleDamageForPlayerEPjS2_S2_S2_S2_ +0x00000071006e010c,DamageMgrBase::addDamage,72,_ZN5uking3dmg17DamageManagerBase9addDamageEliiiiii 0x00000071006e0154,DamageMgrBase::isSlowTime,4, 0x00000071006e0158,DamageMgrBase::m29,324, 0x00000071006e029c,DamageMgrBase::m30,2296, -0x00000071006e0b94,DamageMgrBase::getDamage,56,_ZN4ksys3dmg17DamageManagerBase9getDamageEv -0x00000071006e0bcc,DamageMgrBase::m8,8,_ZN4ksys3dmg17DamageManagerBase10getField54Ev +0x00000071006e0b94,DamageMgrBase::getDamage,56,_ZN5uking3dmg17DamageManagerBase9getDamageEv +0x00000071006e0bcc,DamageMgrBase::m8,8,_ZN5uking3dmg17DamageManagerBase10getField54Ev 0x00000071006e0bd4,sub_71006E0BD4,100, -0x00000071006e0c38,DamageMgrBase::canTakeDamage,136,_ZN4ksys3dmg17DamageManagerBase13canTakeDamageEv +0x00000071006e0c38,DamageMgrBase::canTakeDamage,136,_ZN5uking3dmg17DamageManagerBase13canTakeDamageEv 0x00000071006e0cc0,sub_71006E0CC0,100, 0x00000071006e0d24,sub_71006E0D24,196, 0x00000071006e0de8,sub_71006E0DE8,144, @@ -45190,21 +45190,21 @@ 0x00000071006e1050,sub_71006E1050,128, 0x00000071006e10d0,sub_71006E10D0,292, 0x00000071006e11f4,sub_71006E11F4,128, -0x00000071006e1274,DamageMgrBase::m45_null,4,_ZN4ksys3dmg17DamageManagerBase3m45Ev -0x00000071006e1278,DamageMgrBase::m49,16,_ZN4ksys3dmg17DamageManagerBase3m49Ei +0x00000071006e1274,DamageMgrBase::m45_null,4,_ZN5uking3dmg17DamageManagerBase3m45Ev +0x00000071006e1278,DamageMgrBase::m49,16,_ZN5uking3dmg17DamageManagerBase3m49Ei 0x00000071006e1288,DamageMgr::getActorDamageParam,28, -0x00000071006e12a4,Struct20::m5,208,_ZN4ksys3dmg8Struct2012combineMaybeEPNS0_12Struct20BaseE +0x00000071006e12a4,Struct20::m5,208,_ZN5uking3dmg8Struct2012combineMaybeEPNS0_12Struct20BaseE 0x00000071006e1374,DamageMgrBase::m36,20, 0x00000071006e1388,DamageMgrBase::m37,20, 0x00000071006e139c,DamageMgrBase::rtti1,204, 0x00000071006e1468,DamageMgrBase::rtti2,92, -0x00000071006e14c4,DamageMgrBase::m3,4,_ZN4ksys3dmg17DamageManagerBaseD0Ev -0x00000071006e14c8,nullsub_2301,4,_ZThn56_N4ksys3dmg17DamageManagerBaseD1Ev -0x00000071006e14cc,sub_71006E14CC,8,_ZThn56_N4ksys3dmg17DamageManagerBaseD0Ev -0x00000071006e14d4,Struct20::rtti1,204,_ZNK4ksys3dmg8Struct2027checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE -0x00000071006e15a0,Struct20::rtti2,92,_ZNK4ksys3dmg8Struct2018getRuntimeTypeInfoEv -0x00000071006e15fc,j__ZdlPv_299,4,_ZN4ksys3dmg8Struct20D0Ev -0x00000071006e1600,Struct20::m4,20,_ZN4ksys3dmg8Struct205resetEv +0x00000071006e14c4,DamageMgrBase::m3,4,_ZN5uking3dmg17DamageManagerBaseD0Ev +0x00000071006e14c8,nullsub_2301,4,_ZThn56_N5uking3dmg17DamageManagerBaseD1Ev +0x00000071006e14cc,sub_71006E14CC,8,_ZThn56_N5uking3dmg17DamageManagerBaseD0Ev +0x00000071006e14d4,Struct20::rtti1,204,_ZNK5uking3dmg8Struct2027checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE +0x00000071006e15a0,Struct20::rtti2,92,_ZNK5uking3dmg8Struct2018getRuntimeTypeInfoEv +0x00000071006e15fc,j__ZdlPv_299,4,_ZN5uking3dmg8Struct20D0Ev +0x00000071006e1600,Struct20::m4,20,_ZN5uking3dmg8Struct205resetEv 0x00000071006e1614,sub_71006E1614,112, 0x00000071006e1684,sub_71006E1684,120, 0x00000071006e16fc,sub_71006E16FC,84, @@ -73242,8 +73242,8 @@ 0x0000007100d2d370,DamageMgrBase::calcMaybe,180, 0x0000007100d2d424,sub_7100D2D424,160, 0x0000007100d2d4c4,DamageMgrBase::callDamageCallbacks,152, -0x0000007100d2d55c,DamageMgrBase::addDamageCallback,80,_ZN4ksys3dmg17DamageManagerBase17addDamageCallbackEiPNS0_14DamageCallbackE -0x0000007100d2d5ac,DamageMgrBase::removeDamageCallback,220,_ZN4ksys3dmg17DamageManagerBase20removeDamageCallbackEPNS0_14DamageCallbackE +0x0000007100d2d55c,DamageMgrBase::addDamageCallback,80,_ZN5uking3dmg17DamageManagerBase17addDamageCallbackEiPNS0_14DamageCallbackE +0x0000007100d2d5ac,DamageMgrBase::removeDamageCallback,220,_ZN5uking3dmg17DamageManagerBase20removeDamageCallbackEPNS0_14DamageCallbackE 0x0000007100d2d688,sub_7100D2D688,20,_ZN4ksys3act22getSystemIsGetItemSelfEPNS0_8InfoDataEPKc 0x0000007100d2d69c,act::getSystemIsGetItemSelf,20,_ZN4ksys3act22getSystemIsGetItemSelfERKN2al9ByamlIterE 0x0000007100d2d6b0,ActorInfoData::getGeneralLife,20,_ZN4ksys3act14getGeneralLifeEPNS0_8InfoDataEPKc diff --git a/src/Game/CMakeLists.txt b/src/Game/CMakeLists.txt index 62098248..121a2a9b 100644 --- a/src/Game/CMakeLists.txt +++ b/src/Game/CMakeLists.txt @@ -1,5 +1,6 @@ add_subdirectory(Actor) add_subdirectory(AI) +add_subdirectory(Damage) add_subdirectory(DLC) add_subdirectory(UI) diff --git a/src/KingSystem/Damage/CMakeLists.txt b/src/Game/Damage/CMakeLists.txt similarity index 77% rename from src/KingSystem/Damage/CMakeLists.txt rename to src/Game/Damage/CMakeLists.txt index 93df54bb..1a590388 100644 --- a/src/KingSystem/Damage/CMakeLists.txt +++ b/src/Game/Damage/CMakeLists.txt @@ -1,8 +1,9 @@ target_sources(uking PRIVATE dmgDamageCallback.h - dmgDamageInfoManager.h dmgDamageManagerBase.h dmgDamageManagerBase.cpp + dmgInfoManager.cpp + dmgInfoManager.h dmgStruct20.h dmgStruct20.cpp ) diff --git a/src/KingSystem/Damage/dmgDamageCallback.h b/src/Game/Damage/dmgDamageCallback.h similarity index 79% rename from src/KingSystem/Damage/dmgDamageCallback.h rename to src/Game/Damage/dmgDamageCallback.h index 8dddac3f..7c7e0e4d 100644 --- a/src/KingSystem/Damage/dmgDamageCallback.h +++ b/src/Game/Damage/dmgDamageCallback.h @@ -2,9 +2,9 @@ #include -#include "KingSystem/Damage/dmgDamageManagerBase.h" +#include "Game/Damage/dmgDamageManagerBase.h" -namespace ksys::dmg { +namespace uking::dmg { class DamageManagerBase; @@ -20,4 +20,4 @@ public: u32 mEventId; }; -} // namespace ksys::dmg +} // namespace uking::dmg diff --git a/src/KingSystem/Damage/dmgDamageManagerBase.cpp b/src/Game/Damage/dmgDamageManagerBase.cpp similarity index 91% rename from src/KingSystem/Damage/dmgDamageManagerBase.cpp rename to src/Game/Damage/dmgDamageManagerBase.cpp index 51b1e68a..2a28f532 100644 --- a/src/KingSystem/Damage/dmgDamageManagerBase.cpp +++ b/src/Game/Damage/dmgDamageManagerBase.cpp @@ -1,22 +1,25 @@ -#include "KingSystem/Damage/dmgDamageManagerBase.h" +#include "Game/Damage/dmgDamageManagerBase.h" #include "Game/DLC/aoc2.h" #include "KingSystem/ActorSystem/actActor.h" #include "KingSystem/ActorSystem/actActorConstDataAccess.h" #include "KingSystem/ActorSystem/actActorParam.h" +#include "KingSystem/ActorSystem/actActorUtil.h" #include "KingSystem/ActorSystem/actLifeRecoveryInfo.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectGeneral.h" #include "KingSystem/Resource/resResourceGParamList.h" -namespace ksys::dmg { +namespace uking::dmg { -DamageManagerBase_UnknownBase1::DamageManagerBase_UnknownBase1(act::Actor* actor) : mActor(actor) {} +DamageManagerBase_UnknownBase1::DamageManagerBase_UnknownBase1(ksys::act::Actor* actor) + : mActor(actor) {} // Compiler seems to combine zero(0) writes to (0x0 ,0x8) and (0x10, 0x18) // when writing the vtable and Actor. // The original Compiler writes (0x8, 0x10) in one 'stp', and writes 0x0 and 0x18 individually with // 'str'. The rest seems to fall out of sync due to that, but it's otherwise functionally the same. // NON_MATCHING: Incorrect order. -DamageManagerBase::DamageManagerBase(act::Actor* actor) : DamageManagerBase_UnknownBase1(actor) {} +DamageManagerBase::DamageManagerBase(ksys::act::Actor* actor) + : DamageManagerBase_UnknownBase1(actor) {} u32 DamageManagerBase::getDamage() { u32 result; @@ -106,7 +109,7 @@ void DamageManagerBase::removeDamageCallback(DamageCallback* callback) { bool DamageManagerBase::applyDamage(s32& life) { auto* param_list = mActor->getParam()->getRes().mGParamList; - const res::GParamListObjectGeneral& params = *param_list->getGeneral(); + const ksys::res::GParamListObjectGeneral& params = *param_list->getGeneral(); if (params.mIsLifeInfinite.ref()) { // Since life is infinite, we don't need to modify the damage or life. // But we still call the "callback" as if damage was done. @@ -116,7 +119,7 @@ bool DamageManagerBase::applyDamage(s32& life) { s32 damage = getDamage(); if (damage >= 1) { - if (isPlayerClass(mActor)) { + if (ksys::act::isPlayerProfile(mActor)) { if (getAttacker()->hasProc()) { tryBuffDamage(damage); } @@ -148,8 +151,8 @@ void DamageManagerBase::tryBuffDamage(s32& damage) { return; } - act::ActorConstDataAccess acc; - act::acquireActor(getAttacker(), &acc); + ksys::act::ActorConstDataAccess acc; + ksys::act::acquireActor(getAttacker(), &acc); if (uking::aoc2::shouldApplyMasterModeDamageMultiplier(acc)) { uking::aoc2::buffDamage(damage); } @@ -175,7 +178,7 @@ void DamageManagerBase::tryApplyDamageRecovery(s32& damage) { // Take damage from extra HP1, and modify damage. // Returns true if damage remains? No more regen? - act::LifeRecoverInfo* life_recovery_info = mActor->getLifeRecoverInfo(); + ksys::act::LifeRecoverInfo* life_recovery_info = mActor->getLifeRecoverInfo(); if (life_recovery_info->onApplyDamage(damage)) { // Update flags and counter. life_recovery_info->onApplyDamage_0(); @@ -272,4 +275,4 @@ s32 DamageManagerBase::m49(s32 damageTypeMaybe) { return 0; } -} // namespace ksys::dmg +} // namespace uking::dmg diff --git a/src/KingSystem/Damage/dmgDamageManagerBase.h b/src/Game/Damage/dmgDamageManagerBase.h similarity index 89% rename from src/KingSystem/Damage/dmgDamageManagerBase.h rename to src/Game/Damage/dmgDamageManagerBase.h index faa5f473..7beeeef3 100644 --- a/src/KingSystem/Damage/dmgDamageManagerBase.h +++ b/src/Game/Damage/dmgDamageManagerBase.h @@ -5,23 +5,23 @@ #include #include +#include "Game/Damage/dmgDamageCallback.h" +#include "Game/Damage/dmgInfoManager.h" +#include "Game/Damage/dmgStruct20.h" #include "KingSystem/ActorSystem/actBaseProcLink.h" -#include "KingSystem/Damage/dmgDamageCallback.h" -#include "KingSystem/Damage/dmgDamageInfoManager.h" -#include "KingSystem/Damage/dmgStruct20.h" namespace ksys::act { class Actor; class ActorParam; } // namespace ksys::act -namespace ksys::dmg { +namespace uking::dmg { // FIXME: Unknown base. This base seems to handle callbacks and messaging, so maybe a shared base? class DamageManagerBase_UnknownBase1 { public: - DamageManagerBase_UnknownBase1(act::Actor* WeaponActor); - virtual ~DamageManagerBase_UnknownBase1() {} + explicit DamageManagerBase_UnknownBase1(ksys::act::Actor* WeaponActor); + virtual ~DamageManagerBase_UnknownBase1() = default; // Sturct20 for Damage receive/send? Struct20Base* mStruct20_a = nullptr; @@ -46,8 +46,8 @@ public: class DamageManagerBase : public DamageManagerBase_UnknownBase1, public DamageManagerBase_UnknownBase2 { public: - DamageManagerBase(act::Actor* actor); - virtual ~DamageManagerBase() = default; + explicit DamageManagerBase(ksys::act::Actor* actor); + ~DamageManagerBase() override = default; SEAD_RTTI_BASE(DamageManagerBase) @@ -139,7 +139,4 @@ private: }; KSYS_CHECK_SIZE_NX150(DamageManagerBase, 0x68); -// FIXME: Move into static helper class? -bool isPlayerClass(ksys::act::Actor* Actor); - -} // namespace ksys::dmg +} // namespace uking::dmg diff --git a/src/Game/Damage/dmgInfoManager.cpp b/src/Game/Damage/dmgInfoManager.cpp new file mode 100644 index 00000000..7a0613a1 --- /dev/null +++ b/src/Game/Damage/dmgInfoManager.cpp @@ -0,0 +1,7 @@ +#include "Game/Damage/dmgInfoManager.h" + +namespace uking::dmg { + +SEAD_SINGLETON_DISPOSER_IMPL(DamageInfoMgr) + +} // namespace uking::dmg diff --git a/src/Game/Damage/dmgInfoManager.h b/src/Game/Damage/dmgInfoManager.h new file mode 100644 index 00000000..14df5548 --- /dev/null +++ b/src/Game/Damage/dmgInfoManager.h @@ -0,0 +1,48 @@ +#pragma once + +#include +#include +#include +#include +#include +#include "KingSystem/ActorSystem/actBaseProcLink.h" +#include "KingSystem/Resource/resHandle.h" + +namespace uking::dmg { + +// FIXME: incomplete +class DamageInfoMgr { + SEAD_SINGLETON_DISPOSER(DamageInfoMgr); + DamageInfoMgr(); + virtual ~DamageInfoMgr(); + +public: + // FIXME: incomplete + class DamageItem { + public: + s32 mField_0; // unknown + sead::SafeArray mCanTakeDamageFromType; + }; + + bool isTrueFormMasterSword() const; + + /* 0x0028 */ u8 TEMP_8[0x5d0 - 0x28]; + /* 0x05d0 */ ksys::res::Handle mReactionTable; + /* 0x0620 */ sead::Buffer mDamagesArray; + /* 0x0630 */ u8 TEMP_630[0xd00 - 0x630]; + /* 0x0d00 */ sead::ReadWriteLock mLock; + /* 0x0db8 */ u8 TEMP_db8[0x11e4 - 0xdb8]; + /* 0x11e4 */ f32 mMasterSwordSearchEvilDist; + /* 0x11e8 */ bool mMasterSwordDetectedEvil; + /* 0x11e9 */ bool mMasterSwordDisableTrueForm; + /* 0x11ea */ bool mOneHitObliteratorActive; + /* 0x11f0 */ ksys::act::BaseProcLink _11f0; + /* 0x1200 */ ksys::act::BaseProcLink _1200; + /* 0x1210 */ ksys::act::BaseProcLink _1210; + /* 0x1220 */ ksys::act::BaseProcLink _1230; + /* 0x1230 */ sead::ReadWriteLock mProcLinkLock; + /* 0x12e8 */ void* _12e8; +}; +KSYS_CHECK_SIZE_NX150(DamageInfoMgr, 0x12F0); + +} // namespace uking::dmg diff --git a/src/KingSystem/Damage/dmgStruct20.cpp b/src/Game/Damage/dmgStruct20.cpp similarity index 93% rename from src/KingSystem/Damage/dmgStruct20.cpp rename to src/Game/Damage/dmgStruct20.cpp index 10c91acb..faa95706 100644 --- a/src/KingSystem/Damage/dmgStruct20.cpp +++ b/src/Game/Damage/dmgStruct20.cpp @@ -1,6 +1,6 @@ -#include "KingSystem/Damage/dmgStruct20.h" +#include "Game/Damage/dmgStruct20.h" -namespace ksys::dmg { +namespace uking::dmg { void Struct20::reset() { mField_8 = 0; @@ -50,4 +50,4 @@ void Struct20_2::combineMaybe(Struct20Base* other) { } } -} // namespace ksys::dmg \ No newline at end of file +} // namespace uking::dmg diff --git a/src/KingSystem/Damage/dmgStruct20.h b/src/Game/Damage/dmgStruct20.h similarity index 96% rename from src/KingSystem/Damage/dmgStruct20.h rename to src/Game/Damage/dmgStruct20.h index 3bc8cb04..65ddeb07 100644 --- a/src/KingSystem/Damage/dmgStruct20.h +++ b/src/Game/Damage/dmgStruct20.h @@ -5,7 +5,7 @@ #include "KingSystem/Utils/Types.h" -namespace ksys::dmg { +namespace uking::dmg { // What exactly Struct20 is, isn't known yet. // It is used by the Damage Managers, especially DamageManager and up, not so much in @@ -61,4 +61,4 @@ public: }; KSYS_CHECK_SIZE_NX150(Struct20_2, 0x38); -} // namespace ksys::dmg +} // namespace uking::dmg diff --git a/src/KingSystem/CMakeLists.txt b/src/KingSystem/CMakeLists.txt index 01782dba..f430ca2b 100644 --- a/src/KingSystem/CMakeLists.txt +++ b/src/KingSystem/CMakeLists.txt @@ -6,7 +6,6 @@ add_subdirectory(ActorSystem) add_subdirectory(Cooking) add_subdirectory(Ecosystem) add_subdirectory(Event) -add_subdirectory(Damage) add_subdirectory(Framework) add_subdirectory(Map) add_subdirectory(MessageSystem) diff --git a/src/KingSystem/Damage/dmgDamageInfoManager.h b/src/KingSystem/Damage/dmgDamageInfoManager.h deleted file mode 100644 index dc09e2bf..00000000 --- a/src/KingSystem/Damage/dmgDamageInfoManager.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include "KingSystem/Resource/resHandle.h" - -namespace ksys::dmg { - -// FIXME: incomplete -class DamageInfoMgr { -public: - SEAD_SINGLETON_DISPOSER(DamageInfoMgr); - DamageInfoMgr(); - virtual ~DamageInfoMgr(); - -public: - // FIXME: incomplete - class DamageItem { - public: - s32 mField_0; // unknown - sead::SafeArray mCanTakeDamageFromType; - }; - - u8 TEMP1[0x5F0]; // Fields - res::Handle* mReactionTable; // 0x5D0 - sead::Buffer mDamagesArray; // 0x620 -}; -// KSYS_CHECK_SIZE_NX150(DamageInfoMgr, 0x12F0); - -} // namespace ksys::dmg