From c91f7cbc211e84d67dbf5e663f3e1e6a891a408b Mon Sep 17 00:00:00 2001 From: Ruben Date: Wed, 21 Sep 2016 14:58:49 +0100 Subject: [PATCH] Fix #12 and Fix #10 --- .idea/misc.xml | 2 +- app/src/main/AndroidManifest.xml | 1 + .../emotionhero/Achievement.java | 3 +- .../emotionhero/AchievementCollection.java | 35 +++---- .../emotionhero/IntroActivity.java | 4 +- .../emotionhero/MirrorMenuActivity.java | 36 ++++++- .../com/rubenvandeven/emotionhero/Player.java | 17 ++++ .../ReviewAchievementsActivity.java | 3 +- .../rubenvandeven/emotionhero/Scenario.java | 5 +- .../emotionhero/ScenarioView.java | 31 +++--- .../emotionhero/SnapshotDialogFragment.java | 91 ++++++++++++++++++ app/src/main/res/drawable/example_brow.jpg | Bin 0 -> 6980 bytes app/src/main/res/drawable/example_mouth.jpg | Bin 0 -> 2279 bytes app/src/main/res/drawable/example_nose.jpg | Bin 0 -> 1933 bytes .../main/res/layout/activity_mirror_menu.xml | 16 ++- app/src/main/res/layout/snapshot_check.xml | 74 ++++++++++++++ app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/strings.xml | 1 + build.gradle | 2 +- 19 files changed, 278 insertions(+), 46 deletions(-) create mode 100644 app/src/main/java/com/rubenvandeven/emotionhero/SnapshotDialogFragment.java create mode 100644 app/src/main/res/drawable/example_brow.jpg create mode 100644 app/src/main/res/drawable/example_mouth.jpg create mode 100644 app/src/main/res/drawable/example_nose.jpg create mode 100644 app/src/main/res/layout/snapshot_check.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 1b77328..bd04605 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a6fe132..15b9c63 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -49,6 +49,7 @@ android:theme="@style/FullscreenTheme" /> pickNRandom(List lst, int n) { @@ -229,7 +232,7 @@ public class Scenario { Bitmap outputBitmap = null; - if(currentFrame != null && snapTargets.contains(target) ) { + if(currentFrame != null && takeSnapshots && snapTargets.contains(target) ) { // convert NV21 byteArrayFrame from camera to RGB bitmap. Frame.ByteArrayFrame byteArrayFrame = (Frame.ByteArrayFrame) currentFrame; outputBitmap = Nv21Image.nv21ToBitmap(rs, byteArrayFrame.getByteArray(), byteArrayFrame.getWidth(), byteArrayFrame.getHeight()); diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java b/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java index 7367627..790a42e 100644 --- a/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java +++ b/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java @@ -29,6 +29,9 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback private Scenario _scenario; + // bottom at 60%; + public static float BAR_POSITION = 0.7f; + /** * The scorres in this moment, as to draw them on the screen. * Indexes are Emotion ordinals @@ -46,7 +49,6 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback private Paint missedPaint = new Paint(); private Paint scorePaint = new Paint(); private Paint bonusScorePaint = new Paint(); - private Paint scoreFinishedPaint = new Paint(); private Paint bonusBarPaint = new Paint(); private Point mLeftTop; @@ -107,7 +109,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback Typeface font = Typeface.createFromAsset(context.getAssets(), "unifont-9.0.02.ttf"); scorePaint.setColor(Color.YELLOW); - scorePaint.setTextSize(40); + scorePaint.setTextSize(getResources().getDimensionPixelSize(R.dimen.scenario_scorevalue)); scorePaint.setTypeface(Typeface.DEFAULT_BOLD); bonusScorePaint.setColor(Color.rgb(132, 0, 255)); @@ -116,10 +118,6 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback bonusBarPaint.setColor(Color.rgb(132, 0, 255)); - scoreFinishedPaint.setColor(Color.YELLOW); - scoreFinishedPaint.setTextSize(100); - scoreFinishedPaint.setTypeface(Typeface.DEFAULT_BOLD); - //setup paints for drawing mainPaint.setColor(Color.GRAY); @@ -134,7 +132,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback for(Emotion emotion: Emotion.values()) { Paint emoPaint = new Paint(); - emoPaint.setTextSize(22); + emoPaint.setTextSize(getResources().getDimensionPixelSize(R.dimen.scenario_emolabel)); // emoPaint.setTypeface(font);//gets ugly when transformed emoPaint.setColor(emotion.getColor()); // emoPaint.setShadowLayer(10,0,0,Color.BLACK); @@ -156,7 +154,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback int emoLightenedColor = Color.rgb(red, green, blue); emoScoredPaint.setColor(emoLightenedColor); - emoScoredPaint.setTextSize(20); + emoScoredPaint.setTextSize(getResources().getDimensionPixelSize(R.dimen.scenario_emolabel)); emoScoredPaint.setStrokeWidth(2); emoScoredPaint.setStyle(Paint.Style.FILL_AND_STROKE); // emoScoredPaint.setShadowLayer(10,0,0,Color.BLACK); @@ -189,12 +187,12 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback float height = canvas.getHeight(); float width = canvas.getWidth(); - // bottom at 80%; - float bottomline_height = height * (float) 0.8; + // bottom at 60%; + float bottomline_height = height * BAR_POSITION; // draw current hits: - float used_width = (float) 0.8; // 0.7: only use center + float used_width = (float) 0.9; // 0.7: only use center float padding_left = canvas.getWidth() * (1-used_width) / 2; float step_y = (canvas.getWidth() * used_width) / Emotion.values().length; float max_ball_radius = step_y * (float) 0.8 / 2; @@ -269,19 +267,20 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback float hitWidth = width*(_scenario.getHitPercentage()/100); float misWidth = width*(_scenario.getMissedPercentage()/100); float bonusWidth = width*(_scenario.getBonusPercentage()/100); + float bonus =_scenario.getBonusTotalValue(); - String scoreText = String.format("%1$.0f", _scenario.getHitTotalValue()); + String scoreText = String.format("%1$.0f", _scenario.getHitTotalValue() + bonus); Rect scoreTextBounds = new Rect(); scorePaint.getTextBounds(scoreText, 0, scoreText.length(), scoreTextBounds); canvas.drawText(scoreText, hitWidth, height*0.95f-scoreTextBounds.height(), scorePaint); - float bonus =_scenario.getBonusTotalValue(); - if(bonus > 0) { + + /*if(bonus > 0) { String bonusText = String.format("+ %1$.0f", bonus); Rect bonusTextBounds = new Rect(); bonusScorePaint.getTextBounds(bonusText, 0, bonusText.length(), bonusTextBounds); canvas.drawText(bonusText, hitWidth+scoreTextBounds.width()+3, height*0.95f-bonusTextBounds.height()-10, bonusScorePaint); - } + }*/ canvas.drawRect(0, height*0.95f, width, height, mainPaint); @@ -292,7 +291,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback canvas.drawRect(0, height*0.95f, hitWidth, height, emoPaints.get(Emotion.JOY)); // paint: yellow canvas.drawRect(hitWidth, height*0.95f, hitWidth+misWidth, height, missedPaint); - canvas.drawRect(0, height*0.95f, bonusWidth, height*0.975f, bonusBarPaint); +// canvas.drawRect(0, height*0.95f, bonusWidth, height*0.975f, bonusBarPaint); } } diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/SnapshotDialogFragment.java b/app/src/main/java/com/rubenvandeven/emotionhero/SnapshotDialogFragment.java new file mode 100644 index 0000000..9be7deb --- /dev/null +++ b/app/src/main/java/com/rubenvandeven/emotionhero/SnapshotDialogFragment.java @@ -0,0 +1,91 @@ +package com.rubenvandeven.emotionhero; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.DialogFragment; +import android.support.v4.widget.TextViewCompat; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +/** + * Created by ruben on 21/09/16. + */ + +public class SnapshotDialogFragment extends DialogFragment { + + Player player; + + public static SnapshotDialogFragment newInstance() { + SnapshotDialogFragment frag = new SnapshotDialogFragment(); + return frag; + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + player = Player.getInstance(getContext()); + + View v = getActivity().getLayoutInflater().inflate(R.layout.snapshot_check, null); + + if(player.hasSetSnapshotConfirm()) { + String statusString = player.allowsSnapshots() ? "share" : "not share"; + TextView statusText = new TextView(getContext()); + statusText.setText("You have currently set to "+statusString+" the snapshots."); + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + params.addRule(RelativeLayout.BELOW, R.id.lastText); + int margin = getResources().getDimensionPixelSize(R.dimen.fab_margin); + params.setMargins(margin, margin/2, margin, 0); + ((RelativeLayout) v.findViewById(R.id.snapshotLayout)).addView(statusText,params); + } + + return new AlertDialog.Builder(getActivity()) +// .setIcon(R.drawable.alert_dialog_icon) + .setTitle("Contribute") + .setView(v) + .setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialogInterface) { + // Set nothing, load website (triggers thing the next time + } + }) + .setPositiveButton("Yes!", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { +// ((FragmentAlertDialog)getActivity()).doPositiveClick(); + player.setAllowsSnapshots(true); + Toast.makeText(getContext(), "Thanks!", Toast.LENGTH_LONG).show(); + } + } + ) + .setNeutralButton("See website", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + // Set nothing, load website (triggers thing the next time + Intent i = new Intent(Intent.ACTION_VIEW); + i.setData(Uri.parse("https://emotionhero.com/faces")); + startActivity(i); + } + } + ) + .setNegativeButton("Nope", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { +// ((FragmentAlertDialog)getActivity()).doNegativeClick(); + player.setAllowsSnapshots(false); + Toast.makeText(getContext(), "Don't worry, we get it!", Toast.LENGTH_LONG).show(); + } + } + ) + .create(); + } + + +} diff --git a/app/src/main/res/drawable/example_brow.jpg b/app/src/main/res/drawable/example_brow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f76a0a45a1e8ab390f7a75965c804b39db252e2d GIT binary patch literal 6980 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/example_mouth.jpg b/app/src/main/res/drawable/example_mouth.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2eb49b0a8be2e5104975d4ebbf2a504b6fa1ae3 GIT binary patch literal 2279 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 + @@ -72,7 +83,7 @@ android:textColor="@color/textSecondary" android:textSize="30sp" android:textStyle="bold" - android:paddingBottom="60dp" + android:paddingBottom="100dp" android:shadowColor="@android:color/black" android:shadowDx="0" android:shadowDy="0" @@ -81,7 +92,6 @@ android:typeface="normal" android:fontFamily="sans-serif-condensed" /> - + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index ca45e7a..04e3d5e 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,4 +6,7 @@ 8dp 15sp 12sp + 20sp + 12sp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8c1f236..a9a17fd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -10,6 +10,7 @@ Continue Progress Credits + Settings HighscoreActivity Settings Hello World from section: %1$d diff --git a/build.gradle b/build.gradle index dd57b9d..86851b2 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0-rc2' + classpath 'com.android.tools.build:gradle:2.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files