CStoryProfile.cpp 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. #include "CStoryProfile.h"
  2. #include "CFTTTime.h"
  3. #include "CMyProfile.h"
  4. #include "XSYS.h"
  5. #include "memctrl.h"
  6. #include "CStoryProfile.h"
  7. #include "CStoryCore.h"
  8. TStoryProfileData CStoryProfile::m_tData;
  9. void TMoveClubs::Serialize(CFTTSerialize &pCFTTSerializer1) {}
  10. // 001E7384
  11. void TStoryProfileData::Serialize(CFTTSerialize &pCFTTSerializer1) {}
  12. //-------------------------------------------------------------------------------------------------
  13. // 001E356A
  14. void CStoryProfile::SetStageStars(int dr1, int dr2) {
  15. filed_0->SetStageStars(dr1, dr2);
  16. }
  17. //-------------------------------------------------------------------------------------------------
  18. // 001E35BA
  19. void CStoryProfile::SetStageComplete(int dr1, int dr2, bool br3) {
  20. filed_0->SetStageComplete(dr1, dr2, br3, true, true);
  21. }
  22. //-------------------------------------------------------------------------------------------------
  23. // 001E75B0 经过单元测试,功能正常
  24. //???汇编不一样,而且还去除了一些不必要的代码
  25. void CStoryProfile::Init() {}
  26. //-------------------------------------------------------------------------------------------------
  27. // 001E7688 经过单元测试,功能正常
  28. //???2个short赋值被优化成了一个str。
  29. void CStoryProfile::SetTrialsClub() {}
  30. //-------------------------------------------------------------------------------------------------
  31. // 001E76B8
  32. void CStoryProfile::Exit() {}
  33. //-------------------------------------------------------------------------------------------------
  34. // 001E76D0
  35. void CStoryProfile::Serialize(CFTTSerialize &a2, bool a3) {}
  36. //-------------------------------------------------------------------------------------------------
  37. // 001E7700 ^_-
  38. //单元测试等级: 游戏运行正常
  39. //单元测试内容: 选择俱乐部调用
  40. //单元测试结果: 正常
  41. ELeague CStoryProfile::GetRandomLeague(ELeague r1_league, ELeague r2_league) {
  42. int r0_i = 4;
  43. ELeague r4_league=r1_league;
  44. ELeague r5_league=r2_league;
  45. if (r1_league < ELeague_0) {
  46. r0_i = 5;
  47. }
  48. if (r2_league >= ELeague_0) {
  49. r0_i -= 1;
  50. }
  51. r0_i = XSYS_Random(r0_i);
  52. ELeague r12_eleague = ELeague_neg1;
  53. if (r5_league != ELeague_5) r12_eleague = ELeague_5;
  54. if (r4_league == ELeague_5) r12_eleague = ELeague_neg1;
  55. ELeague lr_league = ELeague_neg1;
  56. if (r5_league != ELeague_3) lr_league = ELeague_3;
  57. // 001E7738
  58. if (r4_league == ELeague_3) lr_league = ELeague_neg1;
  59. // 001E773E
  60. r2_league = ELeague_neg1;
  61. ELeague r3_league = ELeague_neg1;
  62. if (r5_league != ELeague_4) r2_league = ELeague_4;
  63. // 001E774C
  64. if (r4_league == ELeague_4) r2_league = ELeague_neg1;
  65. // 001E7752
  66. if (r5_league != ELeague_2) r3_league = ELeague_2;
  67. if (r4_league == ELeague_2) r3_league = ELeague_neg1;
  68. if (r5_league == ELeague_0)
  69. r5_league=ELeague_1;
  70. if(r4_league==ELeague_0)
  71. r4_league=ELeague_1;
  72. r4_league=(ELeague)(-(r4_league|r5_league));
  73. // r2_league=ELeague_0;
  74. int r5_i = 0;
  75. r1_league = ELeague_neg1;
  76. // loc_1E7770
  77. // check 符号
  78. while (r1_league == ELeague_neg1 && r5_i < 5) {
  79. // check 符号
  80. if (r0_i > r5_i) {
  81. // 001E777C
  82. r1_league = ELeague_neg1;
  83. // loc_1E7780
  84. r5_i++;
  85. } else {
  86. //loc_1E7784
  87. switch (r5_i & 0x7FFFFFFF) {
  88. case 0:{
  89. //loc_1E7796
  90. r1_league=r4_league;
  91. // loc_1E7780
  92. r5_i++;
  93. break;
  94. }
  95. case 1:{
  96. //loc_1E779A
  97. r1_league=r3_league;
  98. // loc_1E7780
  99. r5_i++;
  100. break;
  101. }
  102. case 2:{
  103. //loc_1E779E
  104. r1_league=r2_league;
  105. // loc_1E7780
  106. r5_i++;
  107. break;
  108. }
  109. case 3:{
  110. //loc_1E77A2
  111. r1_league=lr_league;
  112. // loc_1E7780
  113. r5_i++;
  114. break;
  115. }
  116. case 4:{
  117. //loc_1E77A6
  118. r1_league=r12_eleague;
  119. // loc_1E7780
  120. r5_i++;
  121. break;
  122. }
  123. default: {
  124. // 001E777C
  125. r1_league = ELeague_neg1;
  126. // loc_1E7780
  127. r5_i++;
  128. break;
  129. }
  130. }
  131. }
  132. }
  133. // loc_1E77AA
  134. return r1_league;
  135. }
  136. //-------------------------------------------------------------------------------------------------
  137. // 001E77B0
  138. int CStoryProfile::GetStartingCountry() { return 0; }
  139. //-------------------------------------------------------------------------------------------------
  140. // 001E782C
  141. int CStoryProfile::GetPossibleStartingClubs(int, int *, int) { return 0; }
  142. //-------------------------------------------------------------------------------------------------
  143. // 001E78F4
  144. int CStoryProfile::GetPossibleNewClubs(int, bool, int, int *, int, ELeague,
  145. bool, bool) {
  146. return 0;
  147. }
  148. //-------------------------------------------------------------------------------------------------
  149. // 001E7A00
  150. int CStoryProfile::GetHaveChangedTeamOnStage(int) {
  151. float v = sinf(23.0);
  152. if (v > 120.0) {
  153. printf("ddfffddd");
  154. return 0;
  155. }
  156. return 1;
  157. }
  158. //-------------------------------------------------------------------------------------------------
  159. // 001E7A2C
  160. void CStoryProfile::SetStageClubTeam(int, int) {}
  161. //-------------------------------------------------------------------------------------------------
  162. // 001E7A8C
  163. void CStoryProfile::SetOppoClubTeams(bool) {}
  164. //-------------------------------------------------------------------------------------------------
  165. // 001E7BE0
  166. ushort CStoryProfile::GetStageClubTeam(int) { return 0; }
  167. //-------------------------------------------------------------------------------------------------
  168. // 001E7C10
  169. ushort CStoryProfile::GetClubTeam() { return 0; }
  170. //-------------------------------------------------------------------------------------------------
  171. // 001E7C28
  172. void CStoryProfile::SetOppoNationalTeams() {}
  173. //-------------------------------------------------------------------------------------------------
  174. // 001E7D04
  175. int CStoryProfile::GetNumOppoTeams(int, int) { return 0; }
  176. //-------------------------------------------------------------------------------------------------
  177. // 001E7D64
  178. bool CStoryProfile::SetupNextStage() {
  179. CStoryProfileStages* pSPS = filed_0;
  180. TStorySeason* pTSS_R1 = CStoryCore::m_tStages.list_C + CStoryProfile::m_tData.field_16.filed_2;
  181. int i_R6 = 0;
  182. // 001E7DE6
  183. for (; i_R6 < pTSS_R1->StageCount_d0; i_R6++) { // 001E7D96
  184. // 001E7D9E 001E7D9A
  185. if (!pSPS->GetStagesComplete(pTSS_R1->TStage_d4[i_R6].ID_0)) { // 001E7DAA
  186. break;
  187. } // 001E7DA0
  188. } // 001E7DAA
  189. // 001E7DB8 LDR R0, [R7] 此条指令提到当前块前面,
  190. CStoryCore::m_tStageManager.uc_5DA9 = 0;
  191. bool bRet;
  192. // 001E7DBA
  193. if (i_R6 < pTSS_R1->StageCount_d0) { // 001E7DBE
  194. bRet = true;
  195. // 001E7DC4
  196. if (i_R6 > CStoryProfile::m_tData.field_16.filed_0) { // 001E7DC8
  197. CStoryCore::m_tStageManager.uc_5DA9 = bRet;
  198. } // 001E7DCC
  199. CStoryProfile::m_tData.field_16.filed_0 = i_R6;
  200. } else { // 001E7DD0
  201. bRet = true;
  202. CStoryCore::m_tStageManager.uc_5DA9 = bRet;
  203. CStoryProfile::m_tData.field_16.filed_0 = 0;
  204. CStoryProfile::m_tData.field_16.filed_2++;
  205. CStoryProfile::m_tData.field_2.field_10++;
  206. // 001E7DF2
  207. if (CStoryCore::m_tStages.dCount_8 <= CStoryProfile::m_tData.field_16.filed_2) {
  208. bRet = false;
  209. CStoryProfile::m_tData.field_16.filed_2 = CStoryCore::m_tStages.dCount_8 - 1;
  210. CStoryProfile::m_tData.field_16.filed_0 = pTSS_R1->StageCount_d0;
  211. } // 001E7E04
  212. } // 001E7E04
  213. return bRet;
  214. }
  215. //-------------------------------------------------------------------------------------------------
  216. // 001E7E18
  217. void CStoryProfile::SetSeason(int dr1) {
  218. // CStoryProfile::m_tData.field_18 = dr1;
  219. }
  220. //-------------------------------------------------------------------------------------------------
  221. // 001E7E28
  222. int CStoryProfile::GetOppoTeam(int, int, int, int, TTeamInfo *) { return 0; }
  223. //-------------------------------------------------------------------------------------------------
  224. // 001E7F64
  225. void CStoryProfile::ApplyUserPlayer(TPlayerInfo *) {}
  226. //-------------------------------------------------------------------------------------------------
  227. // 001E7F9C
  228. void CStoryProfile::UseGoldenBoot() {}
  229. //-------------------------------------------------------------------------------------------------
  230. // 001E7FB4
  231. void CStoryProfile::UseRewind() {}
  232. //-------------------------------------------------------------------------------------------------
  233. // 001E7FD8
  234. void CStoryProfile::EnergyUse(int) {}
  235. //-------------------------------------------------------------------------------------------------
  236. // 001E8090
  237. void CStoryProfile::EnergyIncrease(int, bool) {}
  238. //-------------------------------------------------------------------------------------------------
  239. // 001E80C4
  240. void CStoryProfile::SetTimeSinceReboot() {}
  241. //-------------------------------------------------------------------------------------------------
  242. // 001E80DC ^_^
  243. void CStoryProfile::CheckEnergyFallback() { return; }
  244. //-------------------------------------------------------------------------------------------------
  245. // 001E8114
  246. void CStoryProfile::EnergyCheckRestore() {
  247. LOGE("%pStoryProfile::EnergyCheckRestore",this);
  248. }
  249. //-------------------------------------------------------------------------------------------------
  250. // 001E82C4
  251. int CStoryProfile::EnergyGetRestoreSecs() { return 0; }
  252. //-------------------------------------------------------------------------------------------------
  253. // 001E830C
  254. int CStoryProfile::SecondsToFullEnergy(int a1, int a2) {
  255. LOGE("CStoryProfile::SecondsToFullEnergy%x%x",a1,a2);
  256. return rand(); }
  257. //-------------------------------------------------------------------------------------------------
  258. // 001E8360
  259. void CStoryProfile::GetDescription(wchar_t *, int) {}
  260. //-------------------------------------------------------------------------------------------------