From eb2b1f0a2c189693c111ff6c66ed195c467af281 Mon Sep 17 00:00:00 2001 From: zilmar Date: Wed, 20 Feb 2019 11:48:28 +1030 Subject: [PATCH] [Android] Add review menu --- Android/res/drawable-hdpi/ic_review.png | Bin 0 -> 4166 bytes Android/res/drawable-mdpi/ic_review.png | Bin 0 -> 4281 bytes Android/res/drawable-xhdpi/ic_review.png | Bin 0 -> 3746 bytes Android/res/menu/gallery_drawer.xml | 3 ++ Android/res/values/strings.xml | 6 +++ .../src/emu/project64/GalleryActivity.java | 46 +++++++++++++++--- .../emu/project64/jni/LanguageStringID.java | 1 + .../src/emu/project64/jni/UISettingID.java | 10 +--- .../Project64-core/MemoryExceptionFilter.cpp | 1 + Source/Project64-core/Multilanguage.h | 1 + .../Multilanguage/LanguageClass.cpp | 1 + 11 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 Android/res/drawable-hdpi/ic_review.png create mode 100644 Android/res/drawable-mdpi/ic_review.png create mode 100644 Android/res/drawable-xhdpi/ic_review.png diff --git a/Android/res/drawable-hdpi/ic_review.png b/Android/res/drawable-hdpi/ic_review.png new file mode 100644 index 0000000000000000000000000000000000000000..62aca4f1e2171d6bc04fc3f18f7d04b0fe0cdb05 GIT binary patch literal 4166 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 b0RBAy?sn|TQIX#d00000NkvXXu0mjfu>ckH literal 0 HcmV?d00001 diff --git a/Android/res/drawable-xhdpi/ic_review.png b/Android/res/drawable-xhdpi/ic_review.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2569c30db015e517f3e538ad9e1d00a1eb37ab GIT binary patch literal 3746 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 literal 0 HcmV?d00001 diff --git a/Android/res/menu/gallery_drawer.xml b/Android/res/menu/gallery_drawer.xml index b0e87f76e..c2aa8e4d9 100644 --- a/Android/res/menu/gallery_drawer.xml +++ b/Android/res/menu/gallery_drawer.xml @@ -14,6 +14,9 @@ + diff --git a/Android/res/values/strings.xml b/Android/res/values/strings.xml index 4b7413347..6c7516d39 100644 --- a/Android/res/values/strings.xml +++ b/Android/res/values/strings.xml @@ -199,6 +199,12 @@ Permissions Project64 needs to be able to: \nRead your storage to read game files, save states, and configuration.\nWrite to your storage to write configuration and save data. + + Please rate Project64 5 stars + Please rate Project64 5 stars if you have enjoyed it. Your support and feedback helps makes Project64 better. + Don\'t Rate + Rate 5 Starts + Scanning… diff --git a/Android/src/emu/project64/GalleryActivity.java b/Android/src/emu/project64/GalleryActivity.java index f1a137a80..123fac29f 100644 --- a/Android/src/emu/project64/GalleryActivity.java +++ b/Android/src/emu/project64/GalleryActivity.java @@ -51,6 +51,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; +import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; @@ -147,13 +148,6 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi super.onCreate( savedInstanceState ); mActiveGalleryActivity = this; - String FirstRun = NativeExports.UISettingsLoadString(UISettingID.SupportWindow_FirstRun.getValue()); - if (FirstRun.length() == 0) - { - SimpleDateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH); - NativeExports.UISettingsSaveString(UISettingID.SupportWindow_FirstRun.getValue(), format.format(new Date())); - } - mIabHelper = new IabHelper(this, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnfHFIq+X0oIvV+bwcvdqQv5GmpWLL6Bw8xE6MLFzXzUGUIUZBwQS6Cz5IC0UM76ujPDPqQPeGy/8oq/bswB5pHCz2iS4ySGalzFfYfeIDklOe+R1pLEqmHuwsR5o4b8rLePLGmUI7hA0kozOTb0i+epANV3Pj63i5XFZLA7RMi5I+YysoE9Fob6kCx0kb02AATacF0OXI9paE1izvsHhZcOIrT4TRMbGlZjBVE/pcJtoBDh33QKz/JBOXWvwnh+efqhVsq/UfA6jYI+U4Z4tsnWhem8DB6Kqj5EhClC6qCPmkBFiOabyKaqhI/urBtYOwxkW9erwtA6OcDoHm5J/JwIDAQAB"); // enable debug logging (for a production application, you should set this to false). @@ -247,6 +241,15 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi } }); UpdateLanguage(); + + int RunCount = NativeExports.UISettingsLoadDword(UISettingID.AppInfo_RunCount.getValue()) + 1; + if (RunCount < 1) { RunCount = 1; } + NativeExports.UISettingsSaveDword(UISettingID.AppInfo_RunCount.getValue(), RunCount); + Log.d("GalleryActivity", "ShowSupportWindow RunCount = " + RunCount); + if (RunCount == 5 || RunCount == 10) + { + ShowReviewOptions(); + } } void UpdateLanguage() @@ -254,6 +257,7 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_settings, LanguageStringID.ANDROID_SETTINGS); Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_discord, LanguageStringID.ANDROID_DISCORD); Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_reportBug, LanguageStringID.ANDROID_REPORT_BUG); + Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_review, LanguageStringID.ANDROID_REVIEW_PJ64); Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_support, LanguageStringID.ANDROID_SUPPORT_PJ64); Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_about, LanguageStringID.ANDROID_ABOUT); } @@ -410,6 +414,9 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi Intent IssueIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/project64/project64/issues")); startActivity(IssueIntent); return true; + case R.id.menuItem_review: + ShowReviewOptions(); + return true; case R.id.menuItem_support: ShowPaymentOptions(); return true; @@ -579,7 +586,6 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi currentFile.delete(); } SaveDir.delete(); - NativeExports.UISettingsSaveDword(UISettingID.Game_RunCount.getValue(), 0); launchGameActivity(false); } }) @@ -798,6 +804,30 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi } } + public void ShowReviewOptions() + { + new AlertDialog.Builder(GalleryActivity.this).setTitle(getString(R.string.review_title)) + .setMessage(getString(R.string.review_decription)) + .setPositiveButton(getString( R.string.review_ok ), new OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + Intent IssueIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=emu.project64&hl=en")); + startActivity(IssueIntent); + } + + }) + .setNegativeButton( getString( R.string.review_cancel), new OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + } + }) + .setCancelable(false).show(); + } + public void ShowPaymentOptions() { ArrayList skuList = new ArrayList(); diff --git a/Android/src/emu/project64/jni/LanguageStringID.java b/Android/src/emu/project64/jni/LanguageStringID.java index ddf1180d3..7fcaeb6dc 100644 --- a/Android/src/emu/project64/jni/LanguageStringID.java +++ b/Android/src/emu/project64/jni/LanguageStringID.java @@ -580,6 +580,7 @@ public enum LanguageStringID ANDROID_ABOUT_PJ64_AUTHORS(3020), ANDROID_DISCORD(3021), ANDROID_SUPPORT_PJ64(3022), + ANDROID_REVIEW_PJ64(3023), //In game menu ANDROID_MENU_SETTINGS(3100), diff --git a/Android/src/emu/project64/jni/UISettingID.java b/Android/src/emu/project64/jni/UISettingID.java index ec80d79e3..589717506 100644 --- a/Android/src/emu/project64/jni/UISettingID.java +++ b/Android/src/emu/project64/jni/UISettingID.java @@ -29,14 +29,8 @@ public enum UISettingID Controller_Deadzone, Controller_Sensitivity, - //Support Window - SupportWindow_FirstRun, - SupportWindow_AlwaysShow, - SupportWindow_ShowingSupportWindow, - SupportWindow_RunCount, - - //Game Settings - Game_RunCount, + //App Info + AppInfo_RunCount, ; private int value; diff --git a/Source/Project64-core/MemoryExceptionFilter.cpp b/Source/Project64-core/MemoryExceptionFilter.cpp index 88ed5b1b5..acd170eeb 100644 --- a/Source/Project64-core/MemoryExceptionFilter.cpp +++ b/Source/Project64-core/MemoryExceptionFilter.cpp @@ -723,6 +723,7 @@ bool CMipsMemoryVM::FilterArmException(uint32_t MemAddress, mcontext_t & context if (OpCode32->reg_cond.opcode == 0 && OpCode32->reg_cond.opcode1 == 0 && OpCode32->reg_cond.opcode2 == 1 && OpCode32->reg_cond.opcode3 == 0xB) { //119330b1 ldrhne r3, [r3, r1] + //11d000b0 ldrhne r0, [r0] if (!g_MMU->LH_NonMemory(MemAddress, ArmRegisters[OpCode32->reg_cond.rt], false)) { if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) diff --git a/Source/Project64-core/Multilanguage.h b/Source/Project64-core/Multilanguage.h index fcc818544..b6eae4ed4 100644 --- a/Source/Project64-core/Multilanguage.h +++ b/Source/Project64-core/Multilanguage.h @@ -585,6 +585,7 @@ enum LanguageStringID ANDROID_ABOUT_PJ64_AUTHORS = 3020, ANDROID_DISCORD = 3021, ANDROID_SUPPORT_PJ64 = 3022, + ANDROID_REVIEW_PJ64 = 3023, //In game menu ANDROID_MENU_SETTINGS = 3100, diff --git a/Source/Project64-core/Multilanguage/LanguageClass.cpp b/Source/Project64-core/Multilanguage/LanguageClass.cpp index af161c1b5..d8c070a0b 100644 --- a/Source/Project64-core/Multilanguage/LanguageClass.cpp +++ b/Source/Project64-core/Multilanguage/LanguageClass.cpp @@ -551,6 +551,7 @@ void CLanguage::LoadDefaultStrings(void) DEF_STR(ANDROID_ABOUT_PJ64_AUTHORS, "Project64 Authors."); DEF_STR(ANDROID_DISCORD, "Discord"); DEF_STR(ANDROID_SUPPORT_PJ64, "Support Project64"); + DEF_STR(ANDROID_REVIEW_PJ64, "Review Project64"); //In game menu DEF_STR(ANDROID_MENU_SETTINGS, "Settings");