#include "CStoryProfile.h" #include "CFTTTime.h" #include "CMyProfile.h" #include "XSYS.h" #include "memctrl.h" #include "CStoryProfile.h" #include "CStoryCore.h" TStoryProfileData CStoryProfile::m_tData; void TMoveClubs::Serialize(CFTTSerialize &pCFTTSerializer1) {} // 001E7384 void TStoryProfileData::Serialize(CFTTSerialize &pCFTTSerializer1) {} //------------------------------------------------------------------------------------------------- // 001E356A void CStoryProfile::SetStageStars(int dr1, int dr2) { filed_0->SetStageStars(dr1, dr2); } //------------------------------------------------------------------------------------------------- // 001E35BA void CStoryProfile::SetStageComplete(int dr1, int dr2, bool br3) { filed_0->SetStageComplete(dr1, dr2, br3, true, true); } //------------------------------------------------------------------------------------------------- // 001E75B0 经过单元测试,功能正常 //???汇编不一样,而且还去除了一些不必要的代码 void CStoryProfile::Init() {} //------------------------------------------------------------------------------------------------- // 001E7688 经过单元测试,功能正常 //???2个short赋值被优化成了一个str。 void CStoryProfile::SetTrialsClub() {} //------------------------------------------------------------------------------------------------- // 001E76B8 void CStoryProfile::Exit() {} //------------------------------------------------------------------------------------------------- // 001E76D0 void CStoryProfile::Serialize(CFTTSerialize &a2, bool a3) {} //------------------------------------------------------------------------------------------------- // 001E7700 ^_- //单元测试等级: 游戏运行正常 //单元测试内容: 选择俱乐部调用 //单元测试结果: 正常 ELeague CStoryProfile::GetRandomLeague(ELeague r1_league, ELeague r2_league) { int r0_i = 4; ELeague r4_league=r1_league; ELeague r5_league=r2_league; if (r1_league < ELeague_0) { r0_i = 5; } if (r2_league >= ELeague_0) { r0_i -= 1; } r0_i = XSYS_Random(r0_i); ELeague r12_eleague = ELeague_neg1; if (r5_league != ELeague_5) r12_eleague = ELeague_5; if (r4_league == ELeague_5) r12_eleague = ELeague_neg1; ELeague lr_league = ELeague_neg1; if (r5_league != ELeague_3) lr_league = ELeague_3; // 001E7738 if (r4_league == ELeague_3) lr_league = ELeague_neg1; // 001E773E r2_league = ELeague_neg1; ELeague r3_league = ELeague_neg1; if (r5_league != ELeague_4) r2_league = ELeague_4; // 001E774C if (r4_league == ELeague_4) r2_league = ELeague_neg1; // 001E7752 if (r5_league != ELeague_2) r3_league = ELeague_2; if (r4_league == ELeague_2) r3_league = ELeague_neg1; if (r5_league == ELeague_0) r5_league=ELeague_1; if(r4_league==ELeague_0) r4_league=ELeague_1; r4_league=(ELeague)(-(r4_league|r5_league)); // r2_league=ELeague_0; int r5_i = 0; r1_league = ELeague_neg1; // loc_1E7770 // check 符号 while (r1_league == ELeague_neg1 && r5_i < 5) { // check 符号 if (r0_i > r5_i) { // 001E777C r1_league = ELeague_neg1; // loc_1E7780 r5_i++; } else { //loc_1E7784 switch (r5_i & 0x7FFFFFFF) { case 0:{ //loc_1E7796 r1_league=r4_league; // loc_1E7780 r5_i++; break; } case 1:{ //loc_1E779A r1_league=r3_league; // loc_1E7780 r5_i++; break; } case 2:{ //loc_1E779E r1_league=r2_league; // loc_1E7780 r5_i++; break; } case 3:{ //loc_1E77A2 r1_league=lr_league; // loc_1E7780 r5_i++; break; } case 4:{ //loc_1E77A6 r1_league=r12_eleague; // loc_1E7780 r5_i++; break; } default: { // 001E777C r1_league = ELeague_neg1; // loc_1E7780 r5_i++; break; } } } } // loc_1E77AA return r1_league; } //------------------------------------------------------------------------------------------------- // 001E77B0 int CStoryProfile::GetStartingCountry() { return 0; } //------------------------------------------------------------------------------------------------- // 001E782C int CStoryProfile::GetPossibleStartingClubs(int, int *, int) { return 0; } //------------------------------------------------------------------------------------------------- // 001E78F4 int CStoryProfile::GetPossibleNewClubs(int, bool, int, int *, int, ELeague, bool, bool) { return 0; } //------------------------------------------------------------------------------------------------- // 001E7A00 int CStoryProfile::GetHaveChangedTeamOnStage(int) { float v = sinf(23.0); if (v > 120.0) { printf("ddfffddd"); return 0; } return 1; } //------------------------------------------------------------------------------------------------- // 001E7A2C void CStoryProfile::SetStageClubTeam(int, int) {} //------------------------------------------------------------------------------------------------- // 001E7A8C void CStoryProfile::SetOppoClubTeams(bool) {} //------------------------------------------------------------------------------------------------- // 001E7BE0 ushort CStoryProfile::GetStageClubTeam(int) { return 0; } //------------------------------------------------------------------------------------------------- // 001E7C10 ushort CStoryProfile::GetClubTeam() { return 0; } //------------------------------------------------------------------------------------------------- // 001E7C28 void CStoryProfile::SetOppoNationalTeams() {} //------------------------------------------------------------------------------------------------- // 001E7D04 int CStoryProfile::GetNumOppoTeams(int, int) { return 0; } //------------------------------------------------------------------------------------------------- // 001E7D64 bool CStoryProfile::SetupNextStage() { CStoryProfileStages* pSPS = filed_0; TStorySeason* pTSS_R1 = CStoryCore::m_tStages.list_C + CStoryProfile::m_tData.field_16.filed_2; int i_R6 = 0; // 001E7DE6 for (; i_R6 < pTSS_R1->StageCount_d0; i_R6++) { // 001E7D96 // 001E7D9E 001E7D9A if (!pSPS->GetStagesComplete(pTSS_R1->TStage_d4[i_R6].ID_0)) { // 001E7DAA break; } // 001E7DA0 } // 001E7DAA // 001E7DB8 LDR R0, [R7] 此条指令提到当前块前面, CStoryCore::m_tStageManager.uc_5DA9 = 0; bool bRet; // 001E7DBA if (i_R6 < pTSS_R1->StageCount_d0) { // 001E7DBE bRet = true; // 001E7DC4 if (i_R6 > CStoryProfile::m_tData.field_16.filed_0) { // 001E7DC8 CStoryCore::m_tStageManager.uc_5DA9 = bRet; } // 001E7DCC CStoryProfile::m_tData.field_16.filed_0 = i_R6; } else { // 001E7DD0 bRet = true; CStoryCore::m_tStageManager.uc_5DA9 = bRet; CStoryProfile::m_tData.field_16.filed_0 = 0; CStoryProfile::m_tData.field_16.filed_2++; CStoryProfile::m_tData.field_2.field_10++; // 001E7DF2 if (CStoryCore::m_tStages.dCount_8 <= CStoryProfile::m_tData.field_16.filed_2) { bRet = false; CStoryProfile::m_tData.field_16.filed_2 = CStoryCore::m_tStages.dCount_8 - 1; CStoryProfile::m_tData.field_16.filed_0 = pTSS_R1->StageCount_d0; } // 001E7E04 } // 001E7E04 return bRet; } //------------------------------------------------------------------------------------------------- // 001E7E18 void CStoryProfile::SetSeason(int dr1) { // CStoryProfile::m_tData.field_18 = dr1; } //------------------------------------------------------------------------------------------------- // 001E7E28 int CStoryProfile::GetOppoTeam(int, int, int, int, TTeamInfo *) { return 0; } //------------------------------------------------------------------------------------------------- // 001E7F64 void CStoryProfile::ApplyUserPlayer(TPlayerInfo *) {} //------------------------------------------------------------------------------------------------- // 001E7F9C void CStoryProfile::UseGoldenBoot() {} //------------------------------------------------------------------------------------------------- // 001E7FB4 void CStoryProfile::UseRewind() {} //------------------------------------------------------------------------------------------------- // 001E7FD8 void CStoryProfile::EnergyUse(int) {} //------------------------------------------------------------------------------------------------- // 001E8090 void CStoryProfile::EnergyIncrease(int, bool) {} //------------------------------------------------------------------------------------------------- // 001E80C4 void CStoryProfile::SetTimeSinceReboot() {} //------------------------------------------------------------------------------------------------- // 001E80DC ^_^ void CStoryProfile::CheckEnergyFallback() { return; } //------------------------------------------------------------------------------------------------- // 001E8114 void CStoryProfile::EnergyCheckRestore() { LOGE("%pStoryProfile::EnergyCheckRestore",this); } //------------------------------------------------------------------------------------------------- // 001E82C4 int CStoryProfile::EnergyGetRestoreSecs() { return 0; } //------------------------------------------------------------------------------------------------- // 001E830C int CStoryProfile::SecondsToFullEnergy(int a1, int a2) { LOGE("CStoryProfile::SecondsToFullEnergy%x%x",a1,a2); return rand(); } //------------------------------------------------------------------------------------------------- // 001E8360 void CStoryProfile::GetDescription(wchar_t *, int) {} //-------------------------------------------------------------------------------------------------