TFreeControl.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. // _TFreeControl_H_ - [2020-06-22 11:41:46]
  2. #ifndef _TFreeControl_H_
  3. #define _TFreeControl_H_
  4. #include "ACT.h"
  5. #include "global_func.h"
  6. enum EFreePropType {
  7. EFreePropType_ner=-1,
  8. EFreePropType_0=0,
  9. EFreePropType_1,
  10. EFreePropType_2,
  11. EFreePropType_3,
  12. EFreePropType_4,
  13. EFreePropType_5,
  14. };
  15. struct TAnim {
  16. int m_iTick_0;
  17. int m_iAnimID_4;
  18. int m_iRot_8;
  19. };
  20. // sizeof(TDest) == 0x1C
  21. struct TFreeMoveInfo {
  22. int m_iTick_0;
  23. TPoint m_tDestPoint_4;
  24. int m_iFace_C;
  25. int m_iUrgency_10;
  26. TPoint m_tMoveInfluence_14;
  27. //SH_ALW_INLINE
  28. void UpdateDest(const TPoint& point) {
  29. if ((void*)&m_tDestPoint_4 != &point) {
  30. m_tDestPoint_4 = point;
  31. }
  32. };
  33. // SH_ALW_INLINE
  34. void UpdateMoveInfluence(const TPoint& point) {
  35. if ((void*)&m_tMoveInfluence_14 != &point) {
  36. m_tMoveInfluence_14 = point;
  37. }
  38. };
  39. };
  40. // sizeof = 0x548
  41. struct TFreePlayer {
  42. int filed_0;
  43. TPoint m_tPoint_4;
  44. int m_iHoldPosTime_C;
  45. int m_iRot_10;
  46. bool m_iTeamMoveInfluence_14;
  47. TPoint m_tPoint_18;
  48. int m_iMoveResponseTime_20;
  49. int m_iKickResponseTime_24;
  50. bool m_bStatic_28;
  51. int m_iNodeTDestSetLoopIndex_2C;
  52. TFreeMoveInfo m_tPlayerDesk_30[32];
  53. int m_iNodeAnimSetLoopIndex_3B0;
  54. TAnim m_tAnim_3B4[32];
  55. int m_iAction_534;
  56. int m_iActionPassTarget_538;
  57. int m_iActionControlCount_53C;
  58. int m_iActionControlRot_540;
  59. float m_fActionControlKickAhead_544;
  60. };
  61. struct TMoveInfluence {
  62. TPoint m_tMoveInfluencePoint_0;
  63. int m_iMoveInfluenceDelayMin_8;
  64. int m_iMoveInfluenceDelayMax_C;
  65. };
  66. struct TFreeProp {
  67. TPoint3D m_tPoint3D_0;
  68. EFreePropType m_iType_C;
  69. int m_iRot_10;
  70. };
  71. // 0x7634
  72. struct TFreeGoal {
  73. int m_iVersion_0;
  74. float m_f_4;
  75. int m_iWeather_8;
  76. int m_iMaxPhaseCount_C;
  77. bool m_bIndirect_10;
  78. int m_iTeamPlayerIndex_14[2]; // 14 遍历两只球队成员node对象时用到的计数器跳出循环时的值
  79. // 18
  80. TFreePlayer m_tTeamPlayerInfo_1C[2][11]; // 0x3A18 * 2; 0x548 * 0xB
  81. TPoint3D m_tBallPos_744C;
  82. int m_iUserPlayer_7458;
  83. int m_iKickPlayer_745C;
  84. int m_iAnimID_7460;
  85. int m_iKickRot_7464;
  86. int m_iShotAnimID_7468;
  87. int m_iShotAnimPlayer_746C;
  88. float m_fShotAnimDistance_7470;
  89. int m_iTEAMMoveResponseTime_7474;
  90. int m_iTEAMKickResponseTime_7478;
  91. int m_iCPUPlayerCloseDownCount_747C;
  92. float m_fCPUCloseDownDist_7480;
  93. int m_iCPUGKRating_7484;
  94. int m_fCPUGKSaveAlwaysDistance_7488;
  95. int m_iCPUGKSaveResponseTime_748C;
  96. float m_fCPUGKSaveSpeed_7490;
  97. float m_fCPUGKSaveDistance_7494;
  98. int m_iCPUGKPosResponseTime_7498;
  99. int m_iCPUKickResponseTime_749C;
  100. int m_iCPUMoveResponseTime_74A0;
  101. TMoveInfluence m_tMoveInfluence_74A4[2];
  102. float m_fTEAMPassForceShotDist_74C4;
  103. float m_fTEAMPassForceShotSpace_74C8;
  104. int m_iShootBias_74CC;
  105. int m_iShootScale_74D0;
  106. int m_iPassBias_74D4;
  107. int m_iPassScale_74D8;
  108. int m_iControlWhenShootBias_74DC;
  109. int m_iControlWhenShootScale_74E0;
  110. int m_iControlWhenPassBias_74E4;
  111. int m_iControlWhenPassScale_74E8;
  112. int m_iControlRepeatReduce_74EC;
  113. int m_iPropCount_74F0;
  114. TFreeProp m_tFreeProp_74F4[16]; // 数组
  115. };
  116. struct TFreeControl_3DC {
  117. int cBuff_0[6]; // 3DC
  118. bool b_18; // 6
  119. bool b_19;
  120. bool b_1A;
  121. bool b_1B;
  122. int field_1C; // 7
  123. int field_20; // 8
  124. };
  125. // sizeof:0x410
  126. class TFreeControl {
  127. public:
  128. TFreeControl& operator=(TFreeControl const&); // 001D5E10
  129. CPlayer* m_pPlayer_0;
  130. TKickSetup field_4;
  131. TPoint PointArr_1C[120];
  132. TFreeControl_3DC cBuff_3DC;
  133. // int filed_3E8; 3
  134. // int filed_3EC; 4
  135. // int filed_3F0; 5
  136. // bool bc_3F4; 6
  137. // bool b_3F5;
  138. // bool b_3F6;
  139. // bool b_3F7;
  140. // int field_3F8; 7
  141. // int field_3FC; 8
  142. TPoint tPoint_400;
  143. int field_408;
  144. int field_40C;
  145. };
  146. // sizeof = 0x30
  147. struct TFreeInfo_0_10 {
  148. int i_0;
  149. int i_4;
  150. TPoint3D tPoint3D_8;
  151. int i_14;
  152. int i_18;
  153. TPoint3D tPoint3D_1C;
  154. int i_28;
  155. uchar uc_2C;
  156. };
  157. struct TFreeInfo_0 {
  158. bool b_0;
  159. bool b_1;
  160. bool b_2;
  161. bool b_3;
  162. uchar uc_4;
  163. uchar uc_5;
  164. uchar uc_6;
  165. uchar unuse_7;
  166. bool b_8;
  167. bool b_9;
  168. bool b_A;
  169. bool b_B;
  170. bool b_C;
  171. uchar uc_D;
  172. uchar uc_E;
  173. uchar uc_F;
  174. TFreeInfo_0_10 field_10[0x80];
  175. int field_1810;
  176. int field_1814;
  177. TFreeGoal* pFREE_tGoal_1818; //此处是FREE_tGoal的指针
  178. int field_181C;
  179. int field_1820;
  180. int field_1824;
  181. uint gamestatus_1828; //这个变量应该表示游戏的状态
  182. int field_182C;
  183. int field_1830;
  184. int field_1834;
  185. int kickTargetTime_1838;
  186. uchar field_183C[4];
  187. int field_1840;
  188. int field_1844;
  189. TPoint3D point3D_1848;
  190. uchar field_1854[4];
  191. int field_1858;
  192. short field_185C;
  193. char field_185E;
  194. int field_1860;
  195. int field_1864;
  196. };
  197. struct TFreeInfo_1C9C {
  198. bool field_1C9C;
  199. int field_1CA0;
  200. char field_1CA4;
  201. int field_1CA8;
  202. int field_1CAC;
  203. char field_1CB0; // 001D57E6 LDRB R0, [R5,R0] 001D41C2 STRH R4, [R6,R1],可能有两种数据类型
  204. char field_1CB1;
  205. TPoint3D m_pt3D_1CB4;
  206. TPoint3D m_pt3D_1CC0;
  207. int field_1CCC;
  208. int field_1CD0;
  209. int field_1CD4;
  210. int field_1CD8;
  211. TPoint3D m_pt3D_1CDC;
  212. TPoint3D m_pt3D_1CE8;
  213. uchar field_1CF4;
  214. uchar field_1CF5;
  215. uchar field_1CF6;
  216. uchar field_1CF7;
  217. int m_iCPUPlayerCloseDownCount_1CF8;
  218. float m_fCPUCloseDownDist_1CFC;
  219. int m_iCPUGKRating_1D00;
  220. float m_fCPUGKSaveAlwaysDistance_1D04;
  221. int m_iCPUGKSaveResponseTime_1D08;
  222. float m_fCPUGKSaveSpeed_1D0C;
  223. float m_fCPUGKSaveDistance_1D10;
  224. int m_iCPUGKPosResponseTime_1D14;
  225. int m_iCPUKickResponseTime_1D18;
  226. int m_iCPUMoveResponseTime_1D1C;
  227. };
  228. /*
  229. 001D59AC TFreeInfo::operator=(TFreeInfo const&);
  230. */
  231. // sizeof:0x1D20
  232. class TFreeInfo {
  233. public:
  234. TFreeInfo& operator=(TFreeInfo const&); // 001D59AC
  235. TFreeInfo_0 filed_0;
  236. int field_1868;
  237. int field_186C;
  238. TPoint field_1870;
  239. int field_1878;
  240. int field_187C;
  241. int field_1880;
  242. int field_1884;
  243. int field_1888;
  244. TFreeControl field_188C;
  245. TFreeInfo_1C9C field_1C9C;
  246. };
  247. #endif //_CAM_H_