CFE.cpp 25 KB

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