CFE.cpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. #include <math.h>
  2. #include <typeinfo>
  3. #include "CFE.h"
  4. #include "AndroidApp.h"
  5. #include "CFTTRenderTarget.h"
  6. #include "FTT2D.h"
  7. #include "FTTGraphics.h"
  8. #include "CFTTCamera.h"
  9. #include "SYSCORE.h"
  10. #include "GFXRENDER.h"
  11. #include "LOCstring.h"
  12. #include "CFTTServerTime.h"
  13. #include "CFESTitle.h"
  14. #include "CFTTDevice.h"
  15. #include "GFXCAMERA.h"
  16. #include "CFTTDevice.h"
  17. #include "CFESGame.h"
  18. #include "CFESIntro.h"
  19. #include "FE2D.h"
  20. #include "CFEImages.h"
  21. #include "FETU.h"
  22. #include "SNDFE.h"
  23. #include "FTTGraphics.h"
  24. #include "CGameFeats.h"
  25. #include "CMessageBoxHandler.h"
  26. #include "CGFXFX.h"
  27. #include "CFEEffects.h"
  28. #include "GFXFADE.h"
  29. #include "CFESChooseHero.h"
  30. #include "CFESChooseSideHero.h"
  31. #include "CFESEditPlayer.h"
  32. #include "CFESPlayerName.h"
  33. #include "CFESMainMenu.h"
  34. #include "CFESLevelSelect.h"
  35. #include "CFESOptions.h"
  36. #include "CFESCredits.h"
  37. #include "CFESPauseMenu.h"
  38. #include "CFESShop.h"
  39. #include "CFESAndroidGraphics.h"
  40. #include "CGFXSpec.h"
  41. #include "CFTTNativeDialog.h"
  42. #include "TStoryConfig.h"
  43. #include "CGraphicsTexLoadOptions.h"
  44. #include "TGame.h"
  45. #include "CStoryCore.h"
  46. #include "XCTRL.h"
  47. #include "SNDGAME.h"
  48. //#include "CFESShopHelper.h"
  49. #include "memctrl.h"
  50. extern bool FE_bBackButtonPressed;
  51. float CFE::s_fUniformWidth; //0034A41C
  52. float CFE::s_fUniformHeight; //0034A420
  53. float CFE::s_fHardwareWidth = 480.0f; //00335024
  54. float CFE::s_fHardwareHeight = 320.0f; //00335028
  55. TRect CFE::s_tOffsetAndResolution_Software; //0034A444
  56. TRect CFE::s_tOffsetAndResolution_Hardware; //0034A454
  57. TRect CFE::tOffsetAndResolution_SoftwareNative; //0034A424
  58. TRect CFE::tOffsetAndResolution_HardwareNative; //0034A434
  59. float CFE::ms_fDestCustomViewportPercentage = 1.0f; //0033502C
  60. float CFE::ms_fCustomViewportPercentage = 1.0f; //00335030
  61. bool CFE::ms_bCustomViewportActive; //0034A464
  62. time_t CFE::m_tMinimiseTime = -1; //003365F8
  63. int CFE::m_iScreenStackPos; //00354144
  64. CFEScreen* CFE::m_apScreenStack[16]; //003540BC
  65. EFEScreen CFE::m_apScreenStackID[16]; //003540FC
  66. CFTTTexture* CFE::s_pBGTexture = nullptr; //00354194
  67. bool CFE::ms_bShuttingDown; //003540B4
  68. int CFE::s_iUnpauseSoundCounter; //003540B8
  69. CFTTJobQueue* CFE::ms_pJobQueue = nullptr; //0035416C
  70. bool CFE::m_bDeleteTopScreen; //0035414C
  71. int CFE::m_eScreen; //00354140
  72. int CFE::m_eLastFlowDirection; //0035413C
  73. int CFE::ms_iFrame; //00354160
  74. int CFE::m_iFirstInGameScreen; //00354148
  75. int CFE::ms_iProcessFrames; //0035415C
  76. bool CFE::s_bCouldHaveBannerAds; //00354159
  77. int GFXUTIL_eAspectRatio; //00462728
  78. int SCR_SAFE_TOP; //00354198
  79. int SCR_SAFE_BOTTOM; //0035419C
  80. int SCR_SAFE_LEFT; //003541A0
  81. int SCR_SAFE_RIGHT; //003541A4
  82. int SCR_WID = 640; //003365EC
  83. int SCR_HEI = 960; //003365F0
  84. FTTMutex CFE::s_tRenderMutex; //00354170
  85. //-------------------------------------------------------------------------------------------------
  86. //001199F4 //^_^
  87. void CFE::StoreUniformSpaceDimensions(float w, float h) {
  88. }
  89. //-------------------------------------------------------------------------------------------------
  90. //00119A10 //^_^ 经过单元测试,功能正常
  91. void CFE::SetToUniformSpace() {
  92. }
  93. //-------------------------------------------------------------------------------------------------
  94. //00119AC0 //^_^ 经过单元测试,功能正常
  95. void CFE::SetViewport_Uniform() {
  96. }
  97. //-------------------------------------------------------------------------------------------------
  98. //00119BCC //^_^ 经过单元测试,功能正常
  99. void CFE::Begin2DScene() {
  100. }
  101. //-------------------------------------------------------------------------------------------------
  102. //00119BE0 //^_^ 经过单元测试,功能正常
  103. void CFE::SetupUniformRes() {
  104. }
  105. //-------------------------------------------------------------------------------------------------
  106. //00119C28 //^_^
  107. void CFE::BeginCustom2DScene(float f) {
  108. }
  109. //-------------------------------------------------------------------------------------------------
  110. //00119C58 //^_^
  111. void CFE::SetupCustomRes(float f) {
  112. }
  113. //-------------------------------------------------------------------------------------------------
  114. //00119D60 //^_^
  115. void CFE::ResetCustom2DScene() {
  116. }
  117. //-------------------------------------------------------------------------------------------------
  118. //00119D8C //^_^
  119. void CFE::End2DScene() {
  120. }
  121. //-------------------------------------------------------------------------------------------------
  122. //00119D90 //^_^
  123. float CFE::GetUniformXFromNativeX(float f1) {
  124. return 0;
  125. }
  126. //-------------------------------------------------------------------------------------------------
  127. //00119DCC //^_^
  128. float CFE::GetUniformYFromNativeY(float f1) {
  129. return 0;
  130. }
  131. //-------------------------------------------------------------------------------------------------
  132. //00119E08 //^_^
  133. float CFE::GetNativeXFromUniformX(float f1) {
  134. return 0;
  135. }
  136. //-------------------------------------------------------------------------------------------------
  137. //00119E48 //^_^
  138. float CFE::GetNativeYFromUniformY(float f1) {
  139. return 0;
  140. }
  141. //-------------------------------------------------------------------------------------------------
  142. //00119E88 //^_^
  143. float CFE::RoundToNativeXPixel(float f1) {
  144. return 0;
  145. }
  146. //-------------------------------------------------------------------------------------------------
  147. //00119ED4 //^_^
  148. float CFE::RoundToNativeYPixel(float f1) {
  149. return 0;
  150. }
  151. //-------------------------------------------------------------------------------------------------
  152. //00119F20 //^_^
  153. void CFE::SetNativeHardwareSize(float fw, float fh) {
  154. }
  155. //-------------------------------------------------------------------------------------------------
  156. //00119F30 //-_- 经过单元测试,功能正常
  157. void CFE::ResolveScreenDims() {
  158. }
  159. //-------------------------------------------------------------------------------------------------
  160. //001522AC //^_- 经过单元测试,功能正常
  161. void CFE::Init() {
  162. }
  163. //-------------------------------------------------------------------------------------------------
  164. //00152394 //^_- 经过单元测试,功能正常
  165. void CFE::Forward(int eScreenID, bool b2, bool b3) {
  166. // locret_152442
  167. }
  168. //-------------------------------------------------------------------------------------------------
  169. //00152464 //^_^
  170. void CFE::Exit() {
  171. }
  172. //-------------------------------------------------------------------------------------------------
  173. //0015249C
  174. void CFE::InitialiseBannerAds() {
  175. // give up
  176. }
  177. //-------------------------------------------------------------------------------------------------
  178. //001524BC
  179. bool CFE::AllowBannerAds() {
  180. return false;
  181. }
  182. //-------------------------------------------------------------------------------------------------
  183. //00152508
  184. void CFE::RemoveBannerAd() {
  185. // give up
  186. }
  187. //-------------------------------------------------------------------------------------------------
  188. //0015251C
  189. void CFE::ShutDown() {
  190. }
  191. //-------------------------------------------------------------------------------------------------
  192. //001525B4
  193. void CFE::PauseSoundForRecording() {
  194. // SNDFE_Music_Pause(true);
  195. // SNDGAME_Crowd_Pause(true);
  196. }
  197. //-------------------------------------------------------------------------------------------------
  198. //001525C6
  199. void CFE::PlaySoundAfterRecording() {
  200. // SNDFE_Music_UnPause();
  201. }
  202. //-------------------------------------------------------------------------------------------------
  203. //001525CC
  204. bool CFE::CheckMusic() {
  205. return false;
  206. }
  207. //-------------------------------------------------------------------------------------------------
  208. //0015261C
  209. bool CFE::ProcessAdverts() {
  210. // give up
  211. return false;
  212. }
  213. //-------------------------------------------------------------------------------------------------
  214. //0015263C
  215. void CFE::AttemptToPlayVideoAd(bool b1, int a2, bool b3, bool b4) {
  216. // give up
  217. }
  218. //-------------------------------------------------------------------------------------------------
  219. //00152714
  220. int CFE::AttemptToDisplayInterstitialAd() {
  221. // give up
  222. return 1;
  223. }
  224. //-------------------------------------------------------------------------------------------------
  225. //00152770
  226. void CFE::AttemptToStartVideoAdNetworks() {
  227. // give up
  228. }
  229. //-------------------------------------------------------------------------------------------------
  230. //00152864
  231. bool CFE::AllowVideoAds(EVideoAdZones) {
  232. // give up
  233. return false;
  234. }
  235. //-------------------------------------------------------------------------------------------------
  236. //00152914
  237. void CFE::VideoAnalytics(int a1) {
  238. // empty
  239. }
  240. //-------------------------------------------------------------------------------------------------
  241. //00152918
  242. void CFE::PlayRewardedVideo(int a1, void* pdat) {
  243. // give up
  244. }
  245. //-------------------------------------------------------------------------------------------------
  246. //00152998
  247. void CFE::VideoAdEnergyRewardCallback(int a1, int a2, bool b3, char const* pdata) {
  248. // give up
  249. }
  250. //-------------------------------------------------------------------------------------------------
  251. //00152A74
  252. void CFE::VideoAdCurrencyRewardCallback(int a1, int a2, bool b1, char const* pdata) {
  253. // give up
  254. }
  255. //-------------------------------------------------------------------------------------------------
  256. //00152BB8
  257. bool CFE::ReadyToPlayVideoAd(bool b1, int a2, bool b3) {
  258. return false;
  259. }
  260. //-------------------------------------------------------------------------------------------------
  261. //00152C08
  262. bool CFE::PassedVideoTime() {
  263. // give up
  264. return false;
  265. }
  266. //-------------------------------------------------------------------------------------------------
  267. //00152C44
  268. void CFE::UpdateAdvertTimings(bool b) {
  269. // give up
  270. }
  271. //-------------------------------------------------------------------------------------------------
  272. //00152CD4
  273. bool CFE::PassedFullScreenTime() {
  274. return false;
  275. }
  276. //-------------------------------------------------------------------------------------------------
  277. //00152D0C //^_^
  278. void CFE::AndroidExitAppCB(int a1, void* pData) {
  279. }
  280. //-------------------------------------------------------------------------------------------------
  281. //00152D50
  282. EVideoAdZones CFE::GetAnalyticsVideoSourceFromZone(EVideoAdZones e) {
  283. // give up
  284. return EVideoAdZones_0;
  285. }
  286. //-------------------------------------------------------------------------------------------------
  287. //00152D94 //-_- 经过单元测试,功能正常
  288. int CFE::Process(float f0) {
  289. // LOGI("CFE::Process %.2f entry", f0);
  290. if (CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1] != nullptr) {
  291. // 00152DC2
  292. if (tGame.mTLogic_6678.bisRunning_A9) {
  293. // 00152DD4
  294. CFE::SetToUniformSpace();
  295. }
  296. // 00152DD8
  297. GFXFADE_Update(true);
  298. CFEEffects::Update(f0);
  299. CFE::CheckMusic();
  300. if (!tGame.mTLogic_6678.bisRunning_A9 &&
  301. CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->m_pUITileManager_4->GetHasButton(256) &&
  302. CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->m_pUITileManager_4->dIndex_0 >= 1) {
  303. CStoryCore::m_cProfile.EnergyCheckRestore();
  304. }
  305. // loc_152E20
  306. if (CFE::m_bDeleteTopScreen) {
  307. // 00152E2A
  308. CFE::DeleteTopScreen();
  309. CFE::m_bDeleteTopScreen = false;
  310. }
  311. // loc_152E32
  312. CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->PositionTileManager(-1); // 00152E40
  313. // CFTTRewardedVideos::AdOnScreen(void)
  314. // 00152E4E
  315. if (CMessageBoxHandler::MessageBoxShown()) {
  316. // 00152E54
  317. if (FE_bBackButtonPressed) {
  318. if (CMessageBoxHandler::GetCanBackButtonRemove()) {
  319. CMessageBoxHandler::ShutDownMessageBox();
  320. }
  321. // loc_152E68
  322. FE_bBackButtonPressed = false;
  323. } else {
  324. // loc_152E6E
  325. CMessageBoxHandler::Process();
  326. XCTRL_TouchProcess_ClearTriggers();
  327. if (tGame.mTLogic_6678.bisRunning_A9) {
  328. // 00152E80
  329. CStoryCore::m_cProfile.EnergyCheckRestore();
  330. }
  331. // loc_152E8A
  332. if (!CGameLoop::s_bPaused && CFE::s_iUnpauseSoundCounter == 0) {
  333. SNDGAME_Process();
  334. }
  335. }
  336. }
  337. // loc_152EA2
  338. if (!CMessageBoxHandler::MessageBoxShown() || CMessageBoxHandler::CanProcess()) {
  339. // loc_152EB2
  340. int r7_dpos = CFE::m_iScreenStackPos;
  341. CFEScreen* r0_pScreen = CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1];
  342. if (FE_bBackButtonPressed) {
  343. // 00152EC6
  344. if (r0_pScreen->dId_C == 8) {
  345. // 00152ECC
  346. CMessageBoxHandler::NewMessageBox(CFE::AndroidExitAppCB,
  347. nullptr,
  348. EMessageBoxType_1,
  349. LOCstring(239),
  350. nullptr,
  351. 0,
  352. 128,
  353. true,
  354. 1,
  355. 0,
  356. false,
  357. false,
  358. true,
  359. true);
  360. } else if (r0_pScreen->m_pUITileManager_4->GetHasButton(2)) { // loc_152F24
  361. // 00152F2E
  362. if (CFE::m_iScreenStackPos <= 1) {
  363. // 00152F34
  364. int var_1C = 8;
  365. CFE::SetupStack(&var_1C, 1);
  366. } else {
  367. CFE::Back(false, true);
  368. }
  369. } else {
  370. // loc_152F42
  371. switch (r0_pScreen->dId_C) {
  372. case 0:
  373. CGameLoop::Pause(-1, EPauseType_0, EFEScreen_12);
  374. break;
  375. case 4:
  376. CFESChooseHero::BackButtonPressed();
  377. break;
  378. case 5:
  379. CFESChooseSideHero::BackButtonPressed();
  380. break;
  381. case 6:
  382. CFESEditPlayer::CancelChanges();
  383. break;
  384. case 9:
  385. CFESLevelSelect::BackButtonPressed();
  386. break;
  387. case 12:
  388. CFESPauseMenu::ResumeGame();
  389. break;
  390. default:
  391. break;
  392. }
  393. }
  394. // loc_152F8C
  395. FE_bBackButtonPressed = false;
  396. } else {
  397. // loc_152EFE
  398. r0_pScreen->Process();
  399. if (CFE::m_iScreenStackPos != r7_dpos && CFE::m_iScreenStackPos != 0) {
  400. // 00152F0E
  401. XCTRL_Process_ClearTriggers();
  402. CFE::m_apScreenStack[CFE::m_iScreenStackPos - 1]->Process();
  403. }
  404. }
  405. }
  406. // loc_152F90
  407. //中间与网络下载相关的代码被忽略
  408. // loc_152FDA
  409. // CFESShopHelper::Process(); //CFESShopHelper 跳过
  410. SNDFE_Process();
  411. // loc_153018
  412. // CFESShopHelper::CheckForSave(); //CFESShopHelper 跳过
  413. // CFTTAndroidRewardedVideos::InitialiseNextAdNetwork();
  414. MP_cMyProfile.CheckSave();
  415. }
  416. return 0;
  417. }
  418. //-------------------------------------------------------------------------------------------------
  419. //0015307C //^_^
  420. void CFE::DeleteTopScreen() {
  421. }
  422. //-------------------------------------------------------------------------------------------------
  423. //001530C8 //^_^ 经过单元测试,功能正常
  424. void CFE::SetupStack(int* pdata, int dCount) {
  425. }
  426. //-------------------------------------------------------------------------------------------------
  427. //001530EC //^_^
  428. void CFE::Back(bool b1, bool b2) {
  429. }
  430. //-------------------------------------------------------------------------------------------------
  431. //00153190 //^_^ 经过单元测试,功能正常
  432. void CFE::RenderScreen(int a1) {
  433. }
  434. //-------------------------------------------------------------------------------------------------
  435. //001531AC
  436. void CFE::RenderAdBackground(bool b) {
  437. // give up
  438. }
  439. //-------------------------------------------------------------------------------------------------
  440. //00153208
  441. void CFE::RenderFrameRate() {
  442. // empty
  443. }
  444. //-------------------------------------------------------------------------------------------------
  445. //0015320C //^_^ 经过单元测试,功能正常
  446. void CFE::Render() {
  447. }
  448. //-------------------------------------------------------------------------------------------------
  449. //00153274 ^_^ 经过单元测试,功能正常
  450. void CFE::RenderInner() {
  451. }
  452. //-------------------------------------------------------------------------------------------------
  453. //00153318 //^_^ 经过单元测试,功能正常
  454. int CFE::GetScreenID() {
  455. int dret = -1;
  456. // loc_153338
  457. return dret;
  458. }
  459. //-------------------------------------------------------------------------------------------------
  460. //00153348 //^_^ 经过单元测试,功能正常
  461. CFEScreen* CFE::NewScreen(int a1) {
  462. CFEScreen* pRet = nullptr;
  463. return pRet;
  464. }
  465. //-------------------------------------------------------------------------------------------------
  466. //00153528 //^_^
  467. void CFE::BackToScreen(int a1, bool b2) {
  468. }
  469. //-------------------------------------------------------------------------------------------------
  470. //001535B4 //^_^ 经过单元测试,功能正常
  471. CFTTTexture* CFE::GetBGTexture() {
  472. return nullptr;
  473. }
  474. //-------------------------------------------------------------------------------------------------
  475. // typedef void (*CMessageBoxHandler_func)(int, void *);
  476. //这个函数两个参数没有用到
  477. //00153584 //^_^
  478. void SeenStartupMessageCB(int a1, void* pbuf2) {
  479. }
  480. //-------------------------------------------------------------------------------------------------
  481. //00153618 -_- 仅打log时,功能正常
  482. void CFE::DisplayInitialMessage() {
  483. LOGI("CFE::DisplayInitialMessage entry");
  484. // fixit STY_tConfig结构未知
  485. // if (STY_tConfig->buf_5B91 && !MP_cMyProfile->ShowUpdateMessageBox() &&
  486. // (STY_tConfig->field_6394 == -1 || STY_tConfig->field_6394 != MP_cMyProfile->field_4)) {
  487. // //loc_15364C
  488. // wchar_t* tmp = new wchar_t[2048];
  489. // UTF8ToUnicode(tmp, STY_tConfig->buf_5B91, 2047); //00268EDC UTF8ToUnicode(wchar_t *,char const*,uint)
  490. // CMessageBoxHandler::NewMessageBox(SeenStartupMessageCB, 0, EMessageBoxType_0, tmp, 0, 0, 128, 1, 1, 0, 0, 0, 1, 1);
  491. // delete[] tmp;
  492. // }
  493. }
  494. //-------------------------------------------------------------------------------------------------
  495. //001536AC //^_^
  496. void CFE::ShopCB(int a1, void* pdata) {
  497. }
  498. //-------------------------------------------------------------------------------------------------
  499. //001536B6
  500. void CFE::ShowShop(bool b) {
  501. LOGI("CFE::ShowShop entry");
  502. }
  503. //-------------------------------------------------------------------------------------------------
  504. //001536FC
  505. void CFE::OpenFacebookLink() {
  506. // give up
  507. }
  508. //-------------------------------------------------------------------------------------------------
  509. //0015371C
  510. void CFE::OpenTwitterLink() {
  511. // give up
  512. }
  513. //-------------------------------------------------------------------------------------------------
  514. //0015373C //^_^
  515. void CFE::DeleteScreenStack() {
  516. }
  517. //-------------------------------------------------------------------------------------------------
  518. //00153758
  519. void CFE::LoadSideStoryFirstNISIfExists() {
  520. //??? 会不会调用到不是十分确定
  521. LOGI("CFE::LoadSideStoryFirstNISIfExists entry");
  522. }
  523. //-------------------------------------------------------------------------------------------------
  524. //00153820
  525. void CFE::SetInitialAdvertTimings() {
  526. //??? 好像与广告相关,不是十分确定
  527. }
  528. //-------------------------------------------------------------------------------------------------
  529. //00153884
  530. bool CFE::AllowInterstitials() {
  531. // give up
  532. return false;
  533. }
  534. //-------------------------------------------------------------------------------------------------
  535. //001538DC
  536. bool CFE::AlwaysShowLevelSelectVideoAds() {
  537. return false;
  538. }
  539. //-------------------------------------------------------------------------------------------------
  540. //00153908
  541. bool CFE::CouldHaveVideoAds(EVideoAdZones e) {
  542. // give up
  543. return false;
  544. }
  545. //-------------------------------------------------------------------------------------------------
  546. //0015399C
  547. bool CFE::CouldHaveInterstitials() {
  548. bool bret = false;
  549. // fixit
  550. // if (STY_tConfig[MP_cMyProfile->GetUserType()].field_63E8 > -1) {
  551. // bret = true;
  552. // } else {
  553. // bret = STORY_ShouldForceAdverts();
  554. // }
  555. return bret;
  556. }
  557. //-------------------------------------------------------------------------------------------------
  558. //001539D8
  559. void CFE::AddBannerAd() {
  560. // give up
  561. }
  562. //-------------------------------------------------------------------------------------------------
  563. //001539F4 //^_^
  564. bool CFE::CurrentScreenHasBackButton() {
  565. bool bret = false;
  566. return bret;
  567. }
  568. //-------------------------------------------------------------------------------------------------
  569. //00153A20 //^_^
  570. void CFE::OpenTermsOfServiceURL() {
  571. }
  572. //-------------------------------------------------------------------------------------------------
  573. //00153A2C //^_^
  574. void CFE::OpenPrivacyPolicyURL() {
  575. }
  576. //-------------------------------------------------------------------------------------------------
  577. //00153A38
  578. void CFE::OpenTermsOfService() {
  579. // CHeroAnalytics::LogEvent();
  580. }
  581. //-------------------------------------------------------------------------------------------------
  582. //00153A88
  583. void CFE::OpenPrivacyPolicy() {
  584. // CHeroAnalytics::LogEvent();
  585. }
  586. //-------------------------------------------------------------------------------------------------
  587. //00153AD8 //^_-
  588. void CFE::ContinueTermsOfServiceNativeDialog() {
  589. // CHeroAnalytics::LogEvent()
  590. }
  591. //-------------------------------------------------------------------------------------------------
  592. //00153B4C //^_^ 经过单元测试,功能正常
  593. bool CFE::ShowNativeDialogForTerms() {
  594. return true;
  595. }
  596. //-------------------------------------------------------------------------------------------------
  597. //00153BEC //^_^
  598. void CFE::StoreMinimiseTime() {
  599. }
  600. //-------------------------------------------------------------------------------------------------
  601. //00153C04
  602. void CFE::CheckTimeMinimised() {
  603. // locret_153C32
  604. }
  605. //-------------------------------------------------------------------------------------------------
  606. //00153C3C //^_- 经过单元测试,功能正常
  607. void CFE::PerformHousekeeping() {
  608. // locret_153CA4
  609. return;
  610. }
  611. //-------------------------------------------------------------------------------------------------
  612. //00153CC4 //^_^
  613. void CFE::DeleteHeadshot() {
  614. }
  615. //-------------------------------------------------------------------------------------------------
  616. /*
  617. 第一个界面要调用到的函数
  618. 77, 0x7665ac04 in ?? () 00153C04 CFE::CheckTimeMinimised()
  619. 17, 0x76620f30 in ?? () 00119F30 CFE::ResolveScreenDims()
  620. 2, 0x76620a10 in ?? () 00119A10 CFE::SetToUniformSpace()
  621. 31, 0x76659770 in ?? () 00152770 CFE::AttemptToStartVideoAdNetworks()
  622. 64, 0x7665a884 in ?? () 00153884 CFE::AllowInterstitials()
  623. 67, 0x7665a99c in ?? () 0015399C CFE::CouldHaveInterstitials()
  624. 32, 0x76659864 in ?? () 00152864 CFE::AllowVideoAds(EVideoAdZones)
  625. 66, 0x7665a908 in ?? () 00153908 CFE::CouldHaveVideoAds(EVideoAdZones)
  626. 63, 0x7665a820 in ?? () 00153820 CFE::SetInitialAdvertTimings()
  627. 75, 0x7665ab4c in ?? () 00153B4C CFE::ShowNativeDialogForTerms()
  628. 18, 0x766592ac in ?? () 001522AC CFE::Init()
  629. 19, 0x76659394 in ?? () 00152394 CFE::Forward(int a1, bool b1, bool b2)
  630. 53, 0x7665a348 in ?? () 00153348 CFE::NewScreen(int)
  631. 43, 0x76659d94 in ?? () 00152D94 CFE::Process(float f)
  632. 27, 0x766595cc in ?? () 001525CC CFE::CheckMusic()
  633. 52, 0x7665a318 in ?? () 00153318 CFE::GetScreenID()
  634. 50, 0x7665a20c in ?? () 0015320C CFE::Render()
  635. 51, 0x7665a274 in ?? () 00153274 CFE::RenderInner()
  636. 3, 0x76620ac0 in ?? () 00119AC0 CFE::SetViewport_Uniform()
  637. 4, 0x76620bcc in ?? () 00119BCC CFE::Begin2DScene()
  638. 5, 0x76620be0 in ?? () 00119BE0 CFE::SetupUniformRes()
  639. 47, 0x7665a190 in ?? () 00153190 CFE::RenderScreen(int a1)
  640. 9, 0x76620d8c in ?? () 00119D8C CFE::End2DScene()
  641. 21, 0x7665949c in ?? () 0015249C CFE::InitialiseBannerAds()
  642. 22, 0x766594bc in ?? () 001524BC CFE::AllowBannerAds()
  643. 78, 0x7665ac3c in ?? () 00153C3C CFE::PerformHousekeeping()
  644. 55, 0x7665a5b4 in ?? () 001535B4 CFE::GetBGTexture()
  645. 56, 0x7665a618 in ?? () 00153618 CFE::DisplayInitialMessage()
  646. */