CBall.cpp 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. #include "CBall.h"
  2. CBall cBall;
  3. uint16 CBall::s_iAirResistanceDistMult[201];
  4. //-------------------------------------------------------------------------------------------------
  5. //00156E3C
  6. void CBall::UpdateFrame() {
  7. }
  8. //-------------------------------------------------------------------------------------------------
  9. //00156F38
  10. void CBall::CheckEvents() {
  11. }
  12. //-------------------------------------------------------------------------------------------------
  13. //001575DC
  14. void CBall::ClampSpeed(int, int) {
  15. }
  16. //-------------------------------------------------------------------------------------------------
  17. //00157648
  18. void CBall::Stop() {
  19. LOGE("CBall::Stop%p",this);
  20. }
  21. //-------------------------------------------------------------------------------------------------
  22. //00157668
  23. void CBall::SetVel(int i1, int i2, int i3) {
  24. LOGE("%p%x%x%xCBall::SetVel",this,i1,i2,i3);
  25. }
  26. //-------------------------------------------------------------------------------------------------
  27. //00157678
  28. void CBall::SetVelRel(int i1, int i2, int i3) {
  29. LOGE("%p%x%x%xCBall::SetVel",this,i1,i2,i3);
  30. }
  31. //-------------------------------------------------------------------------------------------------
  32. //00157698
  33. void CBall::AdjustKickToPos(TPoint) {
  34. }
  35. //-------------------------------------------------------------------------------------------------
  36. //001577B4
  37. int CBall::SetBallMoveToPosSpin(TPoint3D *a1, int a2, int a3, TPoint3D a4, TPoint3D a5, int a6, int a7) {
  38. LOGE("CBall::SetBallMoveToPosSpin%p%d%d%d%d",a1,a2,a3,a6,a7);
  39. LOGE("%d%d%d",a4.dz_8,a4.point_0.dx_0,a4.point_0.dy_4);
  40. LOGE("%d%d%d",a5.dz_8,a5.point_0.dx_0,a5.point_0.dy_4);
  41. return rand();
  42. }
  43. //-------------------------------------------------------------------------------------------------
  44. //0015799E
  45. CBall& CBall::operator=(CBall const & ball1) {
  46. return *this;
  47. }
  48. //-------------------------------------------------------------------------------------------------
  49. //00157A3C
  50. int CBall::SetBallMoveToPosLowSpin(TPoint3D *, int, int, TPoint3D, TPoint3D, int, int) {
  51. return 0;
  52. }
  53. //-------------------------------------------------------------------------------------------------
  54. //00157C94
  55. int CBall::GetPassPowerX(int, int) {
  56. return 0;
  57. }
  58. //-------------------------------------------------------------------------------------------------
  59. //00157D08
  60. int CBall::GetPassLength(int, int) {
  61. return 0;
  62. }
  63. //-------------------------------------------------------------------------------------------------
  64. //00157DA4
  65. /**
  66. * 它计算两点之间的距离。
  67. *
  68. * @param pt1 输出向量
  69. * @param pt2 球的当前位置
  70. * @param pt3 目的地点
  71. * @param i4 两点之间的距离
  72. * @param i5 空气阻力
  73. * @param i6 未知
  74. *
  75. * @return 到达目的地的步数。
  76. */
  77. int CBall::SetBallMoveToPos(TPoint3D* pt1, TPoint3D pt2, TPoint3D pt3, int i4, int i5, int i6) {
  78. TPoint pt_0;
  79. pt_0.dx_0 = pt3.point_0.dx_0 - pt2.point_0.dx_0;
  80. pt_0.dy_4 = pt3.point_0.dy_4 - pt2.point_0.dy_4;
  81. // 157db8
  82. int Mag_r7 = XMATH_Mag(&pt_0);
  83. int tmp_r5;
  84. bool b_r7;
  85. // 157dca
  86. if (i5 >= 1) {
  87. // 157dce
  88. if (Mag_r7 != 0) {
  89. // 157dd0
  90. int tmp_r1 = i5;
  91. if (i5 <= 1)
  92. tmp_r1 = 1;
  93. tmp_r5 = Mag_r7 / tmp_r1;
  94. } else {
  95. // 157e12
  96. tmp_r5 = 30;
  97. }
  98. // 157e1e
  99. while (tmp_r5 < 512) {
  100. // 157e24
  101. if ((CBall::s_iAirResistanceDistMult[tmp_r5] * tmp_r5 / 2048) * i5 >= Mag_r7)
  102. break;
  103. tmp_r5++;
  104. }
  105. b_r7 = true;
  106. } else {
  107. // 157de2
  108. tmp_r5 = i4;
  109. int tmp_r1 = 1;
  110. int tmp_r6 = 1;
  111. // 157dea
  112. if (tmp_r5 > 1)
  113. tmp_r1 = tmp_r5;
  114. int tmp_r0 = (Mag_r7 / tmp_r1) << 11;
  115. uint tmp_r10 = CBall::s_iAirResistanceDistMult[tmp_r5];
  116. if (tmp_r10 > 1)
  117. tmp_r6 = tmp_r10;
  118. i5 = tmp_r0 / tmp_r6;
  119. b_r7 = false;
  120. // 157e10
  121. }
  122. // 157e40
  123. XMATH_Normalize(&pt_0, i5);
  124. *pt1 = pt_0;
  125. int r0_i=tmp_r5 * tmp_r5 * 98; //必须这样写 原来的写法除法不对
  126. pt1->dz_8 = ((r0_i>>1) + (pt3.dz_8 - pt2.dz_8)) / tmp_r5;
  127. // 157e62
  128. if (i6 != 0) {
  129. // 157e6a
  130. pt1->dz_8 = (pt1->dz_8 << 10) / (1024 + tGame.mTMath_6734.field_394 / 2);
  131. // 157e88
  132. }
  133. // 157e8c
  134. int Result = XMATH_Mag3D(pt1);
  135. if (b_r7)
  136. Result = tmp_r5;
  137. return Result;
  138. }
  139. //-------------------------------------------------------------------------------------------------
  140. //00157EAC
  141. int CBall::SetBallMoveToPosLow(TPoint3D *a1, TPoint3D a2, TPoint3D a3, int a4, int a5) {
  142. LOGE("CBall::SetBallMoveToPosLow%p%x%x",a1,a4,a5);
  143. LOGE("%x%x%x",a2.dz_8,a2.point_0.dx_0,a2.point_0.dy_4);
  144. LOGE("%x%x%x",a3.dz_8,a3.point_0.dx_0,a3.point_0.dy_4);
  145. LOGE("%x%x%x",a1->dz_8,a1->point_0.dx_0,a1->point_0.dy_4);
  146. return rand();
  147. }
  148. //-------------------------------------------------------------------------------------------------
  149. //00157FF4
  150. void CBall::AirResistanceInit() {
  151. }
  152. //-------------------------------------------------------------------------------------------------
  153. //0015806C
  154. void CBall::ProjectionPassLengthInit() {
  155. }
  156. //-------------------------------------------------------------------------------------------------
  157. //00158148
  158. void CBall::PlayNetSound() {
  159. }
  160. //-------------------------------------------------------------------------------------------------
  161. //0015818C
  162. void CBall::CornerFlagCollision(int, int) {
  163. }
  164. //-------------------------------------------------------------------------------------------------
  165. //00158228
  166. int CBall::PointBallTest(TPoint *, int) {
  167. return 0;
  168. }
  169. //-------------------------------------------------------------------------------------------------
  170. //00158254
  171. void CBall::DoBallGoalBounce() {
  172. }
  173. //-------------------------------------------------------------------------------------------------
  174. //00158638
  175. void CBall::Deflect() {
  176. LOGE("%pCBall::Deflect",this);
  177. }
  178. //-------------------------------------------------------------------------------------------------
  179. //001586DC
  180. bool CBall::CheckPostXYCol(TPoint3D) {
  181. return false;
  182. }
  183. //-------------------------------------------------------------------------------------------------
  184. //001588E8
  185. bool CBall::CheckPostYZCol(TPoint3D) {
  186. return false;
  187. }
  188. //-------------------------------------------------------------------------------------------------
  189. //0015897C
  190. bool CBall::DoBallPostCollisions() {
  191. return false;
  192. }
  193. //-------------------------------------------------------------------------------------------------
  194. //001589CC
  195. bool CBall::BannerCollisionX(int) {
  196. return false;
  197. }
  198. //-------------------------------------------------------------------------------------------------
  199. //00158A60
  200. bool CBall::BannerCollisionY(int) {
  201. return false;
  202. }
  203. //-------------------------------------------------------------------------------------------------
  204. //001592A0
  205. void CBall::CounterBallSpinZ(int) {
  206. }
  207. //-------------------------------------------------------------------------------------------------
  208. //001592F8
  209. void CBall::ApplySpin(TPoint3D *, TPoint3D *, int, int) {
  210. }
  211. //-------------------------------------------------------------------------------------------------
  212. //00159334
  213. void CBall::ApplyExactSpin(TPoint3D *, TPoint3D *, int, int) {
  214. }
  215. //-------------------------------------------------------------------------------------------------
  216. //00159370
  217. void CBall::ApplyGroundSpin(TPoint3D *, TPoint3D *) {
  218. }
  219. //-------------------------------------------------------------------------------------------------
  220. //00159404
  221. void CBall::CalcSpeed() {
  222. }
  223. //-------------------------------------------------------------------------------------------------
  224. //0015946C
  225. void CBall::CalcVars() {
  226. }
  227. //-------------------------------------------------------------------------------------------------
  228. //001595A4
  229. void CBall::CheckBallInGoal() {
  230. }
  231. //-------------------------------------------------------------------------------------------------