From 9410db59819189aae23de5e4a341ba442af966f5 Mon Sep 17 00:00:00 2001 From: zilmar Date: Sat, 24 Dec 2016 07:54:48 +1100 Subject: [PATCH] [Android] Update the support window code --- .../src/emu/project64/GalleryActivity.java | 226 +++++------------- 1 file changed, 57 insertions(+), 169 deletions(-) diff --git a/Android/src/emu/project64/GalleryActivity.java b/Android/src/emu/project64/GalleryActivity.java index 8b6986a3d..a1955d4ad 100644 --- a/Android/src/emu/project64/GalleryActivity.java +++ b/Android/src/emu/project64/GalleryActivity.java @@ -98,7 +98,7 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi // The IAB helper object IabHelper mIabHelper; - private boolean mHasSaveSupport = true; + private boolean mHasSaveSupport = false; private boolean mPj64Supporter = false; // Provides purchase notification while this app is running @@ -115,8 +115,6 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi static final int RC_REQUEST = 10001; static final int RC_SETTINGS = 10002; - static boolean mShownSupportWindow = true; - @Override protected void onNewIntent( Intent intent ) { @@ -347,11 +345,6 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi } setWaitScreen(false); - - if (!mPj64Supporter && ShouldShowSupportWindow()) - { - ShowSupportWindow(); - } } }; @@ -507,8 +500,11 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi return false; } - private void StartGameMenu (File GameSaveDir, boolean ShowSettings) + private void StartGameMenu (boolean ShowSettings) { + File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.getValue())); + final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.getValue())); + class Item { public final String text; @@ -526,16 +522,16 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi } ListmenuItemLst = new ArrayList(); - if (mHasSaveSupport) - { - menuItemLst.add(new Item("Resume from Native save", R.drawable.ic_controller)); - menuItemLst.add(new Item("Resume from Auto save", R.drawable.ic_play)); - } - else + if (ShouldShowSupportWindow()) { menuItemLst.add(new Item("Resume from Native save", R.drawable.ic_lock)); menuItemLst.add(new Item("Resume from Auto save", R.drawable.ic_lock)); } + else + { + menuItemLst.add(new Item("Resume from Native save", R.drawable.ic_controller)); + menuItemLst.add(new Item("Resume from Auto save", R.drawable.ic_play)); + } menuItemLst.add(new Item("Restart", R.drawable.ic_refresh)); if (ShowSettings && !NativeExports.SettingsLoadBool(SettingsID.UserInterface_BasicMode.getValue())) { @@ -611,31 +607,9 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi @Override public void onClick(DialogInterface dialog, int item) { - if ((item == 0 || item == 1) && !mHasSaveSupport) + if ((item == 0 || item == 1) && ShouldShowSupportWindow()) { - AlertDialog.Builder ResetPrompt = new AlertDialog.Builder(finalContext); - ResetPrompt - .setTitle(getText(R.string.GetSaveSupport_title)) - .setMessage(getText(R.string.GetSaveSupport_message)) - .setPositiveButton(R.string.GetSaveSupport_OkButton, new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, int id) - { - setWaitScreen(true); - //Purchase save support - try - { - String payload = NativeExports.appVersion(); - mIabHelper.launchPurchaseFlow(finalActivity, SKU_SAVESUPPORT, RC_REQUEST, mPurchaseFinishedListener, payload); - } - catch (IabAsyncInProgressException e) - { - setWaitScreen(false); - } - } - }) - .setNegativeButton(android.R.string.cancel, this) - .show(); + ShowSupportWindow(); return; } if (item == 0) @@ -665,6 +639,7 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi currentFile.delete(); } SaveDir.delete(); + NativeExports.UISettingsSaveDword(UISettingID.Game_RunCount.getValue(), 0); launchGameActivity(); } }) @@ -684,14 +659,14 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi public void onGalleryItemClick( GalleryItem item ) { NativeExports.LoadGame(item.romFile.getAbsolutePath()); - File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.getValue())); - final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.getValue())); - if (GameSaveDir.exists() && !mHasSaveSupport) + if (ShouldShowSupportWindow()) { - StartGameMenu(GameSaveDir, false); + ShowSupportWindow(); } else { + File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.getValue())); + final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.getValue())); if (HasAutoSave(GameSaveDir)) { NativeExports.SettingsSaveDword(SettingsID.Game_CurrentSaveState.getValue(), 0); @@ -704,10 +679,15 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi public boolean onGalleryItemLongClick( GalleryItem item ) { NativeExports.LoadGame(item.romFile.getAbsolutePath()); - File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.getValue())); - final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.getValue())); - - StartGameMenu(GameSaveDir, true); + if (ShouldShowSupportWindow()) + { + ShowSupportWindow(); + } + else + { + StartGameMenu(true); + } + Log.d("GalleryActivity", "onGalleryItemLongClick 4"); return true; } @@ -718,10 +698,7 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi if (requestCode == RC_SETTINGS) { - File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.getValue())); - final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.getValue())); - - StartGameMenu(GameSaveDir, true); + StartGameMenu(true); return; } // Check which request we're responding to @@ -847,93 +824,19 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi } } - public void ShowPaymentOptions() + private boolean ShouldShowSupportWindow() { - ArrayList skuList = new ArrayList(); - skuList.add(SKU_PJ64SUPPORTOR_2); - skuList.add(SKU_PJ64SUPPORTOR_5); - skuList.add(SKU_PJ64SUPPORTOR_8); - skuList.add(SKU_PJ64SUPPORTOR_10); - Bundle querySkus = new Bundle(); - querySkus.putStringArrayList("ITEM_ID_LIST", skuList); - - final Context context = this; - final Activity activity = this; - IabHelper.QueryInventoryFinishedListener GotPaymentOptionListener = new IabHelper.QueryInventoryFinishedListener() - { - public void onQueryInventoryFinished(IabResult result, Inventory inventory) - { - Log.d("GalleryActivity", "Query inventory finished."); - - // Have we been disposed of in the meantime? If so, quit. - if (mIabHelper == null) return; - - // Is it a failure? - if (result.isFailure()) - { - //complain("Failed to query inventory: " + result); - return; - } - - Log.d("GalleryActivity", "SKU_PJ64SUPPORTOR_2 price: " + inventory.getSkuDetails(SKU_PJ64SUPPORTOR_2).getPrice()); - Log.d("GalleryActivity", "SKU_PJ64SUPPORTOR_5 price: " + inventory.getSkuDetails(SKU_PJ64SUPPORTOR_5).getPrice()); - Log.d("GalleryActivity", "SKU_PJ64SUPPORTOR_8 price: " + inventory.getSkuDetails(SKU_PJ64SUPPORTOR_8).getPrice()); - Log.d("GalleryActivity", "SKU_PJ64SUPPORTOR_10 price: " + inventory.getSkuDetails(SKU_PJ64SUPPORTOR_10).getPrice()); - - CharSequence options[] = new CharSequence[] - { - inventory.getSkuDetails(SKU_PJ64SUPPORTOR_10).getPrice(), - inventory.getSkuDetails(SKU_PJ64SUPPORTOR_8).getPrice(), - inventory.getSkuDetails(SKU_PJ64SUPPORTOR_5).getPrice(), - inventory.getSkuDetails(SKU_PJ64SUPPORTOR_2).getPrice() - }; - - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle("Select an amount"); - builder.setItems(options, new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialog, int which) - { - switch (which) - { - case 0: PurcahseProject64Support(activity,SKU_PJ64SUPPORTOR_10); break; - case 1: PurcahseProject64Support(activity,SKU_PJ64SUPPORTOR_8); break; - case 2: PurcahseProject64Support(activity,SKU_PJ64SUPPORTOR_5); break; - case 3: PurcahseProject64Support(activity,SKU_PJ64SUPPORTOR_2); break; - } - } - }); - final AlertDialog dialog = builder.create(); - dialog.setOnCancelListener(new OnCancelListener() - { - public void onCancel(DialogInterface dialog) - { - ShowSupportWindow(); - } - }); - dialog.show(); - } - }; - - try - { - mIabHelper.queryInventoryAsync(true, skuList, null, GotPaymentOptionListener); - } - catch (IabAsyncInProgressException e) - { - e.printStackTrace(); - } - } - - public boolean ShouldShowSupportWindow() - { - Log.d("GalleryActivity", "ShowSupportWindow mShownSupportWindow = " + mShownSupportWindow); - if (!mShownSupportWindow) + Log.d("GalleryActivity", "ShowSupportWindow mHasSaveSupport = " + mHasSaveSupport); + if (mHasSaveSupport) + { + return false; + } + + Log.d("GalleryActivity", "ShowSupportWindow mPj64Supporter = " + mPj64Supporter); + if (mPj64Supporter) { return false; } - mShownSupportWindow = false; int RunCount = NativeExports.UISettingsLoadDword(UISettingID.SupportWindow_RunCount.getValue()); Log.d("GalleryActivity", "ShowSupportWindow RunCount = " + RunCount); @@ -941,15 +844,10 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi { return false; } - NativeExports.UISettingsSaveDword(UISettingID.SupportWindow_RunCount.getValue(), RunCount + 1); - Log.d("GalleryActivity", "ShowSupportWindow Set RunCount to " + (RunCount + 1)); - if (RunCount < 3) - { - return false; - } - - if (((RunCount - 5) % 3) != 0) + RunCount = NativeExports.UISettingsLoadDword(UISettingID.Game_RunCount.getValue()); + Log.d("GalleryActivity", "ShowSupportWindow Game_RunCount = " + RunCount); + if (RunCount < 5) { return false; } @@ -958,10 +856,12 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi public void ShowSupportWindow() { - int RunCount = NativeExports.UISettingsLoadDword(UISettingID.SupportWindow_RunCount.getValue()); + final Context context = this; + final Activity activity = this; + AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("Support Project64"); - builder.setMessage("Project64 is a software package designed to emulate a Nintendo64 video game system on a Android device. This allows you to play real N64 software in much the same way as it would be on the original hardware system.\n\nIf you like Project64 and have gotten some value out of it then please support project64 as either a thank you, or your desire to see it continually improved."); + builder.setTitle(getText(R.string.GetSaveSupport_title)); + builder.setMessage(getText(R.string.GetSaveSupport_message)); builder.setNeutralButton("Not now", null); builder.setNegativeButton("Support Project64", null); builder.setCancelable(false); @@ -974,6 +874,7 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi public void onClick(View v) { dialog.dismiss(); + StartGameMenu(false); } }); dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener( new View.OnClickListener() @@ -981,34 +882,21 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi @Override public void onClick(View v) { - ShowPaymentOptions(); + setWaitScreen(true); + //Purchase save support + try + { + String payload = NativeExports.appVersion(); + mIabHelper.launchPurchaseFlow(activity, SKU_SAVESUPPORT, RC_REQUEST, mPurchaseFinishedListener, payload); + } + catch (IabAsyncInProgressException e) + { + setWaitScreen(false); + } dialog.dismiss(); } }); dialog.setCanceledOnTouchOutside(false); - - if (RunCount > 20) - { - dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setEnabled(false); - - TimerTask task = new TimerTask() - { - @Override - public void run() - { - Handler h = new Handler(Looper.getMainLooper()); - h.post(new Runnable() - { - public void run() - { - dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setEnabled(true); - } - }); - } - }; - final Timer timer = new Timer(); - timer.schedule(task, 35 * 1000); - } } public void launchGameActivity()