mirror of https://github.com/zeldaret/botw.git
ksys/res: Start adding AttCheck
Most of the check() functions are unimplemented because they require doing more physics/collision stuff.
This commit is contained in:
parent
6518fe5c73
commit
f98b6b0dba
|
@ -87690,45 +87690,45 @@
|
|||
0x000000710108a4d0,sub_710108A4D0,240,_ZNK4ksys3act13ActorTemplate17getAttDefPriorityEPPKcS3_
|
||||
0x000000710108a5c0,ActorTemplate::getNumEntries,8,_ZNK4ksys3act13ActorTemplate14getNumProfilesEv
|
||||
0x000000710108a5c8,ActorTemplate::getKeyNameByIdx,76,_ZNK4ksys3act13ActorTemplate14getProfileNameEi
|
||||
0x000000710108a614,nullsub_4457,4,
|
||||
0x000000710108a618,sub_710108A618,8,
|
||||
0x000000710108a620,sub_710108A620,8,
|
||||
0x000000710108a614,nullsub_4457,4,_ZN4ksys3res8AttCheck2m4Ev
|
||||
0x000000710108a618,sub_710108A618,8,_ZN4ksys3res8AttCheck5checkEv
|
||||
0x000000710108a620,sub_710108A620,8,_ZN4ksys3res8AttCheck2m6Ev
|
||||
0x000000710108a628,sub_710108A628,132,
|
||||
0x000000710108a6ac,sub_710108A6AC,192,
|
||||
0x000000710108a6ac,sub_710108A6AC,192,_ZN4ksys3res12AttCheckLine5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108a76c,sub_710108A76C,48,
|
||||
0x000000710108a79c,sub_710108A79C,32,
|
||||
0x000000710108a7bc,sub_710108A7BC,468,
|
||||
0x000000710108a990,sub_710108A990,128,
|
||||
0x000000710108aa10,sub_710108AA10,148,
|
||||
0x000000710108aaa4,sub_710108AAA4,164,
|
||||
0x000000710108ab48,sub_710108AB48,484,
|
||||
0x000000710108aaa4,sub_710108AAA4,164,_ZN4ksys3res12AttCheckArea5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108ab48,sub_710108AB48,484,_ZN4ksys3res18AttCheckAreaSphere5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108ad2c,sub_710108AD2C,732,
|
||||
0x000000710108b008,sub_710108B008,504,
|
||||
0x000000710108b200,sub_710108B200,176,
|
||||
0x000000710108b2b0,sub_710108B2B0,92,
|
||||
0x000000710108b30c,sub_710108B30C,956,
|
||||
0x000000710108b30c,sub_710108B30C,956,_ZN4ksys3res15AttCheckAreaFan5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108b6c8,sub_710108B6C8,1192,
|
||||
0x000000710108bb70,sub_710108BB70,908,
|
||||
0x000000710108befc,sub_710108BEFC,1200,
|
||||
0x000000710108c3ac,sub_710108C3AC,144,
|
||||
0x000000710108c43c,sub_710108C43C,1068,
|
||||
0x000000710108c43c,sub_710108C43C,1068,_ZN4ksys3res23AttCheckAreaCylinderFan5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108c868,sub_710108C868,1384,
|
||||
0x000000710108cdd0,sub_710108CDD0,1060,
|
||||
0x000000710108d1f4,sub_710108D1F4,820,
|
||||
0x000000710108d1f4,sub_710108D1F4,820,_ZN4ksys3res15AttCheckAreaBox5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108d528,sub_710108D528,1056,
|
||||
0x000000710108d948,sub_710108D948,1020,
|
||||
0x000000710108dd44,sub_710108DD44,616,
|
||||
0x000000710108dfac,sub_710108DFAC,84,
|
||||
0x000000710108e000,sub_710108E000,304,
|
||||
0x000000710108e130,sub_710108E130,856,
|
||||
0x000000710108e488,sub_710108E488,8,
|
||||
0x000000710108e000,sub_710108E000,304,_ZN4ksys3res21AttCheckEachOtherAreaC1ENS0_12AttCheckTypeE
|
||||
0x000000710108e130,sub_710108E130,856,_ZN4ksys3res21AttCheckEachOtherArea5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108e488,sub_710108E488,8,_ZN4ksys3res8AttCheck5parseERKNS1_9CreateArgE
|
||||
0x000000710108e490,sub_710108E490,40,
|
||||
0x000000710108e4b8,sub_710108E4B8,1264,
|
||||
0x000000710108e9a8,sub_710108E9A8,784,
|
||||
0x000000710108ecb8,sub_710108ECB8,1500,
|
||||
0x000000710108f294,_ZN2nn3nex23AccountManagementClient18UpdateAccountEmailEPNS0_19ProtocolCallContextERKNS0_6StringE,20,
|
||||
0x000000710108f2a8,sub_710108F2A8,512,
|
||||
0x000000710108f4a8,sub_710108F4A8,164,
|
||||
0x000000710108f4a8,sub_710108F4A8,164,_ZN4ksys3res13AttCheckAngle5parseERKNS0_8AttCheck9CreateArgE
|
||||
0x000000710108f54c,sub_710108F54C,28,
|
||||
0x000000710108f568,sub_710108F568,56,
|
||||
0x000000710108f5a0,sub_710108F5A0,344,
|
||||
|
@ -87740,11 +87740,11 @@
|
|||
0x000000710108f860,sub_710108F860,56,
|
||||
0x000000710108f898,sub_710108F898,56,
|
||||
0x000000710108f8d0,sub_710108F8D0,36,
|
||||
0x000000710108f8f4,sub_710108F8F4,588,
|
||||
0x000000710108fb40,sub_710108FB40,112,
|
||||
0x000000710108fbb0,sub_710108FBB0,92,
|
||||
0x000000710108fc0c,j__ZdlPv_1144,4,
|
||||
0x000000710108fc10,nullsub_4458,4,
|
||||
0x000000710108f8f4,sub_710108F8F4,588,_ZN4ksys3res8AttCheck4makeERKNS1_9CreateArgE
|
||||
0x000000710108fb40,sub_710108FB40,112,_ZNK4ksys3res8AttCheck27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x000000710108fbb0,sub_710108FBB0,92,_ZNK4ksys3res8AttCheck18getRuntimeTypeInfoEv
|
||||
0x000000710108fc0c,j__ZdlPv_1144,4,_ZN4ksys3res8AttCheckD0Ev
|
||||
0x000000710108fc10,nullsub_4458,4,_ZN4ksys3res8AttCheck2m7Ev
|
||||
0x000000710108fc14,sub_710108FC14,204,
|
||||
0x000000710108fce0,sub_710108FCE0,92,
|
||||
0x000000710108fd3c,sub_710108FD3C,72,
|
||||
|
@ -87758,23 +87758,23 @@
|
|||
0x0000007101090030,j__ZdlPv_1147,4,
|
||||
0x0000007101090034,sub_7101090034,8,
|
||||
0x000000710109003c,sub_710109003C,8,
|
||||
0x0000007101090044,nullsub_4459,4,
|
||||
0x0000007101090048,sub_7101090048,288,
|
||||
0x0000007101090168,sub_7101090168,92,
|
||||
0x00000071010901c4,sub_71010901C4,104,
|
||||
0x000000710109022c,j__ZdlPv_1148,4,
|
||||
0x0000007101090230,sub_7101090230,288,
|
||||
0x0000007101090350,sub_7101090350,92,
|
||||
0x00000071010903ac,sub_71010903AC,136,
|
||||
0x0000007101090434,j__ZdlPv_1149,4,
|
||||
0x0000007101090438,sub_7101090438,288,
|
||||
0x0000007101090558,sub_7101090558,92,
|
||||
0x00000071010905b4,sub_71010905B4,144,
|
||||
0x0000007101090644,j__ZdlPv_1150,4,
|
||||
0x0000007101090648,sub_7101090648,288,
|
||||
0x0000007101090768,sub_7101090768,92,
|
||||
0x00000071010907c4,sub_71010907C4,116,
|
||||
0x0000007101090838,j__ZdlPv_1151,4,
|
||||
0x0000007101090044,nullsub_4459,4,_ZN4ksys3res12AttCheckArea3m11Ev
|
||||
0x0000007101090048,sub_7101090048,288,_ZNK4ksys3res18AttCheckAreaSphere27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101090168,sub_7101090168,92,_ZNK4ksys3res18AttCheckAreaSphere18getRuntimeTypeInfoEv
|
||||
0x00000071010901c4,sub_71010901C4,104,_ZN4ksys3res18AttCheckAreaSphereD2Ev
|
||||
0x000000710109022c,j__ZdlPv_1148,4,_ZN4ksys3res18AttCheckAreaSphereD0Ev
|
||||
0x0000007101090230,sub_7101090230,288,_ZNK4ksys3res15AttCheckAreaFan27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101090350,sub_7101090350,92,_ZNK4ksys3res15AttCheckAreaFan18getRuntimeTypeInfoEv
|
||||
0x00000071010903ac,sub_71010903AC,136,_ZN4ksys3res15AttCheckAreaFanD2Ev
|
||||
0x0000007101090434,j__ZdlPv_1149,4,_ZN4ksys3res15AttCheckAreaFanD0Ev
|
||||
0x0000007101090438,sub_7101090438,288,_ZNK4ksys3res23AttCheckAreaCylinderFan27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101090558,sub_7101090558,92,_ZNK4ksys3res23AttCheckAreaCylinderFan18getRuntimeTypeInfoEv
|
||||
0x00000071010905b4,sub_71010905B4,144,_ZN4ksys3res23AttCheckAreaCylinderFanD2Ev
|
||||
0x0000007101090644,j__ZdlPv_1150,4,_ZN4ksys3res23AttCheckAreaCylinderFanD0Ev
|
||||
0x0000007101090648,sub_7101090648,288,_ZNK4ksys3res15AttCheckAreaBox27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
|
||||
0x0000007101090768,sub_7101090768,92,_ZNK4ksys3res15AttCheckAreaBox18getRuntimeTypeInfoEv
|
||||
0x00000071010907c4,sub_71010907C4,116,_ZN4ksys3res15AttCheckAreaBoxD2Ev
|
||||
0x0000007101090838,j__ZdlPv_1151,4,_ZN4ksys3res15AttCheckAreaBoxD0Ev
|
||||
0x000000710109083c,sub_710109083C,204,
|
||||
0x0000007101090908,sub_7101090908,92,
|
||||
0x0000007101090964,sub_7101090964,116,
|
||||
|
@ -87800,7 +87800,7 @@
|
|||
0x0000007101091134,j__ZdlPv_1158,4,
|
||||
0x0000007101091138,sub_7101091138,204,
|
||||
0x0000007101091204,sub_7101091204,92,
|
||||
0x0000007101091260,sub_7101091260,52,
|
||||
0x0000007101091260,sub_7101091260,52,_ZN4ksys3res8AttCheckD2Ev
|
||||
0x0000007101091294,j__ZdlPv_1159,4,
|
||||
0x0000007101091298,sub_7101091298,204,
|
||||
0x0000007101091364,sub_7101091364,92,
|
||||
|
@ -87826,30 +87826,30 @@
|
|||
0x000000710109188c,j__ZdlPv_1169,4,
|
||||
0x0000007101091890,nullsub_4462,4,
|
||||
0x0000007101091894,j__ZdlPv_1170,4,
|
||||
0x0000007101091898,sub_7101091898,180,
|
||||
0x000000710109194c,sub_710109194C,132,
|
||||
0x00000071010919d0,sub_71010919D0,260,
|
||||
0x0000007101091ad4,sub_7101091AD4,56,
|
||||
0x0000007101091b0c,sub_7101091B0C,56,
|
||||
0x0000007101091b44,sub_7101091B44,56,
|
||||
0x0000007101091b7c,sub_7101091B7C,56,
|
||||
0x0000007101091bb4,sub_7101091BB4,164,
|
||||
0x0000007101091c58,sub_7101091C58,132,
|
||||
0x0000007101091cdc,sub_7101091CDC,132,
|
||||
0x0000007101091d60,sub_7101091D60,132,
|
||||
0x0000007101091de4,sub_7101091DE4,132,
|
||||
0x0000007101091e68,sub_7101091E68,132,
|
||||
0x0000007101091eec,sub_7101091EEC,132,
|
||||
0x0000007101091f70,sub_7101091F70,132,
|
||||
0x0000007101091ff4,sub_7101091FF4,132,
|
||||
0x0000007101092078,sub_7101092078,132,
|
||||
0x00000071010920fc,sub_71010920FC,132,
|
||||
0x0000007101092180,sub_7101092180,132,
|
||||
0x0000007101092204,sub_7101092204,340,
|
||||
0x0000007101092358,sub_7101092358,364,
|
||||
0x00000071010924c4,sub_71010924C4,280,
|
||||
0x00000071010925dc,sub_71010925DC,140,
|
||||
0x0000007101092668,sub_7101092668,140,
|
||||
0x0000007101091898,sub_7101091898,180,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_12AttCheckLineEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x000000710109194c,sub_710109194C,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_14AttCheckScreenEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x00000071010919d0,sub_71010919D0,260,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_18AttCheckAreaSphereEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091ad4,sub_7101091AD4,56,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_15AttCheckAreaFanEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091b0c,sub_7101091B0C,56,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_23AttCheckAreaCylinderFanEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091b44,sub_7101091B44,56,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_15AttCheckAreaBoxEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091b7c,sub_7101091B7C,56,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_21AttCheckEachOtherAreaEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091bb4,sub_7101091BB4,164,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_13AttCheckAngleEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091c58,sub_7101091C58,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_14AttCheckWeightEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091cdc,sub_7101091CDC,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_17AttCheckRideHorseEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091d60,sub_7101091D60,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_17AttCheckRideSpaceEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091de4,sub_7101091DE4,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_12AttCheckSwimEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091e68,sub_7101091E68,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_13AttCheckCarryEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091eec,sub_7101091EEC,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_15AttCheckNoCarryEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091f70,sub_7101091F70,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_12AttCheckGrabEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101091ff4,sub_7101091FF4,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_22AttCheckBootFirstTowerEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101092078,sub_7101092078,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_19AttCheckFireContactEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x00000071010920fc,sub_71010920FC,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_19AttCheckCharacterOnEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101092180,sub_7101092180,132,_ZZN4ksys3res12_GLOBAL__N_1L11makeFactoryINS0_18AttCheckUnderWaterEEENS1_15AttCheckFactoryEPKcENUlNS0_12AttCheckTypeEPN4sead4HeapEE_8__invokeES7_SA_
|
||||
0x0000007101092204,sub_7101092204,340,_ZN4ksys3res15AttCheckAreaFanCI2NS0_8AttCheckEENS0_12AttCheckTypeE
|
||||
0x0000007101092358,sub_7101092358,364,_ZN4ksys3res23AttCheckAreaCylinderFanCI2NS0_8AttCheckEENS0_12AttCheckTypeE
|
||||
0x00000071010924c4,sub_71010924C4,280,_ZN4ksys3res15AttCheckAreaBoxC2ENS0_12AttCheckTypeE
|
||||
0x00000071010925dc,sub_71010925DC,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3res8AttCheckEE9isDerivedEPKNS0_9InterfaceE
|
||||
0x0000007101092668,sub_7101092668,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3res12AttCheckAreaEE9isDerivedEPKNS0_9InterfaceE
|
||||
0x00000071010926f4,sub_71010926F4,248,
|
||||
0x00000071010927ec,ResourceBatcllist::m2,248,
|
||||
0x00000071010928e4,sub_71010928E4,252,
|
||||
|
@ -87901,8 +87901,8 @@
|
|||
0x0000007101094cc0,j__ZdlPv_1172,4,
|
||||
0x0000007101094cc4,_ZN4sead19FixedSafeStringBaseIcLi147EEaSERKNS_14SafeStringBaseIcEE,240,
|
||||
0x0000007101094db4,sub_7101094DB4,372,
|
||||
0x0000007101094f28,sub_7101094F28,132,
|
||||
0x0000007101094fac,sub_7101094FAC,360,
|
||||
0x0000007101094f28,sub_7101094F28,132,_ZN4ksys3res6AttPosC1Ev
|
||||
0x0000007101094fac,sub_7101094FAC,360,_ZN4ksys3res6AttPos4initEPN3agl3utl13IParameterObjEPKcS7_S7_S7_
|
||||
0x0000007101095114,sub_7101095114,396,
|
||||
0x00000071010952a0,sub_71010952A0,536,
|
||||
0x00000071010954b8,sub_71010954B8,624,
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -12,7 +12,6 @@
|
|||
#include "KingSystem/Resource/resResourceAnimInfo.h"
|
||||
#include "KingSystem/Resource/resResourceArchive.h"
|
||||
#include "KingSystem/Resource/resResourceAttClient.h"
|
||||
#include "KingSystem/Resource/resResourceAttClientList.h"
|
||||
#include "KingSystem/Resource/resResourceAwareness.h"
|
||||
#include "KingSystem/Resource/resResourceBoneControl.h"
|
||||
#include "KingSystem/Resource/resResourceChemical.h"
|
||||
|
|
|
@ -148,10 +148,10 @@ target_sources(uking PRIVATE
|
|||
resResourceASResourceExtension.h
|
||||
resResourceASSetting.cpp
|
||||
resResourceASSetting.h
|
||||
resResourceAttCheck.cpp
|
||||
resResourceAttCheck.h
|
||||
resResourceAttClient.cpp
|
||||
resResourceAttClient.h
|
||||
resResourceAttClientList.cpp
|
||||
resResourceAttClientList.h
|
||||
resResourceArchive.cpp
|
||||
resResourceArchive.h
|
||||
resResourceAwareness.cpp
|
||||
|
|
|
@ -0,0 +1,200 @@
|
|||
#include "KingSystem/Resource/resResourceAttCheck.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
void AttCheck::m4() {}
|
||||
|
||||
bool AttCheck::check() {
|
||||
return true;
|
||||
}
|
||||
|
||||
float AttCheck::m6() {
|
||||
return -1.0;
|
||||
}
|
||||
|
||||
bool AttCheckLine::parse(const CreateArg& arg) {
|
||||
mRadius.init(0.0, "Radius", "半径", "Min=0,Max=10", &mObj);
|
||||
mAsLineOfSight.init(false, "AsLineOfSight", "視線を透かすコリジョンを無視する", "", &mObj);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AttCheckArea::parse(const CreateArg& arg) {
|
||||
mAttPos.init(&mObj);
|
||||
mFromPlayer.init(false, "FromPlayer", "目標側基準", "", &mObj);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AttCheckAreaSphere::parse(const CreateArg& arg) {
|
||||
mForceEditModelArea.init(false, "ForceEditModelArea", "(モデル範囲)強制編集", "", &mObj);
|
||||
mRadius.init(0.0, "Radius", "(モデル範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
mFixedRadius.init(-1.0, "FixedRadius", "(アテンション範囲)半径", "Min=-1.f,Max=100.f", &mObj);
|
||||
mForceEditMargin.init(false, "ForceEditMargin", "(あそびの範囲)強制編集", "", &mObj);
|
||||
mMarginRadius.init(1.0, "MarginRadius", "(あそびの範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
return AttCheckArea::parse(arg);
|
||||
}
|
||||
|
||||
bool AttCheckAreaFan::parse(const CreateArg& arg) {
|
||||
mAngleCheckIgnoreLockOn.init(false, "AngleCheckIgnoreLockOn", "ロックオン時も角度チェック有効",
|
||||
"", &mObj);
|
||||
mForceEditModelArea.init(false, "ForceEditModelArea", "(モデル範囲)強制編集", "", &mObj);
|
||||
mRadius.init(0.0, "Radius", "(モデル範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
mTop.init(0.0, "Top", "(モデル範囲)上辺", "Min=-100.f,Max=100.f", &mObj);
|
||||
mBottom.init(0.0, "Bottom", "(モデル範囲)下辺", "Min=-100.f,Max=100.f", &mObj);
|
||||
mAngle.init(0.0, "Angle", "(アテンション範囲)角度", "Min=0.f,Max=3.1415f", &mObj);
|
||||
mFixedRadius.init(-1.0, "FixedRadius", "(アテンション範囲)半径", "Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedTop.init(-1.0, "FixedTop", "(アテンション範囲)上辺", "Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedBottom.init(-1.0, "FixedBottom", "(アテンション範囲)下辺", "Min=-1.f,Max=100.f", &mObj);
|
||||
mForceEditMargin.init(false, "ForceEditMargin", "(あそびの範囲)強制編集", "", &mObj);
|
||||
mMarginRadius.init(1.0, "MarginRadius", "(あそびの範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
mMarginTop.init(1.0, "MarginTop", "(あそびの範囲)上辺", "Min=0.f,Max=100.f", &mObj);
|
||||
mMarginBottom.init(1.0, "MarginBottom", "(あそびの範囲)下辺", "Min=0.f,Max=100.f", &mObj);
|
||||
return AttCheckArea::parse(arg);
|
||||
}
|
||||
|
||||
bool AttCheckAreaCylinderFan::parse(const CreateArg& arg) {
|
||||
mAngleCheckIgnoreLockOn.init(false, "AngleCheckIgnoreLockOn", "ロックオン時も角度チェック有効",
|
||||
"", &mObj);
|
||||
mForceEditModelArea.init(false, "ForceEditModelArea", "(モデル範囲)強制編集", "", &mObj);
|
||||
mRadius.init(0.0, "Radius", "(モデル範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
mTop.init(0.0, "Top", "(モデル範囲)上辺", "Min=-100.f,Max=100.f", &mObj);
|
||||
mBottom.init(0.0, "Bottom", "(モデル範囲)下辺", "Min=-100.f,Max=100.f", &mObj);
|
||||
mAngle.init(0.0, "Angle", "(アテンション範囲)角度", "Min=0.f,Max=3.1415f", &mObj);
|
||||
mFixedRadiusCylinder.init(-1.0, "FixedRadiusCylinder", "(アテンション範囲)円柱の半径",
|
||||
"Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedRadiusFan.init(-1.0, "FixedRadiusFan", "(アテンション範囲)扇形の半径",
|
||||
"Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedTop.init(-1.0, "FixedTop", "(アテンション範囲)上辺", "Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedBottom.init(-1.0, "FixedBottom", "(アテンション範囲)下辺", "Min=-1.f,Max=100.f", &mObj);
|
||||
mForceEditMargin.init(false, "ForceEditMargin", "(あそびの範囲)強制編集", "", &mObj);
|
||||
mMarginRadiusCylinder.init(1.0, "MarginRadiusCylinder", "(あそびの範囲)円柱の半径",
|
||||
"Min=0.f,Max=100.f", &mObj);
|
||||
mMarginRadiusFan.init(1.0, "MarginRadiusFan", "(あそびの範囲)扇形の半径", "Min=0.f,Max=100.f",
|
||||
&mObj);
|
||||
mMarginTop.init(1.0, "MarginTop", "(あそびの範囲)上辺", "Min=0.f,Max=100.f", &mObj);
|
||||
mMarginBottom.init(1.0, "MarginBottom", "(あそびの範囲)下辺", "Min=0.f,Max=100.f", &mObj);
|
||||
return AttCheckArea::parse(arg);
|
||||
}
|
||||
|
||||
bool AttCheckAreaBox::parse(const CreateArg& arg) {
|
||||
mForceEditModelArea.init(false, "ForceEditModelArea", "(モデル範囲)強制編集", "", &mObj);
|
||||
mMin.init(sead::Vector3f::zero, "Min", "(モデル範囲)最小", "Min=-100.f,Max=100.f", &mObj);
|
||||
mMax.init(sead::Vector3f::zero, "Max", "(モデル範囲)最大", "Min=-100.f,Max=100.f", &mObj);
|
||||
mFixedMin.init(-1 * sead::Vector3f::ones, "FixedMin", "(アテンション範囲)最小",
|
||||
"Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedMax.init(-1 * sead::Vector3f::ones, "FixedMax", "(アテンション範囲)最大",
|
||||
"Min=-1.f,Max=100.f", &mObj);
|
||||
mForceEditMargin.init(false, "ForceEditMargin", "(あそびの範囲)強制編集", "", &mObj);
|
||||
mMarginMin.init(sead::Vector3f::ones, "MarginMin", "(あそびの範囲)最小", "Min=-100.f,Max=100.f",
|
||||
&mObj);
|
||||
mMarginMax.init(sead::Vector3f::ones, "MarginMax", "(あそびの範囲)最大", "Min=-100.f,Max=100.f",
|
||||
&mObj);
|
||||
return AttCheckArea::parse(arg);
|
||||
}
|
||||
|
||||
AttCheckEachOtherArea::AttCheckEachOtherArea(AttCheckType type) : AttCheck(type) {}
|
||||
|
||||
bool AttCheckEachOtherArea::parse(const CreateArg& arg) {
|
||||
mForceEditModelArea.init(false, "ForceEditModelArea", "(モデル範囲)強制編集", "", &mObj);
|
||||
mRadius.init(0.0, "Radius", "(モデル範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
mTop.init(0.0, "Top", "(モデル範囲)上辺", "Min=-100.f,Max=100.f", &mObj);
|
||||
mBottom.init(0.0, "Bottom", "(モデル範囲)下辺", "Min=-100.f,Max=100.f", &mObj);
|
||||
mFixedRadius.init(-1.0, "FixedRadius", "(アテンション範囲)半径", "Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedTop.init(-1.0, "FixedTop", "(アテンション範囲)上辺", "Min=-1.f,Max=100.f", &mObj);
|
||||
mFixedBottom.init(-1.0, "FixedBottom", "(アテンション範囲)下辺", "Min=-1.f,Max=100.f", &mObj);
|
||||
mForceEditMargin.init(false, "ForceEditMargin", "(あそびの範囲)強制編集", "", &mObj);
|
||||
mMarginRadius.init(1.0, "MarginRadius", "(あそびの範囲)半径", "Min=0.f,Max=100.f", &mObj);
|
||||
mMarginTop.init(1.0, "MarginTop", "(あそびの範囲)上辺", "Min=0.f,Max=100.f", &mObj);
|
||||
mMarginBottom.init(1.0, "MarginBottom", "(あそびの範囲)下辺", "Min=0.f,Max=100.f", &mObj);
|
||||
mOffsetTop.init(0.0, "OffsetTop", "(アテンションを出される側の範囲オフセット)上辺",
|
||||
"Min=-100,Max=100", &mObj);
|
||||
mOffsetBottom.init(0.0, "OffsetBottom", "(アテンションを出される側の範囲オフセット)下辺",
|
||||
"Min=-100,Max=100", &mObj);
|
||||
return AttCheck::parse(arg);
|
||||
}
|
||||
|
||||
bool AttCheckAngle::parse(const CreateArg& arg) {
|
||||
mAttPos.init(&mObj);
|
||||
mAngle.init(0.0, "Angle", "角度", "Min=0.f,Max=3.1415f", &mObj);
|
||||
return AttCheck::parse(arg);
|
||||
}
|
||||
|
||||
bool AttCheck::parse(const CreateArg& arg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct AttCheckFactory {
|
||||
const char* name;
|
||||
AttCheck* (*make)(AttCheckType type, sead::Heap* heap);
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
static constexpr AttCheckFactory makeFactory(const char* name) {
|
||||
AttCheckFactory factory{};
|
||||
factory.name = name;
|
||||
factory.make = [](AttCheckType type, sead::Heap* heap) -> AttCheck* {
|
||||
return new (heap) T(type);
|
||||
};
|
||||
return factory;
|
||||
}
|
||||
|
||||
sead::SafeArray<AttCheckFactory, 19> sFactories{{
|
||||
makeFactory<AttCheckLine>("Line"),
|
||||
makeFactory<AttCheckScreen>("Screen"),
|
||||
makeFactory<AttCheckAreaSphere>("AreaSphere"),
|
||||
makeFactory<AttCheckAreaFan>("AreaFan"),
|
||||
makeFactory<AttCheckAreaCylinderFan>("AreaCylinderFan"),
|
||||
makeFactory<AttCheckAreaBox>("AreaBox"),
|
||||
makeFactory<AttCheckEachOtherArea>("EachOtherArea"),
|
||||
makeFactory<AttCheckAngle>("Angle"),
|
||||
makeFactory<AttCheckWeight>("Weight"),
|
||||
makeFactory<AttCheckRideHorse>("RideHorse"),
|
||||
makeFactory<AttCheckRideSpace>("RideSpace"),
|
||||
makeFactory<AttCheckSwim>("Swim"),
|
||||
makeFactory<AttCheckCarry>("Carry"),
|
||||
makeFactory<AttCheckNoCarry>("NoCarry"),
|
||||
makeFactory<AttCheckGrab>("Grab"),
|
||||
makeFactory<AttCheckBootFirstTower>("BootFirstTower"),
|
||||
makeFactory<AttCheckFireContact>("FireContact"),
|
||||
makeFactory<AttCheckCharacterOn>("CharacterOn"),
|
||||
makeFactory<AttCheckUnderWater>("UnderWater"),
|
||||
}};
|
||||
} // namespace
|
||||
|
||||
AttCheck* AttCheck::make(const CreateArg& arg) {
|
||||
const auto Parameters = agl::utl::getResParameterObj(arg.res_list, "Parameters");
|
||||
if (!Parameters)
|
||||
return nullptr;
|
||||
|
||||
int type = sFactories.size();
|
||||
const auto CheckType = agl::utl::getResParameter(Parameters, "CheckType");
|
||||
const sead::SafeString check_type_str = CheckType.getData<char>();
|
||||
for (int i = 0; i < sFactories.size(); ++i) {
|
||||
if (check_type_str == sFactories[i].name) {
|
||||
type = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (type == sFactories.size())
|
||||
return nullptr;
|
||||
|
||||
auto* check = sFactories[type].make(AttCheckType(type), arg.heap);
|
||||
if (!check)
|
||||
return nullptr;
|
||||
|
||||
if (!check->init(arg)) {
|
||||
delete check;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return check;
|
||||
}
|
||||
|
||||
bool AttCheck::init(const AttCheck::CreateArg& arg) {
|
||||
mList.addObj(&mObj, "Parameters");
|
||||
mUserData = arg.user_data;
|
||||
return parse(arg);
|
||||
}
|
||||
|
||||
} // namespace ksys::res
|
|
@ -0,0 +1,326 @@
|
|||
#pragma once
|
||||
|
||||
#include <agl/Utils/aglParameter.h>
|
||||
#include <agl/Utils/aglParameterList.h>
|
||||
#include <agl/Utils/aglParameterObj.h>
|
||||
#include <prim/seadRuntimeTypeInfo.h>
|
||||
#include "KingSystem/Resource/resResourceAttClient.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
enum class AttCheckType {
|
||||
Line,
|
||||
Screen,
|
||||
AreaSphere,
|
||||
AreaFan,
|
||||
AreaCylinderFan,
|
||||
AreaBox,
|
||||
EachOtherArea,
|
||||
Angle,
|
||||
Weight,
|
||||
RideHorse,
|
||||
RideSpace,
|
||||
Swim,
|
||||
Carry,
|
||||
NoCarry,
|
||||
Grab,
|
||||
BootFirstTower,
|
||||
FireContact,
|
||||
CharacterOn,
|
||||
UnderWater,
|
||||
};
|
||||
|
||||
class AttCheck {
|
||||
SEAD_RTTI_BASE(AttCheck)
|
||||
public:
|
||||
struct CreateArg {
|
||||
agl::utl::ResParameterList res_list;
|
||||
sead::Heap* heap;
|
||||
void* user_data;
|
||||
};
|
||||
|
||||
static AttCheck* make(const CreateArg& arg);
|
||||
|
||||
explicit AttCheck(AttCheckType type) : mType{type} {}
|
||||
virtual ~AttCheck() = default;
|
||||
|
||||
// FIXME: signatures and names
|
||||
virtual void m4();
|
||||
virtual bool check();
|
||||
virtual float m6();
|
||||
virtual void m7() {}
|
||||
|
||||
virtual bool parse(const CreateArg& arg);
|
||||
|
||||
protected:
|
||||
bool init(const CreateArg& arg);
|
||||
|
||||
void* mUserData = nullptr;
|
||||
AttCheckType mType{};
|
||||
agl::utl::ParameterObj mObj;
|
||||
agl::utl::ParameterList mList;
|
||||
};
|
||||
|
||||
class AttCheckLine : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckLine, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
bool parse(const CreateArg& arg) override;
|
||||
|
||||
private:
|
||||
agl::utl::Parameter<float> mRadius;
|
||||
agl::utl::Parameter<bool> mAsLineOfSight;
|
||||
};
|
||||
|
||||
class AttCheckScreen : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckScreen, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckArea : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckArea, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
void m4() override;
|
||||
bool check() override;
|
||||
float m6() override;
|
||||
void m7() override;
|
||||
bool parse(const CreateArg& arg) override;
|
||||
|
||||
virtual bool m9() { return true; }
|
||||
virtual float m10() { return 0; }
|
||||
virtual void m11() {}
|
||||
|
||||
protected:
|
||||
AttPos mAttPos;
|
||||
agl::utl::Parameter<bool> mFromPlayer;
|
||||
};
|
||||
|
||||
class AttCheckAreaSphere : public AttCheckArea {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckAreaSphere, AttCheckArea)
|
||||
public:
|
||||
using AttCheckArea::AttCheckArea;
|
||||
|
||||
bool parse(const CreateArg& arg) override;
|
||||
bool m9() override;
|
||||
float m10() override;
|
||||
void m11() override;
|
||||
|
||||
private:
|
||||
agl::utl::Parameter<bool> mForceEditModelArea;
|
||||
agl::utl::Parameter<float> mRadius;
|
||||
agl::utl::Parameter<float> mFixedRadius;
|
||||
agl::utl::Parameter<bool> mForceEditMargin;
|
||||
agl::utl::Parameter<float> mMarginRadius;
|
||||
};
|
||||
|
||||
class AttCheckAreaFan : public AttCheckArea {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckAreaFan, AttCheckArea)
|
||||
public:
|
||||
using AttCheckArea::AttCheckArea;
|
||||
|
||||
bool parse(const CreateArg& arg) override;
|
||||
bool m9() override;
|
||||
float m10() override;
|
||||
void m11() override;
|
||||
|
||||
private:
|
||||
agl::utl::Parameter<bool> mAngleCheckIgnoreLockOn;
|
||||
agl::utl::Parameter<bool> mForceEditModelArea;
|
||||
agl::utl::Parameter<float> mRadius;
|
||||
agl::utl::Parameter<float> mAngle;
|
||||
agl::utl::Parameter<float> mTop;
|
||||
agl::utl::Parameter<float> mBottom;
|
||||
agl::utl::Parameter<float> mMarginRadius;
|
||||
agl::utl::Parameter<float> mMarginTop;
|
||||
agl::utl::Parameter<float> mMarginBottom;
|
||||
agl::utl::Parameter<bool> mForceEditMargin;
|
||||
agl::utl::Parameter<float> mFixedRadius;
|
||||
agl::utl::Parameter<float> mFixedTop;
|
||||
agl::utl::Parameter<float> mFixedBottom;
|
||||
};
|
||||
|
||||
class AttCheckAreaCylinderFan : public AttCheckArea {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckAreaCylinderFan, AttCheckArea)
|
||||
public:
|
||||
using AttCheckArea::AttCheckArea;
|
||||
|
||||
bool parse(const CreateArg& arg) override;
|
||||
bool m9() override;
|
||||
float m10() override;
|
||||
|
||||
private:
|
||||
agl::utl::Parameter<bool> mAngleCheckIgnoreLockOn;
|
||||
agl::utl::Parameter<bool> mForceEditModelArea;
|
||||
agl::utl::Parameter<float> mRadius;
|
||||
agl::utl::Parameter<float> mTop;
|
||||
agl::utl::Parameter<float> mBottom;
|
||||
agl::utl::Parameter<float> mAngle;
|
||||
agl::utl::Parameter<float> mFixedRadiusCylinder;
|
||||
agl::utl::Parameter<float> mFixedRadiusFan;
|
||||
agl::utl::Parameter<float> mFixedTop;
|
||||
agl::utl::Parameter<float> mFixedBottom;
|
||||
agl::utl::Parameter<bool> mForceEditMargin;
|
||||
agl::utl::Parameter<float> mMarginRadiusCylinder;
|
||||
agl::utl::Parameter<float> mMarginRadiusFan;
|
||||
agl::utl::Parameter<float> mMarginTop;
|
||||
agl::utl::Parameter<float> mMarginBottom;
|
||||
};
|
||||
|
||||
class AttCheckAreaBox : public AttCheckArea {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckAreaBox, AttCheckArea)
|
||||
public:
|
||||
explicit AttCheckAreaBox(AttCheckType type) : AttCheckArea(type) {}
|
||||
|
||||
bool parse(const CreateArg& arg) override;
|
||||
bool m9() override;
|
||||
float m10() override;
|
||||
void m11() override;
|
||||
|
||||
private:
|
||||
agl::utl::Parameter<bool> mForceEditModelArea;
|
||||
agl::utl::Parameter<sead::Vector3f> mMin;
|
||||
agl::utl::Parameter<sead::Vector3f> mMax;
|
||||
agl::utl::Parameter<sead::Vector3f> mFixedMin;
|
||||
agl::utl::Parameter<sead::Vector3f> mFixedMax;
|
||||
agl::utl::Parameter<bool> mForceEditMargin;
|
||||
agl::utl::Parameter<sead::Vector3f> mMarginMin;
|
||||
agl::utl::Parameter<sead::Vector3f> mMarginMax;
|
||||
};
|
||||
|
||||
class AttCheckEachOtherArea : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckEachOtherArea, AttCheck)
|
||||
public:
|
||||
explicit AttCheckEachOtherArea(AttCheckType type);
|
||||
|
||||
void m4() override;
|
||||
bool check() override;
|
||||
float m6() override;
|
||||
void m7() override;
|
||||
bool parse(const CreateArg& arg) override;
|
||||
|
||||
private:
|
||||
agl::utl::Parameter<bool> mForceEditModelArea;
|
||||
agl::utl::Parameter<float> mRadius;
|
||||
agl::utl::Parameter<float> mTop;
|
||||
agl::utl::Parameter<float> mBottom;
|
||||
agl::utl::Parameter<bool> mForceEditMargin;
|
||||
agl::utl::Parameter<float> mMarginRadius;
|
||||
agl::utl::Parameter<float> mMarginTop;
|
||||
agl::utl::Parameter<float> mMarginBottom;
|
||||
agl::utl::Parameter<float> mFixedRadius;
|
||||
agl::utl::Parameter<float> mFixedTop;
|
||||
agl::utl::Parameter<float> mFixedBottom;
|
||||
agl::utl::Parameter<float> mOffsetTop;
|
||||
agl::utl::Parameter<float> mOffsetBottom;
|
||||
};
|
||||
|
||||
class AttCheckAngle : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckAngle, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
void m4() override;
|
||||
bool check() override;
|
||||
bool parse(const CreateArg& arg) override;
|
||||
|
||||
private:
|
||||
AttPos mAttPos;
|
||||
agl::utl::Parameter<float> mAngle;
|
||||
};
|
||||
|
||||
class AttCheckWeight : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckWeight, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckRideHorse : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckRideHorse, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckRideSpace : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckRideSpace, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckSwim : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckSwim, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckCarry : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckCarry, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckNoCarry : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckNoCarry, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckGrab : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckGrab, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckBootFirstTower : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckBootFirstTower, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckFireContact : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckFireContact, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckCharacterOn : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckCharacterOn, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
class AttCheckUnderWater : public AttCheck {
|
||||
SEAD_RTTI_OVERRIDE(AttCheckUnderWater, AttCheck)
|
||||
public:
|
||||
using AttCheck::AttCheck;
|
||||
|
||||
bool check() override;
|
||||
};
|
||||
|
||||
} // namespace ksys::res
|
|
@ -1,3 +1,22 @@
|
|||
#include "KingSystem/Resource/resResourceAttClient.h"
|
||||
|
||||
namespace ksys::res {} // namespace ksys::res
|
||||
namespace ksys::res {
|
||||
|
||||
AttClient::~AttClient() {
|
||||
// TODO
|
||||
mChecks.freeBuffer();
|
||||
}
|
||||
|
||||
void AttClient::doCreate_(u8*, u32, sead::Heap*) {}
|
||||
|
||||
AttPos::AttPos() = default;
|
||||
|
||||
void AttPos::init(agl::utl::IParameterObj* obj, const char* node_key, const char* offset_key,
|
||||
const char* rotate_key, const char* y_rot_only_key) {
|
||||
node.init("", node_key, "ノード", "", obj);
|
||||
offset.init(sead::Vector3f::zero, offset_key, "オフセット", "Min=-100.f,Max=100.f", obj);
|
||||
rotate.init(sead::Vector3f::zero, rotate_key, "回転", "Min=-3.1415f,Max=3.1415f", obj);
|
||||
y_rot_only.init(false, y_rot_only_key, "Y軸回転のみ有効", "", obj);
|
||||
}
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <agl/Utils/aglParameter.h>
|
||||
#include <agl/Utils/aglParameterList.h>
|
||||
#include <agl/Utils/aglParameterObj.h>
|
||||
#include <container/seadBuffer.h>
|
||||
#include <prim/seadSafeString.h>
|
||||
|
@ -11,6 +12,22 @@
|
|||
|
||||
namespace ksys::res {
|
||||
|
||||
struct AttPos {
|
||||
AttPos();
|
||||
|
||||
void init(agl::utl::IParameterObj* obj, const char* node_key = "Node",
|
||||
const char* offset_key = "Offset", const char* rotate_key = "Rotate",
|
||||
const char* y_rot_only_key = "YRotOnly");
|
||||
|
||||
// TODO: more functions
|
||||
|
||||
agl::utl::Parameter<sead::SafeString> node;
|
||||
agl::utl::Parameter<sead::Vector3f> offset;
|
||||
agl::utl::Parameter<sead::Vector3f> rotate;
|
||||
agl::utl::Parameter<bool> y_rot_only;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(AttPos, 0x98);
|
||||
|
||||
class AttClient : public ParamIO, public Resource {
|
||||
SEAD_RTTI_OVERRIDE(AttClient, Resource)
|
||||
public:
|
||||
|
@ -25,7 +42,7 @@ public:
|
|||
const sead::SafeString& getPriorityTypeStr() const { return mPriorityTypeStr; }
|
||||
const sead::Buffer<Check*>& getChecks() const { return mChecks; }
|
||||
|
||||
void doCreate_(u8*, u32, sead::Heap*) override {}
|
||||
void doCreate_(u8*, u32, sead::Heap*) override;
|
||||
bool needsParse() const override { return true; }
|
||||
bool parse_(u8* data, size_t size, sead::Heap* heap) override;
|
||||
|
||||
|
@ -42,4 +59,44 @@ private:
|
|||
};
|
||||
KSYS_CHECK_SIZE_NX150(AttClient, 0x428);
|
||||
|
||||
class AttClientList : public ParamIO, public Resource {
|
||||
SEAD_RTTI_OVERRIDE(AttClientList, Resource)
|
||||
public:
|
||||
struct Client {
|
||||
const char* getFileName() const { return file_name.ref().cstr(); }
|
||||
|
||||
agl::utl::Parameter<sead::SafeString> name;
|
||||
agl::utl::Parameter<sead::SafeString> file_name;
|
||||
agl::utl::Parameter<bool> is_valid;
|
||||
agl::utl::ParameterObj obj;
|
||||
AttClient* client;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(Client, 0xa8);
|
||||
|
||||
AttClientList() : ParamIO("atcllist", 0) {}
|
||||
~AttClientList() override;
|
||||
AttClientList(const AttClientList&) = delete;
|
||||
auto operator=(const AttClientList&) = delete;
|
||||
|
||||
const AttPos& getAttPos() const { return mAttPos; }
|
||||
bool isForceEdit() const { return mForceEdit.ref(); }
|
||||
const sead::Buffer<Client>& getClients() const { return mClients; }
|
||||
|
||||
void addClient_(s32 index, AttClient* client) { mClients[index].client = client; }
|
||||
|
||||
void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override;
|
||||
bool needsParse() const override { return true; }
|
||||
bool parse_(u8* data, size_t size, sead::Heap* heap) override;
|
||||
bool finishParsing_() override;
|
||||
bool m7_() override;
|
||||
|
||||
private:
|
||||
agl::utl::ParameterList mAttClientsList;
|
||||
agl::utl::ParameterObj mAttPosObj;
|
||||
AttPos mAttPos;
|
||||
agl::utl::Parameter<bool> mForceEdit;
|
||||
sead::Buffer<Client> mClients;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(AttClientList, 0x3f0);
|
||||
|
||||
} // namespace ksys::res
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include "KingSystem/Resource/resResourceAttClientList.h"
|
|
@ -1,65 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <agl/Utils/aglParameter.h>
|
||||
#include <agl/Utils/aglParameterList.h>
|
||||
#include <agl/Utils/aglParameterObj.h>
|
||||
#include <container/seadBuffer.h>
|
||||
#include "KingSystem/Resource/resResource.h"
|
||||
#include "KingSystem/Utils/ParamIO.h"
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
class AttClient;
|
||||
|
||||
class AttClientList : public ParamIO, public Resource {
|
||||
SEAD_RTTI_OVERRIDE(AttClientList, Resource)
|
||||
public:
|
||||
struct AttPos {
|
||||
AttPos();
|
||||
|
||||
agl::utl::Parameter<sead::SafeString> _0;
|
||||
agl::utl::Parameter<sead::Vector3f> _28;
|
||||
agl::utl::Parameter<sead::Vector3f> _50;
|
||||
agl::utl::Parameter<bool> _78;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(AttPos, 0x98);
|
||||
|
||||
struct Client {
|
||||
const char* getFileName() const { return file_name.ref().cstr(); }
|
||||
|
||||
agl::utl::Parameter<sead::SafeString> name;
|
||||
agl::utl::Parameter<sead::SafeString> file_name;
|
||||
agl::utl::Parameter<bool> is_valid;
|
||||
agl::utl::ParameterObj obj;
|
||||
AttClient* client;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(Client, 0xa8);
|
||||
|
||||
AttClientList() : ParamIO("atcllist", 0) {}
|
||||
~AttClientList() override;
|
||||
AttClientList(const AttClientList&) = delete;
|
||||
auto operator=(const AttClientList&) = delete;
|
||||
|
||||
const AttPos& getAttPos() const { return mAttPos; }
|
||||
bool isForceEdit() const { return mForceEdit.ref(); }
|
||||
const sead::Buffer<Client>& getClients() const { return mClients; }
|
||||
|
||||
void addClient_(s32 index, AttClient* client) { mClients[index].client = client; }
|
||||
|
||||
void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override;
|
||||
bool needsParse() const override { return true; }
|
||||
bool parse_(u8* data, size_t size, sead::Heap* heap) override;
|
||||
bool finishParsing_() override;
|
||||
bool m7_() override;
|
||||
|
||||
private:
|
||||
agl::utl::ParameterList mAttClientsList;
|
||||
agl::utl::ParameterObj mAttPosObj;
|
||||
AttPos mAttPos;
|
||||
agl::utl::Parameter<bool> mForceEdit;
|
||||
sead::Buffer<Client> mClients;
|
||||
};
|
||||
KSYS_CHECK_SIZE_NX150(AttClientList, 0x3f0);
|
||||
|
||||
} // namespace ksys::res
|
Loading…
Reference in New Issue