CFE.cpp 25 KB

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