CPlayer.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554
  1. //CPlayer - [2020-04-13 11:57:47]
  2. #ifndef _CPLAYER_H_
  3. #define _CPLAYER_H_
  4. #include "common.h"
  5. #include "TAnimData.h"
  6. #include "TPlayerInfo.h"
  7. #include "CAnimManager.h"
  8. /*
  9. 0011DE8C CPlayer::SetPos(int,int)
  10. 00125D8C CPlayer::SetPos(TPoint3D)
  11. 00154314 CPlayer::GetDistance(TPoint)
  12. 0015432C CPlayer::GetDistanceSq(TPoint)
  13. 0015CBD0 CPlayer::SetPos(TPoint)
  14. 0016E630 CPlayer::UpdateFE()
  15. 0016E64E CPlayer::UpdateRot()
  16. 0016E6B0 CPlayer::UpdateHeadRot()
  17. 0016E7A4 CPlayer::UpdateFinalise()
  18. 0016E7C2 CPlayer::Update()
  19. 0016E81A CPlayer::UpdateSprint()
  20. 0016E874 CPlayer::UpdateFace()
  21. 0016E9BC CPlayer::UpdatePosVel()
  22. 0016EB6C CPlayer::UpdateFuturePos()
  23. 0016EB86 CPlayer::UpdateBallInHands()
  24. 0016EB88 CPlayer::SetPos(int,int,int)
  25. 0016EBDE CPlayer::SetPosDest()
  26. 0016EBE6 CPlayer::SetMoveDest(int,int)
  27. 0016EBF2 CPlayer::SetMoveDest(TPoint)
  28. 0016EBFE CPlayer::SetRotExplicit(int)
  29. 0016EC02 CPlayer::SetRot(int,bool)
  30. 0016EC0C CPlayer::SetRot(TPoint,bool)
  31. 0016EC20 CPlayer::GetRotPoint(TPoint)
  32. 0016EC34 CPlayer::SetFace(int)
  33. 0016EC3A CPlayer::SetFace(int,int)
  34. 0016EC48 CPlayer::SetFace(TPoint)
  35. 0016EC56 CPlayer::SetFaceDest()
  36. 0016EC7A CPlayer::Stop(int)
  37. 0016EC8E CPlayer::GetRotDest()
  38. 0016ECB6 CPlayer::GetRotPoint(TPoint3D)
  39. 0016ECCC CPlayer::GetRotBall()
  40. 0016ECF0 CPlayer::GetDistance(CPlayer*)
  41. 0016ED1C CPlayer::GetDistanceSq(CPlayer*)
  42. 0016ED40 CPlayer::SetSpaceRot(int,int)
  43. 0016ED8A CPlayer::GetMoveDistance()
  44. 0016ED96 CPlayer::Init()
  45. 0016EDD0 CPlayer::SetupGoally(int,TPlayerInfo *)
  46. 0016EEC6 CPlayer::SetupPlayer(int,int,TPlayerInfo *)
  47. 0016EFBC CPlayer::SetupStandard()
  48. 0016F008 CPlayer::SetupOfficial()
  49. 0016F044 CPlayer::Reset()
  50. 0016F114 CPlayer::CancelHeadInputControl()
  51. 0016F11C CPlayer::SetHeadRotRel(int,bool)
  52. 0016F12C CPlayer::GetBonePos(int)
  53. 0016F13C CPlayer::GetTimePos(int)
  54. 0016F280 CPlayer::AttributeInterpolate_Internal(EPlayerAttribute,int,int,int,int,int)
  55. 0016F324 CPlayer::UpdateAction()
  56. 0016F3D4 CPlayer::ActionTend(int,TPoint3D *)
  57. 0016F734 CPlayer::UpdateActionSlideTackleX(int)
  58. 0016FA40 CPlayer::UpdateActionSlideTackle(int)
  59. 0016FAAC CPlayer::UpdateActionConservativeTackle(int)
  60. 0016FB24 CPlayer::UpdateActionGKSave(int)
  61. 0016FB94 CPlayer::UpdateActionDeek(int)
  62. 0016FE80 CPlayer::UpdateActionControl(int)
  63. 0016FF24 CPlayer::UpdateActionKick(int)
  64. 0016FF78 CPlayer::UpdateActionGKKick(int)
  65. 0016FFC8 CPlayer::ClearAction()
  66. 0016FFD4 CPlayer::ActionCheckIsStillValidRange(int,int,int)
  67. 001700C0 CPlayer::KickFail()
  68. 001700E4 CPlayer::ActionUpdateDynamic()
  69. 0017012C CPlayer::ActionTendSetupDest(TPoint3D)
  70. 001701D0 CPlayer::ActionTendSetup(TActionSetup *,EACTION)
  71. 00170242 CPlayer::ActionGetPosFromDest()
  72. 001702B0 CPlayer::Animate(int)
  73. 0017039C CPlayer::ApplyRootBoneOfs(TAnimData *,int)
  74. 00170440 CPlayer::SetNextState(TAnimData *)
  75. 001704DC CPlayer::GetAnimData()
  76. 001704F4 CPlayer::SetAnim(int)
  77. 00170694 CPlayer::GetRootBoneMove(TPoint *)
  78. 0017077C CPlayer::GetTrueRot()
  79. 00170820 CPlayer::AnimBlendNeeded()
  80. 0017082C CPlayer::UpdateAnimCalcs()
  81. 001708D0 CPlayer::SetTrophyData(ETrophyPos,ushort,ushort)
  82. 001708DE CPlayer::ClearBlend()
  83. 001708E8 CPlayer::UpdateJostlePoint()
  84. 00170A14 CPlayer::SetReaction(int,int,int)
  85. 00170A50 CPlayer::UpdateAnimation()
  86. 00170BD0 CPlayer::OverrideAnimFrame(int)
  87. 00170C0C CPlayer::EnableIdleAnims(bool)
  88. 00170C14 CPlayer::SetAnimFromStateGen(int,int,int)
  89. 00170D10 CPlayer::SetAnimFromStateI()
  90. 00170DD4 CPlayer::GetRootBoneOfs(TPoint *,TAnimData *)
  91. 00170E50 CPlayer::UpdateActOKTime()
  92. 00170E98 CPlayer::GetActionTime()
  93. 00170EC8 CPlayer::GetAnimTime()
  94. 00170EE0 CPlayer::SetAnimFromStateAction(int,int,int,int,int,int,TActionSetup *,int,int)
  95. 001714E4 CPlayer::GetAnimActionPoint(TPoint *,TAnimData *,int,int)
  96. 00171534 CPlayer::GetActionPoint(TPoint3D *)
  97. 001715EC CPlayer::GetBonePosition(int,TPoint3D *)
  98. 00171798 CPlayer::GetHandPosition(TPoint3D *,bool)
  99. 001717A8 CPlayer::GetHandsPosition(int)
  100. 00171868 CPlayer::GetBoneOrientation(int,TPoint3D *)
  101. 00172634 CPlayer::GetDistanceSq(TPoint3D)
  102. 00172EB2 CPlayer::Fell(TPoint,bool)
  103. 00172EE4 CPlayer::Fell(int,bool)
  104. 00172F78 CPlayer::Trip(int,int)
  105. 00172FF8 CPlayer::UpdateLogic()
  106. 00173080 CPlayer::UpdateIdle()
  107. 00173188 CPlayer::UpdateReactions()
  108. 001731B8 CPlayer::UpdateBallReactions()
  109. 001731CA CPlayer::UpdateFall()
  110. 00173208 CPlayer::UpdateAvoid()
  111. 001733C4 CPlayer::IsWalking()
  112. 001733EC CPlayer::IsSprinting()
  113. 00173414 CPlayer::IsStanding()
  114. 0017341E CPlayer::IsFacing(int,int)
  115. 00173442 CPlayer::IsAtDest(TPoint *,int)
  116. 0017346C CPlayer::UpdateMovement()
  117. 00173DBA CPlayer::SetStateStand(bool)
  118. 00173DD4 CPlayer::SetStateLoco()
  119. 00173E58 CPlayer::SetAnimFromStateLoco(int,int,int)
  120. 00174074 CPlayer::CheckAvoid(TPoint *,int,int)
  121. 001741FC CPlayer::SetConstantSpeed(bool)
  122. 00174204 CPlayer::GetAverageRunSpeed()
  123. 00174260 CPlayer::SetAverageRunSpeed(int)
  124. 00174290 CPlayer::GetInterceptRunSpeed()
  125. 00174294 CPlayer::GetWalkSpeed()
  126. 001742B4 CPlayer::GetSprintSpeed()
  127. 00174310 CPlayer::GetTargetRunSpeed()
  128. 0017432C CPlayer::GetCurrentRunSpeed()
  129. 00174458 CPlayer::GetRunSpeed()
  130. 001744CC CPlayer::AttributeInterpolate(EPlayerAttribute,int,int)
  131. 001744E2 CPlayer::GetMoveSpeed()
  132. 001744E8 CPlayer::GetInterceptMaxHeight()
  133. 00174530 CPlayer::SetUrgency(int)
  134. 00174550 CPlayer::SetUrgencyTime(int,bool)
  135. 0017464C CPlayer::UpdateUrgency()
  136. 001746EE CPlayer::GetDirMoveX()
  137. 00174702 CPlayer::GetDirMoveY()
  138. 0017471E CPlayer::NewPlayerStateX(int,int,int)
  139. 0017472E CPlayer::NewPlayerStateXF(int,int,int,int)
  140. 00174778 CPlayer::NewPlayerStateGen(int)
  141. 001747A8 CPlayer::NewPlayerStateData(int,int,int,int)
  142. 001748A8 CPlayer::NewPlayerStateDataNIS(int,int,int,int)
  143. 001749A0 CPlayer::CheckBlockedOff(int)
  144. 00174A24 CPlayer::NewPlayerStateXFKick(TPoint3D,int,int,TActionSetup *,int,int)
  145. 00174ADC CPlayer::UpdateTake()
  146. 00174C9C CPlayer::ControlTakeBall(int)
  147. 00174FBC CPlayer::SetAnimControl(int,int,int,int,int,int,int,TActionSetup *)
  148. 0017555C CPlayer::ControlFinish(int,int,int)
  149. 00175968 CPlayer::SetAnimTurn(int,int,int,int,int,int,int,TActionSetup *)
  150. 00175B2C CPlayer::Turn(int,int,bool)
  151. 00178AAC CPlayer::operator=(CPlayer const&)
  152. 0x1A4
  153. */
  154. //-------------------------------------------------------------------------------------------------
  155. //长度至少是0x28
  156. struct TActionSetup {
  157. int field_0;
  158. int field_4;
  159. int field_8;
  160. volatile int field_C;
  161. TPoint3D tPoint3D_10;
  162. TPoint3D tPoint3D_1C;
  163. };
  164. //-------------------------------------------------------------------------------------------------
  165. enum EPlayerAttribute {
  166. EPlayerAttribute_0,
  167. EPlayerAttribute_1,
  168. EPlayerAttribute_2,
  169. EPlayerAttribute_3,
  170. EPlayerAttribute_4,
  171. EPlayerAttribute_5,
  172. EPlayerAttribute_6,
  173. EPlayerAttribute_7,
  174. EPlayerAttribute_8,
  175. EPlayerAttribute_9,
  176. EPlayerAttribute_10,
  177. EPlayerAttribute_11,
  178. EPlayerAttribute_12,
  179. EPlayerAttribute_13,
  180. EPlayerAttribute_14,
  181. EPlayerAttribute_15,
  182. EPlayerAttribute_16,
  183. };
  184. //-------------------------------------------------------------------------------------------------
  185. enum EACTION {
  186. EACTION_0,
  187. EACTION_1,
  188. EACTION_2,
  189. EACTION_3,
  190. EACTION_4,
  191. EACTION_5,
  192. EACTION_6,
  193. EACTION_7,
  194. EACTION_8,
  195. EACTION_9,
  196. EACTION_10,
  197. EACTION_11,
  198. };
  199. //-------------------------------------------------------------------------------------------------
  200. enum ETrophyPos {
  201. ETrophyPos_0,
  202. ETrophyPos_1,
  203. ETrophyPos_2,
  204. ETrophyPos_3,
  205. ETrophyPos_4,
  206. ETrophyPos_5,
  207. };
  208. //-------------------------------------------------------------------------------------------------
  209. struct TPlayerAI {
  210. float f_0;
  211. int field_4;
  212. float f_8;
  213. int field_C;
  214. int field_10;
  215. int field_14;
  216. int field_18;
  217. int field_1C;
  218. TPlayerAI &operator=(TPlayerAI const &other) {
  219. this->f_0 = other.f_0;
  220. this->field_4 = other.field_4;
  221. this->f_8 = other.f_8;
  222. this->field_C = other.field_C;
  223. if (this != &other) {
  224. this->field_10 = other.field_10;
  225. this->field_14 = other.field_14;
  226. }
  227. this->field_18 = other.field_18;
  228. this->field_1C = other.field_1C;
  229. return *this;
  230. };
  231. };
  232. //0x32
  233. #pragma pack(1)
  234. struct CPlayer_str_32 {
  235. uint8 uc_0; //0016F03E STRB.W R0, [R4,#0x44]
  236. uint8 uc_1;
  237. uint8 uc_2;
  238. uint8 uc_3;
  239. short s_4;
  240. short s_6;
  241. uint field_8; //00170606 这儿确定是无符号的
  242. uint16 s_C;
  243. short s_E;
  244. int field_10;
  245. int field_14;
  246. short s_18;
  247. short s_1A;
  248. int field_1C;
  249. int field_20;
  250. uint field_24;
  251. sint16 s_28;
  252. short s_2A;
  253. // union {
  254. // struct {
  255. // short ss_2C;
  256. // sint16 sBlend_2E; //0017033A
  257. // } s_2C;
  258. // int field_2C; //001705D4
  259. // } u_2C;
  260. short s_2C;
  261. sint16 sBlend_2E; //0017033A
  262. uint16 s_30;
  263. };
  264. #pragma pack()
  265. //0x58 大小确定,字段类型不确定
  266. struct CPlayer_str_58 {
  267. uchar uc_0;
  268. uchar uc_1;
  269. uchar uc_2;
  270. uchar uc_3;
  271. int field_4;
  272. int field_8;
  273. int field_C[14];
  274. int field_44;
  275. int field_48;
  276. short s_4C;
  277. short s_4E;
  278. union {
  279. struct {
  280. uint16 field_50; //LDRH.W R1, [R0,#0xF2] r0=CPlayer 可能有两个uint16
  281. uint16 field_52;
  282. }s_50;
  283. int ui_50;
  284. } u_50;
  285. int field_54;
  286. };
  287. //-------------------------------------------------------------------------------------------------
  288. class CPlayer {
  289. public:
  290. void SetPos(int, int); //0011DE8C
  291. void SetPos(TPoint3D); //00125D8C
  292. uint64_t GetDistance(TPoint); //00154314
  293. int GetDistanceSq(TPoint); //0015432C
  294. void SetPos(TPoint); //0015CBD0
  295. void UpdateFE(); //0016E630
  296. void UpdateRot(); //0016E64E
  297. void UpdateHeadRot(); //0016E6B0
  298. void UpdateFinalise(); //0016E7A4
  299. void Update(); //0016E7C2
  300. void UpdateSprint(); //0016E81A
  301. void UpdateFace(); //0016E874
  302. void UpdatePosVel(); //0016E9BC
  303. void UpdateFuturePos(); //0016EB6C
  304. void UpdateBallInHands(); //0016EB86
  305. void SetPos(int, int, int); //0016EB88
  306. void SetPosDest(); //0016EBDE
  307. void SetMoveDest(int, int); //0016EBE6
  308. void SetMoveDest(TPoint); //0016EBF2
  309. void SetRotExplicit(int); //0016EBFE
  310. void SetRot(int, bool); //0016EC02
  311. void SetRot(TPoint, bool); //0016EC0C
  312. ushort GetRotPoint(TPoint); //0016EC20
  313. void SetFace(int); //0016EC34
  314. void SetFace(int, int); //0016EC3A
  315. void SetFace(TPoint); //0016EC48
  316. void SetFaceDest(); //0016EC56
  317. void Stop(int); //0016EC7A
  318. int GetRotDest(); //0016EC8E
  319. ushort GetRotPoint(TPoint3D); //0016ECB6
  320. int GetRotBall(); //0016ECCC
  321. void GetDistance(CPlayer *); //0016ECF0
  322. void GetDistanceSq(CPlayer *); //0016ED1C
  323. void SetSpaceRot(int, int); //0016ED40
  324. void GetMoveDistance(); //0016ED8A
  325. void Init(); //0016ED96
  326. void SetupGoally(int, TPlayerInfo *); //0016EDD0
  327. void SetupPlayer(int, int, TPlayerInfo *); //0016EEC6
  328. void SetupStandard(); //0016EFBC
  329. void SetupOfficial(); //0016F008
  330. void Reset(); //0016F044
  331. void CancelHeadInputControl(); //0016F114
  332. void SetHeadRotRel(int, bool); //0016F11C
  333. TPoint3D GetBonePos(int); //0016F12C
  334. TPoint GetTimePos(int); //0016F13C
  335. int AttributeInterpolate_Internal(EPlayerAttribute, int, int, int, int, int); //0016F280
  336. void UpdateAction(); //0016F324
  337. int ActionTend(int, TPoint3D *); //0016F3D4
  338. void UpdateActionSlideTackleX(int); //0016F734
  339. void UpdateActionSlideTackle(int); //0016FA40
  340. void UpdateActionConservativeTackle(int); //0016FAAC
  341. void UpdateActionGKSave(int); //0016FB24
  342. void UpdateActionDeek(int); //0016FB94
  343. void UpdateActionControl(int); //0016FE80
  344. void UpdateActionKick(int); //0016FF24
  345. void UpdateActionGKKick(int); //0016FF78
  346. void ClearAction(); //0016FFC8
  347. bool ActionCheckIsStillValidRange(int, int, int); //0016FFD4
  348. void KickFail(); //001700C0
  349. void ActionUpdateDynamic(); //001700E4
  350. void ActionTendSetupDest(TPoint3D); //0017012C
  351. void ActionTendSetup(TActionSetup *, EACTION); //001701D0
  352. TPoint3D ActionGetPosFromDest(); //00170242
  353. void Animate(int); //001702B0
  354. void ApplyRootBoneOfs(TAnimData *, int); //0017039C
  355. void SetNextState(TAnimData *); //00170440
  356. TAnimData *GetAnimData(); //001704DC
  357. void SetAnim(int); //001704F4
  358. void GetRootBoneMove(TPoint *); //00170694
  359. short GetTrueRot(); //0017077C
  360. bool AnimBlendNeeded(); //00170820
  361. void UpdateAnimCalcs(); //0017082C
  362. void SetTrophyData(ETrophyPos, ushort, ushort); //001708D0
  363. void ClearBlend(); //001708DE
  364. void UpdateJostlePoint(); //001708E8
  365. bool SetReaction(int, int, int); //00170A14
  366. void UpdateAnimation(); //00170A50
  367. void OverrideAnimFrame(int); //00170BD0
  368. void EnableIdleAnims(bool); //00170C0C
  369. void SetAnimFromStateGen(int, int, int); //00170C14
  370. void SetAnimFromStateI(); //00170D10
  371. void GetRootBoneOfs(TPoint *, TAnimData *); //00170DD4
  372. void UpdateActOKTime(); //00170E50
  373. int GetActionTime(); //00170E98
  374. void GetAnimTime(); //00170EC8
  375. int SetAnimFromStateAction(int, int, int, int, int, int, TActionSetup *, int, int); //00170EE0
  376. void GetAnimActionPoint(TPoint *, TAnimData *, int, int); //001714E4
  377. void GetActionPoint(TPoint3D *); //00171534
  378. void GetBonePosition(int, TPoint3D *); //001715EC
  379. void GetHandPosition(TPoint3D *, bool); //00171798
  380. TPoint3D GetHandsPosition(int i1); //001717A8
  381. void GetBoneOrientation(int, TPoint3D *); //00171868
  382. int GetDistanceSq(TPoint3D); //00172634
  383. bool Fell(TPoint, bool); //00172EB2
  384. bool Fell(int, bool); //00172EE4
  385. bool Trip(int, int); //00172F78
  386. void UpdateLogic(); //00172FF8
  387. void UpdateIdle(); //00173080
  388. void UpdateReactions(); //00173188
  389. void UpdateBallReactions(); //001731B8
  390. void UpdateFall(); //001731CA
  391. void UpdateAvoid(); //00173208
  392. void IsWalking(); //001733C4
  393. bool IsSprinting(); //001733EC
  394. void IsStanding(); //00173414
  395. void IsFacing(int, int); //0017341E
  396. void IsAtDest(TPoint *, int); //00173442
  397. void UpdateMovement(); //0017346C
  398. void SetStateStand(bool); //00173DBA
  399. void SetStateLoco(); //00173DD4
  400. void SetAnimFromStateLoco(int, int, int); //00173E58
  401. void CheckAvoid(TPoint *, int, int); //00174074
  402. void SetConstantSpeed(bool); //001741FC
  403. int GetAverageRunSpeed(); //00174204
  404. void SetAverageRunSpeed(int); //00174260
  405. void GetInterceptRunSpeed(); //00174290
  406. void GetWalkSpeed(); //00174294
  407. int GetSprintSpeed(); //001742B4
  408. int GetTargetRunSpeed(); //00174310
  409. int GetCurrentRunSpeed(); //0017432C
  410. int GetRunSpeed(); //00174458
  411. int AttributeInterpolate(EPlayerAttribute, int, int); //001744CC
  412. float GetMoveSpeed(); //001744E2
  413. int GetInterceptMaxHeight(); //001744E8
  414. void SetUrgency(int); //00174530
  415. void SetUrgencyTime(int, bool); //00174550
  416. void UpdateUrgency(); //0017464C
  417. void GetDirMoveX(); //001746EE
  418. void GetDirMoveY(); //00174702
  419. void NewPlayerStateX(int, int, int); //0017471E
  420. void NewPlayerStateXF(int, int, int, int); //0017472E
  421. void NewPlayerStateGen(int); //00174778
  422. void NewPlayerStateData(int, int, int, int); //001747A8
  423. void NewPlayerStateDataNIS(int, int, int, int); //001748A8
  424. bool CheckBlockedOff(int); //001749A0
  425. bool NewPlayerStateXFKick(TPoint3D, int, int, TActionSetup *, int, int); //00174A24
  426. void UpdateTake(); //00174ADC
  427. void ControlTakeBall(int); //00174C9C
  428. void SetAnimControl(int, int, int, int, int, int, int, TActionSetup *); //00174FBC
  429. void ControlFinish(int, int, int); //0017555C
  430. void SetAnimTurn(int, int, int, int, int, int, int, TActionSetup *); //00175968
  431. bool Turn(int, int, bool); //00175B2C
  432. CPlayer &operator=(CPlayer const &); //00178AAC
  433. union {
  434. struct {
  435. sint16 s_0; //??? 001D1DAE 在这个地址是取4个字节,int, 存疑
  436. int16 s_2; //0018FC98确定类型
  437. } s_2_0;
  438. uint32 field_0; //0015BBDC 此处可以确定也可能是一个int
  439. } u_0;
  440. TPoint3D ballPosPrev_4;
  441. uint field_10;
  442. TPoint3D Point3D_14;
  443. TPoint point_20; //00170830 此处可以确定
  444. short s_28;
  445. short s_2A;
  446. sint16 s_2C;
  447. uint8 uc_2E;
  448. bool bool_2F;
  449. bool b_30;
  450. bool b_31;
  451. short s_32;
  452. TPoint point_34; //001708BE
  453. TPoint point_3C;
  454. CPlayer_str_32 tStr32_44; //00178B04 由此推断为数据结构,长度为0x32
  455. uint8 uc_76;
  456. uint8 uc_77;
  457. TPoint point_78;
  458. sint16 s_80;
  459. uint16 s_82;
  460. int dFace_84;
  461. uint8 uc_88;
  462. uint8 uc_89;
  463. uint8 uc_8A;
  464. uint8 uc_8B;
  465. int field_8C; //00178B70 ??? 通过此年观察可能是short
  466. //00170A28 此处代码显示 field_8C 为int
  467. short s_90;
  468. short s_92;
  469. short s_94;
  470. short s_96;
  471. TPoint point_98;
  472. CPlayer_str_58 tStr58_A0; //00178B90 此处可以确定是0x58
  473. TPlayerAI tTPlayerAI_F8;
  474. short s_118;
  475. short s_11A;
  476. int field_11C;
  477. sint16 field_120; //0016F09C 00173100 此处显示是short
  478. ushort us_122;
  479. uchar uc_124;
  480. uchar uc_125;
  481. uchar uc_126;
  482. uchar uc_127;
  483. uchar uc_128;
  484. uchar uc_129;
  485. uchar uc_12A;
  486. uchar uc_12B;
  487. uchar uc_12C;
  488. uchar uc_12D;
  489. uchar uc_12E;
  490. uchar uc_12F;
  491. uchar uc_130;
  492. uchar uc_131;
  493. uchar uc_132;
  494. uchar uc_133;
  495. uchar uc_134;
  496. uchar uc_135;
  497. uchar uc_136;
  498. uchar uc_137;
  499. TPoint point_138;
  500. int field_140;
  501. int field_144;
  502. int field_148;
  503. int field_14C;
  504. bool b_150;
  505. uchar uc_151;
  506. uchar uc_152;
  507. uchar uc_153;
  508. EACTION eAction_154;
  509. volatile sint16 s_158;
  510. volatile short s_15A;
  511. short s_15C;
  512. short s_15E;
  513. uchar uc_160;
  514. uchar uc_161;
  515. short s_162;
  516. TPoint3D point3D_164;
  517. int field_170;
  518. int field_174;
  519. //TriangleI triangle_178; //00178C6A 由空间中的三个点组成的数据结构,猜测是三角型
  520. TPoint3D aPoint3D_178[3];
  521. //TPoint3D point3D_184;
  522. //TPoint3D point3D_190;
  523. ETrophyPos eTrophyPos_19C;
  524. ushort s_1A0;
  525. ushort s_1A2;
  526. };
  527. extern int LOCO_SPEED_WALK_MIN; // 0033E988
  528. extern int LOCO_SPEED_WALK_MAX ; // 0033E98C
  529. extern int LOCO_SPEED_WALK_AVG; // 0033E990
  530. extern int LOCO_SPEED_JOG_MIN ; // 0033E994
  531. extern int LOCO_SPEED_JOG_MAX; // 0033E998
  532. extern int LOCO_SPEED_JOG_AVG; // 0033E99C
  533. extern int LOCO_SPEED_SPRINT_MIN; // 0033E9A0
  534. extern int LOCO_SPEED_SPRINT_MAX; // 0033E9A4
  535. extern int LOCO_SPEED_SPRINT_AVG; // 0033E9A8
  536. /*
  537. 0016EC34 STR.W R1, [R0,#0x84]
  538. */
  539. //-------------------------------------------------------------------------------------------------
  540. #endif //_CPLAYER_H_