FTTJNI.cpp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. #include <android/asset_manager.h>
  2. #include <android/native_window_jni.h>
  3. #include <jni.h>
  4. #include <zlib.h>
  5. #include <dlfcn.h>
  6. #include "FTTJNI.h"
  7. #include "AndroidApp.h"
  8. #include "CFTTAWSKinesisFirehose.h"
  9. #include "CFTTFileSystem_Android.h"
  10. #include "CFTTMem.h"
  11. #include "CFTTSerialize.h"
  12. #include "CFTTServerTime.h"
  13. #include "FTTGraphics.h"
  14. #include "FTTMutex.h"
  15. #include "IAP.h"
  16. #include "Soccer.h"
  17. #include "CStoryCore.h"
  18. #include "CMyProfile.h"
  19. #include "FTTInput.h"
  20. #include "CFE.h"
  21. #include "CFTTAndroidAppCInterface.h"
  22. #include "CStoryProfile.h"
  23. #include "FTTGraphics.h"
  24. #include "log.h"
  25. struct TFTTJNI {
  26. int field_0;
  27. int field_4;
  28. int field_8;
  29. int field_C;
  30. int field_10;
  31. int field_14;
  32. int field_18;
  33. int field_1C;
  34. int field_20;
  35. FTTMutex tMutex_24;
  36. };
  37. bool bool_348918;
  38. int dword_34891C;
  39. bool bSoccerInit_4B8540;
  40. MYSTATIC TFTTJNI tFTTJNI_4B8550 = {SCR_WID, SCR_HEI, 0, 0, 0, 0, 0, 0, 0, FTTMutex{"JNIMutex", EFTTProtocol_0}};
  41. bool FE_bBackButtonPressed;
  42. typedef void (*func_AdjustCB)(int d);
  43. func_AdjustCB g_fpAdjustCB = nullptr;
  44. //-------------------------------------------------------------------------------------------------
  45. extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
  46. return JNI_VERSION_1_6;
  47. }
  48. //-------------------------------------------------------------------------------------------------
  49. //001F71D8
  50. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_AddRepeatAndTimeNotifications(JNIEnv *env, jobject obj) {
  51. LOGI("FTTJNI_AddRepeatAndTimeNotifications Entry");
  52. MP_cMyProfile.SetNotificationRewards();
  53. CStoryCore::LoadConfigForTimeAndRepeatNotifications();
  54. LOGI("FTTJNI_AddRepeatAndTimeNotifications End");
  55. }
  56. //-------------------------------------------------------------------------------------------------
  57. //001F6EA4
  58. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_AddTouch(JNIEnv *env, jobject obj,
  59. jfloat paramjfloat1,
  60. jfloat paramjfloat2,
  61. jint paramjint1,
  62. jint paramjint2) {
  63. LOGI("FTTJNI_AddTouch");
  64. FTTInputTouch_AddAndroidTouchEvent(paramjfloat1, paramjfloat2, paramjint1, paramjint2);
  65. }
  66. //-------------------------------------------------------------------------------------------------
  67. //001F7444
  68. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_AdjustVerificationFailed(JNIEnv *env, jobject obj) {
  69. LOGI("FTTJNI_AdjustVerificationFailed Entry");
  70. tFTTJNI_4B8550.tMutex_24.Lock();
  71. if (g_fpAdjustCB)
  72. g_fpAdjustCB(1);
  73. tFTTJNI_4B8550.tMutex_24.Unlock();
  74. LOGI("FTTJNI_AdjustVerificationFailed End");
  75. }
  76. //-------------------------------------------------------------------------------------------------
  77. //001F737C
  78. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_AdjustVerificationSucceeded(JNIEnv *env, jobject obj) {
  79. LOGI("FTTJNI_AdjustVerificationSucceeded Entry");
  80. tFTTJNI_4B8550.tMutex_24.Lock();
  81. if (g_fpAdjustCB)
  82. g_fpAdjustCB(0);
  83. tFTTJNI_4B8550.tMutex_24.Unlock();
  84. LOGI("FTTJNI_AdjustVerificationSucceeded End");
  85. }
  86. //-------------------------------------------------------------------------------------------------
  87. //001F75D8
  88. extern "C" JNIEXPORT jdouble Java_com_firsttouchgames_ftt_FTTJNI_AnalyticsUserGroupCB(JNIEnv *env, jobject obj) {
  89. LOGI("FTTJNI_AnalyticsUserGroupCB Entry");
  90. double dret = 0.0;
  91. tFTTJNI_4B8550.tMutex_24.Lock();
  92. // if (CFTTAnalytics::ms_fpUserGroupCB) {
  93. // dret = -1.0;
  94. // double v2 = 0.0;
  95. // if (CFTTAnalytics::ms_fpUserGroupCB(&v2))
  96. // dret = v2;
  97. // } else {
  98. // dret = 0.0;
  99. // }
  100. tFTTJNI_4B8550.tMutex_24.Unlock();
  101. LOGI("FTTJNI_AnalyticsUserGroupCB End");
  102. return dret;
  103. }
  104. //-------------------------------------------------------------------------------------------------
  105. //001F7630
  106. extern "C" JNIEXPORT jdouble Java_com_firsttouchgames_ftt_FTTJNI_AnalyticsUserIDCB(JNIEnv *env, jobject obj) {
  107. LOGI("FTTJNI_AnalyticsUserIDCB");
  108. return 0.0;
  109. }
  110. //-------------------------------------------------------------------------------------------------
  111. //001F7528
  112. extern "C" JNIEXPORT jdouble Java_com_firsttouchgames_ftt_FTTJNI_AnalyticsUserProgressCB(JNIEnv *env, jobject obj) {
  113. LOGI("FTTJNI_AnalyticsUserProgressCB Entry");
  114. double dret = 0.0;
  115. tFTTJNI_4B8550.tMutex_24.Lock();
  116. // if (CFTTAnalytics::ms_fpUserProgressCB) {
  117. // dret = -1.0;
  118. // double v2 = 0.0;
  119. // if (CFTTAnalytics::ms_fpUserProgressCB(&v2))
  120. // dret = v2;
  121. // } else {
  122. // dret = 0.0;
  123. // }
  124. tFTTJNI_4B8550.tMutex_24.Unlock();
  125. LOGI("FTTJNI_AnalyticsUserProgressCB End");
  126. return dret;
  127. }
  128. //-------------------------------------------------------------------------------------------------
  129. //001F7580
  130. extern "C" JNIEXPORT jdouble Java_com_firsttouchgames_ftt_FTTJNI_AnalyticsUserTypeCB(JNIEnv *env, jobject obj) {
  131. LOGI("FTTJNI_AnalyticsUserTypeCB Entry");
  132. double dret = 0.0;
  133. tFTTJNI_4B8550.tMutex_24.Lock();
  134. // if (CFTTAnalytics::ms_fpUserTypeCB) {
  135. // dret = -1.0;
  136. // double v2 = 0.0;
  137. // if (CFTTAnalytics::ms_fpUserTypeCB(&v2))
  138. // dret = v2;
  139. // } else {
  140. // dret = 0.0;
  141. // }
  142. tFTTJNI_4B8550.tMutex_24.Unlock();
  143. LOGI("FTTJNI_AnalyticsUserTypeCB End");
  144. return dret;
  145. }
  146. //-------------------------------------------------------------------------------------------------
  147. //001F72F0
  148. extern "C" JNIEXPORT jstring Java_com_firsttouchgames_ftt_FTTJNI_GetInstallSourceCampaign(JNIEnv *env, jobject obj) {
  149. LOGI("FTTJNI_GetInstallSourceCampaign Entry");
  150. jstring sret = nullptr;
  151. tFTTJNI_4B8550.tMutex_24.Lock();
  152. // const char *pST = CHeroAnalytics::InstallSourceCampaignCB();
  153. // if (pST && *pST) {
  154. // sret = env->NewStringUTF(pST);
  155. // } else {
  156. // sret = nullptr;
  157. // }
  158. tFTTJNI_4B8550.tMutex_24.Unlock();
  159. LOGI("FTTJNI_GetInstallSourceCampaign End");
  160. return sret;
  161. }
  162. //-------------------------------------------------------------------------------------------------
  163. //001F72B4
  164. extern "C" JNIEXPORT jstring Java_com_firsttouchgames_ftt_FTTJNI_GetInstallSourceTracker(JNIEnv *env, jobject obj) {
  165. LOGI("FTTJNI_GetInstallSourceTracker Entry");
  166. jstring sret = nullptr;
  167. tFTTJNI_4B8550.tMutex_24.Lock();
  168. // const char *pST = CHeroAnalytics::InstallSourceTrackerCB();
  169. // if (pST && *pST) {
  170. // sret = env->NewStringUTF(pST);
  171. // } else {
  172. // sret = nullptr;
  173. // }
  174. tFTTJNI_4B8550.tMutex_24.Unlock();
  175. LOGI("FTTJNI_GetInstallSourceTracker End");
  176. return sret;
  177. }
  178. //-------------------------------------------------------------------------------------------------
  179. //001F732C
  180. extern "C" JNIEXPORT jlong Java_com_firsttouchgames_ftt_FTTJNI_GetInstallTimestamp(JNIEnv *env, jobject obj) {
  181. LOGI("FTTJNI_GetInstallTimestamp");
  182. uint64 ts = 1000 * 4;
  183. //CHeroAnalytics::InstallTimestampCB(&ts);
  184. return ts;
  185. }
  186. //-------------------------------------------------------------------------------------------------
  187. //001F71F0
  188. extern "C" JNIEXPORT jint Java_com_firsttouchgames_ftt_FTTJNI_GetNotificationsSeconds(JNIEnv *env,
  189. jobject obj,
  190. jint paramjint1,
  191. jint paramjint2) {
  192. LOGI("FTTJNI_GetNotificationsSeconds");
  193. return 0;
  194. }
  195. //-------------------------------------------------------------------------------------------------
  196. //001F73AC
  197. extern "C" JNIEXPORT jlong Java_com_firsttouchgames_ftt_FTTJNI_GetServerTimeMillseconds(JNIEnv *env, jobject obj) {
  198. LOGI("FTTJNI_GetServerTimeMillseconds Entry");
  199. tFTTJNI_4B8550.tMutex_24.Lock();
  200. time_t t = CFTTServerTime::GetDateTime(true, false);
  201. tFTTJNI_4B8550.tMutex_24.Unlock();
  202. LOGI("FTTJNI_GetServerTimeMillseconds End");
  203. return t * 1000;
  204. }
  205. //-------------------------------------------------------------------------------------------------
  206. //001F7408
  207. extern "C" JNIEXPORT jstring Java_com_firsttouchgames_ftt_FTTJNI_GetSessionID(JNIEnv *env, jobject obj) {
  208. LOGI("FTTJNI_GetSessionID Entry");
  209. jstring sret;
  210. tFTTJNI_4B8550.tMutex_24.Lock();
  211. char *pSid = CFTTAWSKinesisFirehose::GetSessionID();
  212. if (pSid && *pSid) {
  213. sret = env->NewStringUTF(pSid);
  214. } else {
  215. sret = nullptr;
  216. }
  217. tFTTJNI_4B8550.tMutex_24.Unlock();
  218. LOGI("FTTJNI_GetSessionID End");
  219. return sret;
  220. }
  221. //-------------------------------------------------------------------------------------------------
  222. //001F71F4
  223. extern "C" JNIEXPORT jboolean Java_com_firsttouchgames_ftt_FTTJNI_GetShouldSendNotification(JNIEnv *env, jobject obj, jint paramjint) {
  224. LOGI("FTTJNI_GetShouldSendNotification");
  225. return false;
  226. }
  227. //-------------------------------------------------------------------------------------------------
  228. //001F724C
  229. extern "C" JNIEXPORT jboolean Java_com_firsttouchgames_ftt_FTTJNI_HaveServerTimeForMatch(JNIEnv *env, jobject obj) {
  230. LOGI("FTTJNI_HaveServerTimeForMatch");
  231. return false;
  232. }
  233. //-------------------------------------------------------------------------------------------------
  234. //001F7250
  235. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_InstallSourceCB(JNIEnv *env,
  236. jobject obj,
  237. jstring paramjstring1,
  238. jstring paramjstring2) {
  239. LOGI("FTTJNI_InstallSourceCB Entry");
  240. tFTTJNI_4B8550.tMutex_24.Lock();
  241. FTTInitialize(0, true, false);
  242. bool barg;
  243. MP_cMyProfile.DoLoadOnBoot(barg);
  244. tFTTJNI_4B8550.tMutex_24.Unlock();
  245. LOGI("FTTJNI_InstallSourceCB End");
  246. }
  247. //-------------------------------------------------------------------------------------------------
  248. //001F7198
  249. extern "C" JNIEXPORT jboolean Java_com_firsttouchgames_ftt_FTTJNI_LoadProfile(JNIEnv *env, jobject obj) {
  250. LOGI("FTTJNI_LoadProfile Entry");
  251. tFTTJNI_4B8550.tMutex_24.Lock();
  252. tFTTJNI_4B8550.tMutex_24.Unlock();
  253. LOGI("FTTJNI_LoadProfile End");
  254. return false;
  255. }
  256. //-------------------------------------------------------------------------------------------------
  257. //001F733C
  258. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_NativeDialogButton(JNIEnv *env, jobject obj, jint paramjint) {
  259. LOGI("FTTJNI_NativeDialogButton Entry");
  260. tFTTJNI_4B8550.tMutex_24.Lock();
  261. switch (paramjint) {
  262. case 2:
  263. CFE::ContinueTermsOfServiceNativeDialog();
  264. break;
  265. case 1:
  266. CFE::OpenPrivacyPolicy();
  267. break;
  268. case 0:
  269. CFE::OpenTermsOfService();
  270. break;
  271. }
  272. tFTTJNI_4B8550.tMutex_24.Unlock();
  273. LOGI("FTTJNI_NativeDialogButton End");
  274. }
  275. //-------------------------------------------------------------------------------------------------
  276. //001F7474
  277. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_NotificationAppLaunchedCB(JNIEnv *env, jobject obj,
  278. jstring paramjstring1,
  279. jstring paramjstring2,
  280. jstring paramjstring3) {
  281. LOGI("FTTJNI_NotificationAppLaunchedCB Entry");
  282. tFTTJNI_4B8550.tMutex_24.Lock();
  283. const char *var_pst1 = nullptr;
  284. const char *var_pst2 = nullptr;
  285. const char *var_pst3 = nullptr;
  286. if (paramjstring1)
  287. var_pst1 = env->GetStringUTFChars(paramjstring1, nullptr);
  288. else
  289. var_pst1 = nullptr;
  290. if (paramjstring2)
  291. var_pst2 = env->GetStringUTFChars(paramjstring2, nullptr);
  292. else
  293. var_pst2 = nullptr;
  294. if (paramjstring3)
  295. var_pst3 = env->GetStringUTFChars(paramjstring3, nullptr);
  296. else
  297. var_pst3 = nullptr;
  298. //CHeroAnalytics::NotificationAppLaunched(var_pst1, var_pst2, var_pst3);
  299. if (var_pst1)
  300. env->ReleaseStringUTFChars(paramjstring1, var_pst1);
  301. if (var_pst2)
  302. env->ReleaseStringUTFChars(paramjstring2, var_pst2);
  303. if (var_pst3)
  304. env->ReleaseStringUTFChars(paramjstring3, var_pst3);
  305. tFTTJNI_4B8550.tMutex_24.Unlock();
  306. LOGI("FTTJNI_NotificationAppLaunchedCB End");
  307. }
  308. //-------------------------------------------------------------------------------------------------
  309. //001F7680
  310. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SafeModeExitSafeMode(JNIEnv *env, jobject obj) {
  311. LOGI("FTTJNI_SafeModeExitSafeMode Entry");
  312. tFTTJNI_4B8550.tMutex_24.Lock();
  313. tFTTJNI_4B8550.tMutex_24.Unlock();
  314. LOGI("FTTJNI_SafeModeExitSafeMode End");
  315. }
  316. //-------------------------------------------------------------------------------------------------
  317. //001F763C
  318. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SafeModeResetCustomData(JNIEnv *env, jobject obj) {
  319. //empty
  320. LOGI("FTTJNI_SafeModeResetCustomData");
  321. }
  322. //-------------------------------------------------------------------------------------------------
  323. //001F763A
  324. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SafeModeResetProfile(JNIEnv *env, jobject obj) {
  325. //empty
  326. LOGI("FTTJNI_SafeModeResetProfile");
  327. }
  328. //-------------------------------------------------------------------------------------------------
  329. //001F7640
  330. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SafeModeSetInSafeMode(JNIEnv *env, jobject obj) {
  331. LOGI("FTTJNI_SafeModeSetInSafeMode Entry");
  332. tFTTJNI_4B8550.tMutex_24.Lock();
  333. tFTTJNI_4B8550.tMutex_24.Unlock();
  334. LOGI("FTTJNI_SafeModeSetInSafeMode End");
  335. }
  336. //-------------------------------------------------------------------------------------------------
  337. //001F7660
  338. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SafeModeSetNotInSafeMode(JNIEnv *env, jobject obj) {
  339. LOGI("FTTJNI_SafeModeSetNotInSafeMode Entry");
  340. tFTTJNI_4B8550.tMutex_24.Lock();
  341. tFTTJNI_4B8550.tMutex_24.Unlock();
  342. LOGI("FTTJNI_SafeModeSetNotInSafeMode End");
  343. }
  344. //-------------------------------------------------------------------------------------------------
  345. //001F6E50 //^_^
  346. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SetScreen(JNIEnv *env,
  347. jobject obj,
  348. jint paramjint1,
  349. jint paramjint2) {
  350. LOGI("FTTJNI_SetScreen Entry");
  351. tFTTJNI_4B8550.tMutex_24.Lock();
  352. FTTGraphicsAndroid_SetScreen(paramjint1, paramjint2);
  353. tFTTJNI_4B8550.tMutex_24.Unlock();
  354. LOGI("FTTJNI_SetScreen End");
  355. }
  356. //-------------------------------------------------------------------------------------------------
  357. //001F6E7C
  358. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SetScreenSize(JNIEnv *env, jobject obj, jfloat paramjfloat) {
  359. LOGI("FTTJNI_SetScreenSize Entry");
  360. tFTTJNI_4B8550.tMutex_24.Lock();
  361. FTTGraphicsAndroid_SetScreenSize(paramjfloat);
  362. tFTTJNI_4B8550.tMutex_24.Unlock();
  363. LOGI("FTTJNI_SetScreenSize End");
  364. }
  365. //-------------------------------------------------------------------------------------------------
  366. //001F73DC
  367. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_SetSessionID(JNIEnv *env, jobject obj) {
  368. LOGI("FTTJNI_SetSessionID Entry");
  369. tFTTJNI_4B8550.tMutex_24.Lock();
  370. time_t v0 = CFTTServerTime::GetDateTime(true, false);
  371. CFTTAWSKinesisFirehose::SetSessionID(v0);
  372. tFTTJNI_4B8550.tMutex_24.Unlock();
  373. LOGI("FTTJNI_SetSessionID End");
  374. }
  375. //-------------------------------------------------------------------------------------------------
  376. //001F7378
  377. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_ShowDownloadMessageBox(JNIEnv *env, jobject obj) {
  378. //empty
  379. LOGI("FTTJNI_ShowDownloadMessageBox");
  380. }
  381. //-------------------------------------------------------------------------------------------------
  382. //001F702C //^_^
  383. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_appBecomeActive(JNIEnv *env, jobject obj) {
  384. LOGI("FTTJNI_appBecomeActive Entry");
  385. tFTTJNI_4B8550.tMutex_24.Lock();
  386. LOGI("FTTJNI_appBecomeActive Lock End");
  387. CFTTAndroidAppCInterface::m_bAppInForeground = true;
  388. if (CFTTAndroidAppCInterface::m_BecomeActive != nullptr) {
  389. LOGI("FTTJNI_appBecomeActive m_BecomeActive");
  390. CFTTAndroidAppCInterface::m_BecomeActive(nullptr);
  391. LOGI("FTTJNI_appBecomeActive m_BecomeActive End");
  392. }
  393. LOGI("FTTJNI_appBecomeActive MP_cMyProfile.NeedToCheckNotifications");
  394. MP_cMyProfile.NeedToCheckNotifications();
  395. tFTTJNI_4B8550.tMutex_24.Unlock();
  396. LOGI("FTTJNI_appBecomeActive End");
  397. }
  398. //-------------------------------------------------------------------------------------------------
  399. //001F7078
  400. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_appDestroyed(JNIEnv *env, jobject obj) {
  401. if (bSoccerInit_4B8540) {
  402. LOGI("FTTJNI_appDestroyed Entry");
  403. tFTTJNI_4B8550.tMutex_24.Lock();
  404. if (CFTTAndroidAppCInterface::m_WillTerminate)
  405. CFTTAndroidAppCInterface::m_WillTerminate(nullptr);
  406. tFTTJNI_4B8550.tMutex_24.Unlock();
  407. LOGI("FTTJNI_appDestroyed End");
  408. }
  409. }
  410. //-------------------------------------------------------------------------------------------------
  411. //001F6F5C
  412. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_appPaused(JNIEnv *env, jobject obj) {
  413. LOGI("FTTJNI_appPaused Entry");
  414. tFTTJNI_4B8550.tMutex_24.Lock();
  415. CFTTAndroidAppCInterface::m_bAppInForeground = false;
  416. if (CFTTAndroidAppCInterface::m_DidEnterBackground)
  417. CFTTAndroidAppCInterface::m_DidEnterBackground(nullptr);
  418. tFTTJNI_4B8550.tMutex_24.Unlock();
  419. LOGI("FTTJNI_appPaused End");
  420. }
  421. //-------------------------------------------------------------------------------------------------
  422. //001F6FEC
  423. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_appResignActive(JNIEnv *env, jobject obj) {
  424. LOGI("FTTJNI_appResignActive Entry");
  425. tFTTJNI_4B8550.tMutex_24.Lock();
  426. CFTTAndroidAppCInterface::m_bAppHasFocus = false;
  427. if (CFTTAndroidAppCInterface::m_ResignActive != nullptr) {
  428. LOGI("FTTJNI_appResignActive CFTTAndroidAppCInterface::m_ResignActive");
  429. CFTTAndroidAppCInterface::m_ResignActive(nullptr);
  430. LOGI("FTTJNI_appResignActive CFTTAndroidAppCInterface::m_ResignActive End");
  431. }
  432. tFTTJNI_4B8550.tMutex_24.Unlock();
  433. LOGI("FTTJNI_appResignActive End");
  434. }
  435. //-------------------------------------------------------------------------------------------------
  436. //001F6F9C
  437. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_appResumed(JNIEnv *env, jobject obj) {
  438. LOGI("FTTJNI_appResumed Entry");
  439. tFTTJNI_4B8550.tMutex_24.Lock();
  440. CFTTAndroidAppCInterface::m_bAppInForeground = 1;
  441. if (CFTTAndroidAppCInterface::m_WillEnterForeground)
  442. CFTTAndroidAppCInterface::m_WillEnterForeground(nullptr);
  443. MP_cMyProfile.NeedToCheckNotifications();
  444. CFE::CheckTimeMinimised();
  445. tFTTJNI_4B8550.tMutex_24.Unlock();
  446. LOGI("FTTJNI_appResumed End");
  447. }
  448. //-------------------------------------------------------------------------------------------------
  449. //001F6B94
  450. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_areConnectedToFacebook(JNIEnv *env, jobject obj, jstring paramjstring) {
  451. //忽略
  452. LOGI("FTTJNI_areConnectedToFacebook");
  453. }
  454. //-------------------------------------------------------------------------------------------------
  455. //001F6B48
  456. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_areConnectedToGoogle(JNIEnv *env, jobject obj, jboolean paramjboolean) {
  457. //忽略
  458. LOGI("FTTJNI_areConnectedToGoogle");
  459. }
  460. //-------------------------------------------------------------------------------------------------
  461. //001F6EEC
  462. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_backButtonPressed(JNIEnv *env, jobject obj) {
  463. FE_bBackButtonPressed = true;
  464. LOGI("FTTJNI_backButtonPressed");
  465. }
  466. //-------------------------------------------------------------------------------------------------
  467. //001F7220
  468. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_cacheRewardedVideoFailed(JNIEnv *env, jobject obj, jint paramjint) {
  469. //忽略
  470. LOGI("FTTJNI_cacheRewardedVideoFailed");
  471. }
  472. //-------------------------------------------------------------------------------------------------
  473. //001F6C28
  474. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_facebookPostSucceeded(JNIEnv *env, jobject obj) {
  475. //忽略
  476. LOGI("FTTJNI_facebookPostSucceeded");
  477. }
  478. //-------------------------------------------------------------------------------------------------
  479. //001F6C24
  480. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_failedToConnectToFacebook(JNIEnv *env, jobject obj, jstring paramjstring, jint paramjint) {
  481. //忽略
  482. LOGI("FTTJNI_failedToConnectToFacebook");
  483. }
  484. //-------------------------------------------------------------------------------------------------
  485. //001F6C78
  486. extern "C" JNIEXPORT jboolean Java_com_firsttouchgames_ftt_FTTJNI_getAreConnectedToFacebook(JNIEnv *env, jobject obj) {
  487. LOGI("FTTJNI_getAreConnectedToFacebook");
  488. jboolean bret = false;
  489. //tFTTJNI_4B8550.tMutex_24.Lock();
  490. //int dret = facebook_connect_47AEBC;
  491. //tFTTJNI_4B8550.tMutex_24.Unlock();
  492. return bret;
  493. }
  494. //-------------------------------------------------------------------------------------------------
  495. //001F6C48
  496. extern "C" JNIEXPORT jboolean Java_com_firsttouchgames_ftt_FTTJNI_getAreConnectedToGoogle(JNIEnv *env, jobject obj) {
  497. LOGI("FTTJNI_getAreConnectedToGoogle");
  498. jboolean bret = false;
  499. // tFTTJNI_4B8550.tMutex_24.Lock();
  500. // int dret = dword_47B0C8;
  501. // tFTTJNI_4B8550.tMutex_24.Unlock();
  502. return bret;
  503. }
  504. //-------------------------------------------------------------------------------------------------
  505. //001F6D1C AssetManager
  506. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_getAssetManager(JNIEnv *env, jobject obj, jobject paramAssetManager) {
  507. LOGI("FTTJNI_getAssetManager Entry");
  508. tFTTJNI_4B8550.tMutex_24.Lock();
  509. CFTTFileSystem_Android::AndroidSetAssetManager(AAssetManager_fromJava(env, paramAssetManager));
  510. tFTTJNI_4B8550.tMutex_24.Unlock();
  511. LOGI("FTTJNI_getAssetManager End");
  512. }
  513. //-------------------------------------------------------------------------------------------------
  514. //001F71F8
  515. extern "C" JNIEXPORT jint Java_com_firsttouchgames_ftt_FTTJNI_getEnergySeconds(JNIEnv *env, jobject obj) {
  516. LOGI("FTTJNI_getEnergySeconds Entry");
  517. tFTTJNI_4B8550.tMutex_24.Lock();
  518. int dret = CStoryProfile::SecondsToFullEnergy(1, 2);
  519. tFTTJNI_4B8550.tMutex_24.Unlock();
  520. LOGI("FTTJNI_getEnergySeconds End");
  521. return dret;
  522. }
  523. //-------------------------------------------------------------------------------------------------
  524. //001F6BFC
  525. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_getFriendsComplete(JNIEnv *env, jobject obj, jint paramjint) {
  526. //CFTTAndroidFacebook
  527. //跳过此函数
  528. LOGI("FTTJNI_getFriendsComplete");
  529. }
  530. //-------------------------------------------------------------------------------------------------
  531. //001F6AC8
  532. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_getJNIEnv(JNIEnv *env, jobject obj, jobject paramContext) {
  533. LOGI("FTTJNI_getJNIEnv Entry");
  534. tFTTJNI_4B8550.tMutex_24.Lock();
  535. jobject globalClass = env->NewGlobalRef(paramContext);
  536. AndroidApp_SetupJNI(env, globalClass);
  537. AndroidApp_RegisterPackageName("com/firsttouchgames/story/");
  538. tFTTJNI_4B8550.tMutex_24.Unlock();
  539. LOGI("FTTJNI_getJNIEnv End");
  540. }
  541. //-------------------------------------------------------------------------------------------------
  542. //001F6CA8
  543. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_googleNeedsStoragePermission(JNIEnv *env, jobject obj, jint paramjint) {
  544. //忽略
  545. LOGI("FTTJNI_googleNeedsStoragePermission");
  546. }
  547. //-------------------------------------------------------------------------------------------------
  548. //001F6CD0
  549. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_haveLoadedGoogleSavedGame(JNIEnv *env, jobject obj, jboolean paramjboolean, jstring paramjstring) {
  550. //忽略
  551. LOGI("FTTJNI_haveLoadedGoogleSavedGame");
  552. }
  553. //-------------------------------------------------------------------------------------------------
  554. //001F6CCC
  555. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_haveReceivedFacebookFriendScores(JNIEnv *env, jobject obj, jint paramjint) {
  556. //忽略
  557. LOGI("FTTJNI_haveReceivedFacebookFriendScores");
  558. }
  559. //-------------------------------------------------------------------------------------------------
  560. //001F70B8
  561. extern "C" JNIEXPORT jboolean Java_com_firsttouchgames_ftt_FTTJNI_initializeVulkanEarly(JNIEnv *env, jobject obj) {
  562. LOGI("FTTJNI_initializeVulkanEarly Entry");
  563. tFTTJNI_4B8550.tMutex_24.Lock();
  564. FTTGraphicsEnableStencilBuffer(true);
  565. bool bret = FTTGraphicsAndroid_InitializeVulkanEarly();
  566. tFTTJNI_4B8550.tMutex_24.Unlock();
  567. LOGI("FTTJNI_initializeVulkanEarly End");
  568. return bret;
  569. }
  570. //-------------------------------------------------------------------------------------------------
  571. //001F6EFC
  572. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_onCreate(JNIEnv *env, jobject obj) {
  573. LOGI("FTTJNI_onCreate Entry");
  574. tFTTJNI_4B8550.tMutex_24.Lock();
  575. if (CFTTAndroidAppCInterface::m_OnCreate)
  576. CFTTAndroidAppCInterface::m_OnCreate(nullptr);
  577. tFTTJNI_4B8550.tMutex_24.Unlock();
  578. LOGI("FTTJNI_onCreate End");
  579. }
  580. //-------------------------------------------------------------------------------------------------
  581. //001F6F2C
  582. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_onStart(JNIEnv *env, jobject obj) {
  583. LOGI("FTTJNI_onStart Entry");
  584. tFTTJNI_4B8550.tMutex_24.Lock();
  585. if (CFTTAndroidAppCInterface::m_OnStart)
  586. CFTTAndroidAppCInterface::m_OnStart(nullptr);
  587. tFTTJNI_4B8550.tMutex_24.Unlock();
  588. LOGI("FTTJNI_onStart End");
  589. }
  590. //-------------------------------------------------------------------------------------------------
  591. //001F70E4
  592. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_onVulkanSurfaceAcquired(JNIEnv *env, jobject obj, jobject paramSurface) {
  593. LOGI("FTTJNI_onVulkanSurfaceAcquired Entry");
  594. tFTTJNI_4B8550.tMutex_24.Lock();
  595. FTTGraphicsAndroid_OnVulkanSurfaceAcquired(ANativeWindow_fromSurface(env, paramSurface));
  596. tFTTJNI_4B8550.tMutex_24.Unlock();
  597. LOGI("FTTJNI_onVulkanSurfaceAcquired End");
  598. }
  599. //-------------------------------------------------------------------------------------------------
  600. //001F7114
  601. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_onVulkanSurfaceLost(JNIEnv *env, jobject obj) {
  602. LOGI("FTTJNI_onVulkanSurfaceLost Entry");
  603. tFTTJNI_4B8550.tMutex_24.Lock();
  604. FTTGraphicsAndroid_OnVulkanSurfaceLost();
  605. tFTTJNI_4B8550.tMutex_24.Unlock();
  606. LOGI("FTTJNI_onVulkanSurfaceLost End");
  607. }
  608. //-------------------------------------------------------------------------------------------------
  609. //001F7138
  610. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_rewardUser(JNIEnv *env, jobject obj, jint paramjint1, jint paramjint2, jboolean paramjboolean, jstring paramjstring) {
  611. LOGI("FTTJNI_rewardUser Entry");
  612. tFTTJNI_4B8550.tMutex_24.Lock();
  613. //忽略激励视频相关功能
  614. tFTTJNI_4B8550.tMutex_24.Unlock();
  615. LOGI("FTTJNI_rewardUser End");
  616. }
  617. //-------------------------------------------------------------------------------------------------
  618. //001F6B08
  619. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setDeviceModel(JNIEnv *env, jobject obj, jstring paramjstring) {
  620. LOGI("FTTJNI_setDeviceModel Entry");
  621. tFTTJNI_4B8550.tMutex_24.Lock();
  622. const char *pdir = env->GetStringUTFChars(paramjstring, nullptr);
  623. env->ReleaseStringUTFChars(paramjstring, pdir);
  624. tFTTJNI_4B8550.tMutex_24.Unlock();
  625. LOGI("FTTJNI_setDeviceModel End");
  626. }
  627. //-------------------------------------------------------------------------------------------------
  628. //001F6DB0
  629. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setExpansionPath(JNIEnv *env, jobject obj, jstring paramjstring) {
  630. LOGI("FTTJNI_setExpansionPath Entry");
  631. tFTTJNI_4B8550.tMutex_24.Lock();
  632. const char *pdir = env->GetStringUTFChars(paramjstring, nullptr);
  633. CFTTFileSystem_Android::AndroidSetExpansionPath(pdir);
  634. env->ReleaseStringUTFChars(paramjstring, pdir);
  635. tFTTJNI_4B8550.tMutex_24.Unlock();
  636. LOGI("FTTJNI_setExpansionPath End");
  637. }
  638. //-------------------------------------------------------------------------------------------------
  639. //001F6DF4
  640. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setExpansionProgress(JNIEnv *env, jobject obj, jint paramjint) {
  641. LOGI("FTTJNI_setExpansionProgress Entry");
  642. tFTTJNI_4B8550.tMutex_24.Lock();
  643. dword_34891C = paramjint;
  644. tFTTJNI_4B8550.tMutex_24.Unlock();
  645. LOGI("FTTJNI_setExpansionProgress End");
  646. }
  647. //-------------------------------------------------------------------------------------------------
  648. //001F6E20
  649. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setExpansionRequired(JNIEnv *env, jobject obj, jboolean paramjboolean) {
  650. LOGI("FTTJNI_setExpansionRequired Entry");
  651. tFTTJNI_4B8550.tMutex_24.Lock();
  652. bool_348918 = paramjboolean ? true : false;
  653. tFTTJNI_4B8550.tMutex_24.Unlock();
  654. LOGI("FTTJNI_setExpansionRequired End");
  655. }
  656. //-------------------------------------------------------------------------------------------------
  657. //001F6D6C
  658. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setExternalFilesDir(JNIEnv *env, jobject obj, jstring paramjstring) {
  659. LOGI("FTTJNI_setExternalFilesDir Entry");
  660. tFTTJNI_4B8550.tMutex_24.Lock();
  661. const char *pdir = env->GetStringUTFChars(paramjstring, nullptr);
  662. CFTTFileSystem_Android::AndroidSetExternalFilesDir(pdir);
  663. env->ReleaseStringUTFChars(paramjstring, pdir);
  664. tFTTJNI_4B8550.tMutex_24.Unlock();
  665. LOGI("FTTJNI_setExternalFilesDir End");
  666. }
  667. //-------------------------------------------------------------------------------------------------
  668. //001F6D4C
  669. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setIsAmazon(JNIEnv *env, jobject obj) {
  670. LOGI("FTTJNI_setIsAmazon Entry");
  671. tFTTJNI_4B8550.tMutex_24.Lock();
  672. tFTTJNI_4B8550.tMutex_24.Unlock();
  673. LOGI("FTTJNI_setIsAmazon End");
  674. }
  675. //-------------------------------------------------------------------------------------------------
  676. //001F6AA4
  677. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_setupCallbacks(JNIEnv *env, jobject obj) {
  678. LOGI("FTTJNI_setupCallbacks Entry");
  679. tFTTJNI_4B8550.tMutex_24.Lock();
  680. AppSetupCallbacks();
  681. tFTTJNI_4B8550.tMutex_24.Unlock();
  682. LOGI("FTTJNI_setupCallbacks End");
  683. }
  684. //-------------------------------------------------------------------------------------------------
  685. //001F6A38 //^_^
  686. void SetUp_IAP_JNI() {
  687. IAP_Init(
  688. "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj6MCBls+rJWOxN+3/PKoPE7WLl8Kx4Wq1WDU7qR/GM94WwK65psYkalpBcwtc2Evn"
  689. "fs1HZstkAr0XM9J/+8T6nW1z3R/ZLz0mh7nexZXaPKgbgoUWDfWILSKF9pZTDcG2Hp4iXYEG0rLJmfB7D7W//BPP5+mcJmjXhWV68BGRs9XjP"
  690. "+x0iiHOsaTXBhB6E9cDRfva/6W0IidUPM8t1YRhp2wjyDXC+nYW9M0i/Tm7m5bAMglgiySOyYvGWmfnQvyjb1WV/sDmvxubvRhq7XOB5rog/0"
  691. "hiYx3dojaIwQyZ9poPkaRsWnw5g1KZp6oIk/dVapLeT6PMhjJ8OnQQTm4mQIDAQAB",
  692. 64);
  693. }
  694. //-------------------------------------------------------------------------------------------------
  695. //001F6A60 //^_^
  696. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_step(JNIEnv *env, jobject obj) {
  697. LOGI("FTTJNI_step entry");
  698. tFTTJNI_4B8550.tMutex_24.Lock();
  699. if (bSoccerInit_4B8540) {
  700. LOGI("FTTJNI_step bSoccerInit_4B8540 = true");
  701. IAP_Update();
  702. Soccer_MainLoop();
  703. } else {
  704. LOGI("FTTJNI_step bSoccerInit_4B8540 = false");
  705. AppStart();
  706. LOGI("FTTJNI_step SetUp_IAP_JNI");
  707. SetUp_IAP_JNI();
  708. bSoccerInit_4B8540 = true;
  709. LOGI("FTTJNI_step call Soccer_Init");
  710. Soccer_Init();
  711. LOGI("FTTJNI_step call Soccer_Init end");
  712. }
  713. tFTTJNI_4B8550.tMutex_24.Unlock();
  714. LOGI("FTTJNI_step exit");
  715. }
  716. //-------------------------------------------------------------------------------------------------
  717. //001F6EB0
  718. extern "C" JNIEXPORT void Java_com_firsttouchgames_ftt_FTTJNI_worldOriUpdated(JNIEnv *env,
  719. jobject obj,
  720. jfloat arg_float1,
  721. jfloat arg_float2,
  722. jfloat arg_float3,
  723. jfloat arg_float4,
  724. jfloat arg_float5,
  725. jfloat arg_float6,
  726. jfloat arg_float7,
  727. jfloat arg_float8,
  728. jfloat arg_float9) {
  729. LOGI("FTTJNI_worldOriUpdated");
  730. FTTInput_worldOriUpdatedAndroid(arg_float1,
  731. arg_float2,
  732. arg_float3,
  733. arg_float4,
  734. arg_float5,
  735. arg_float6,
  736. arg_float7,
  737. arg_float8,
  738. arg_float9);
  739. }
  740. //-------------------------------------------------------------------------------------------------