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 0000000..f76a0a4 Binary files /dev/null and b/app/src/main/res/drawable/example_brow.jpg differ 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 0000000..a2eb49b Binary files /dev/null and b/app/src/main/res/drawable/example_mouth.jpg differ diff --git a/app/src/main/res/drawable/example_nose.jpg b/app/src/main/res/drawable/example_nose.jpg new file mode 100644 index 0000000..57b9d2e Binary files /dev/null and b/app/src/main/res/drawable/example_nose.jpg differ diff --git a/app/src/main/res/layout/activity_mirror_menu.xml b/app/src/main/res/layout/activity_mirror_menu.xml index a9112a0..de9ad39 100644 --- a/app/src/main/res/layout/activity_mirror_menu.xml +++ b/app/src/main/res/layout/activity_mirror_menu.xml @@ -57,6 +57,17 @@ android:layout_height="wrap_content" android:id="@+id/creditsButton" android:fontFamily="sans-serif" /> + @@ -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