minor gameflow changes
This commit is contained in:
parent
7ba9c2c431
commit
4187be4eaf
6 changed files with 144 additions and 27 deletions
|
@ -47,7 +47,7 @@ public enum Emotion {
|
||||||
case ANGER:
|
case ANGER:
|
||||||
return Color.RED;
|
return Color.RED;
|
||||||
case CONTEMPT:
|
case CONTEMPT:
|
||||||
return Color.BLUE;
|
return Color.WHITE;
|
||||||
case DISGUST:
|
case DISGUST:
|
||||||
return Color.GREEN;
|
return Color.GREEN;
|
||||||
case FEAR:
|
case FEAR:
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.view.WindowManager;
|
||||||
import android.view.animation.AlphaAnimation;
|
import android.view.animation.AlphaAnimation;
|
||||||
import android.view.animation.Animation;
|
import android.view.animation.Animation;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
@ -37,6 +38,8 @@ public class MirrorMenuActivity extends AppCompatActivity implements Detector.Im
|
||||||
|
|
||||||
final static String LOG_TAG = "EmotionHero-Mirror";
|
final static String LOG_TAG = "EmotionHero-Mirror";
|
||||||
|
|
||||||
|
public final static String INTENT_EXTRA_SHOW_INTRO = "com.rubenvandeven.emotionhero.INTRO";
|
||||||
|
|
||||||
private CameraDetector detector;
|
private CameraDetector detector;
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +50,12 @@ public class MirrorMenuActivity extends AppCompatActivity implements Detector.Im
|
||||||
|
|
||||||
SurfaceView cameraPreview;
|
SurfaceView cameraPreview;
|
||||||
ScenarioView scenarioView;
|
ScenarioView scenarioView;
|
||||||
|
LinearLayout mainMenu;
|
||||||
TextView messageText;
|
TextView messageText;
|
||||||
|
TextView nextButton;
|
||||||
|
TextView readyButton;
|
||||||
|
TextView text1;
|
||||||
|
TextView text2;
|
||||||
|
|
||||||
boolean has_camera_permission = false;
|
boolean has_camera_permission = false;
|
||||||
|
|
||||||
|
@ -74,12 +82,19 @@ public class MirrorMenuActivity extends AppCompatActivity implements Detector.Im
|
||||||
final TextView startButton = (TextView) findViewById(R.id.startButton);
|
final TextView startButton = (TextView) findViewById(R.id.startButton);
|
||||||
TextView highscoresButton = (TextView) findViewById(R.id.highscoresButton);
|
TextView highscoresButton = (TextView) findViewById(R.id.highscoresButton);
|
||||||
TextView creditsButton = (TextView) findViewById(R.id.creditsButton);
|
TextView creditsButton = (TextView) findViewById(R.id.creditsButton);
|
||||||
|
mainMenu = (LinearLayout) findViewById(R.id.mainMenu);
|
||||||
|
nextButton = (TextView) findViewById(R.id.nextButton);
|
||||||
|
readyButton = (TextView) findViewById(R.id.readyButton);
|
||||||
|
text1 = (TextView) findViewById(R.id.introText1);
|
||||||
|
text2 = (TextView) findViewById(R.id.introText2);
|
||||||
|
|
||||||
Typeface font = Typeface.createFromAsset(getAssets(), "unifont-9.0.02.ttf");
|
Typeface font = Typeface.createFromAsset(getAssets(), "unifont-9.0.02.ttf");
|
||||||
startButton .setTypeface(font);
|
startButton .setTypeface(font);
|
||||||
highscoresButton .setTypeface(font);
|
highscoresButton .setTypeface(font);
|
||||||
creditsButton .setTypeface(font);
|
creditsButton .setTypeface(font);
|
||||||
messageText.setTypeface(font);
|
messageText.setTypeface(font);
|
||||||
|
nextButton.setTypeface(font);
|
||||||
|
readyButton.setTypeface(font);
|
||||||
|
|
||||||
//We create a custom SurfaceView that resizes itself to match the aspect ratio of the incoming camera frames
|
//We create a custom SurfaceView that resizes itself to match the aspect ratio of the incoming camera frames
|
||||||
cameraPreview = new SurfaceView(this) {
|
cameraPreview = new SurfaceView(this) {
|
||||||
|
@ -162,23 +177,6 @@ public class MirrorMenuActivity extends AppCompatActivity implements Detector.Im
|
||||||
colorAnimation.start();
|
colorAnimation.start();
|
||||||
|
|
||||||
|
|
||||||
startButton.setOnClickListener(new View.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
Intent intent = new Intent(MirrorMenuActivity.this, IntroductionActivity.class);
|
|
||||||
// if(!player.getPlayerInfo().canContinueLevel()) {
|
|
||||||
// intent = new Intent(MirrorMenuActivity.this, IntroductionActivity.class);
|
|
||||||
// } else {
|
|
||||||
// loadGameDialog = ProgressDialog.show(MirrorMenuActivity.this, "",
|
|
||||||
// MirrorMenuActivity.this.getResources().getString(R.string.load_game_activity), true);
|
|
||||||
// intent = new Intent(MirrorMenuActivity.this, GamingActivity.class);
|
|
||||||
// }
|
|
||||||
startActivity(intent);
|
|
||||||
detector.stop();
|
|
||||||
detector = null;
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// merge with 'start button'
|
// merge with 'start button'
|
||||||
|
@ -206,6 +204,46 @@ public class MirrorMenuActivity extends AppCompatActivity implements Detector.Im
|
||||||
|
|
||||||
rs = RenderScript.create(this);
|
rs = RenderScript.create(this);
|
||||||
|
|
||||||
|
|
||||||
|
startButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
gotoIntro();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
nextButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
nextButton.setVisibility(View.GONE);
|
||||||
|
readyButton.setVisibility(View.VISIBLE);
|
||||||
|
text1.setVisibility(View.GONE);
|
||||||
|
text2.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
readyButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(MirrorMenuActivity.this, ProgressActivity.class);
|
||||||
|
finish();
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// all setup, see wheter we immediately continue to intro:
|
||||||
|
boolean showIntro = getIntent().getBooleanExtra(INTENT_EXTRA_SHOW_INTRO, false);
|
||||||
|
if(showIntro) {
|
||||||
|
gotoIntro();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gotoIntro() {
|
||||||
|
nextButton.setVisibility(View.VISIBLE);
|
||||||
|
text1.setVisibility(View.VISIBLE);
|
||||||
|
mainMenu.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -43,6 +43,20 @@ public class ProgressActivity extends AppCompatActivity {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
// rebuild layout on each onResume, so that updated scores are refreshed
|
// rebuild layout on each onResume, so that updated scores are refreshed
|
||||||
buildLayout();
|
buildLayout();
|
||||||
|
hideLoadingDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ProgressDialog dialog;
|
||||||
|
|
||||||
|
public void showLoadingDialog() {
|
||||||
|
dialog = ProgressDialog.show(ProgressActivity.this, "",
|
||||||
|
getApplicationContext().getResources().getString(R.string.load_game_activity), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void hideLoadingDialog() {
|
||||||
|
if(dialog != null) {
|
||||||
|
dialog.cancel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void buildLayout() {
|
public void buildLayout() {
|
||||||
|
@ -63,8 +77,11 @@ public class ProgressActivity extends AppCompatActivity {
|
||||||
introText.setOnClickListener(new View.OnClickListener() {
|
introText.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
Intent intent = new Intent(ProgressActivity.this, IntroductionActivity.class);
|
showLoadingDialog();
|
||||||
|
Intent intent = new Intent(ProgressActivity.this, MirrorMenuActivity.class);
|
||||||
|
intent.putExtra(MirrorMenuActivity.INTENT_EXTRA_SHOW_INTRO, true);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -131,8 +148,7 @@ public class ProgressActivity extends AppCompatActivity {
|
||||||
intent.putExtra(HighscoreActivity.INTENT_EXTRA_LVL_ID, scenario.id);
|
intent.putExtra(HighscoreActivity.INTENT_EXTRA_LVL_ID, scenario.id);
|
||||||
} else {
|
} else {
|
||||||
// "PLAY NOW!"
|
// "PLAY NOW!"
|
||||||
ProgressDialog dialog = ProgressDialog.show(getApplicationContext(), "",
|
showLoadingDialog();
|
||||||
getApplicationContext().getResources().getString(R.string.load_game_activity), true);
|
|
||||||
intent = new Intent(ProgressActivity.this, GamingActivity.class);
|
intent = new Intent(ProgressActivity.this, GamingActivity.class);
|
||||||
intent.putExtra(GamingActivity.INTENT_EXTRA_SCENARIO, scenario.id);
|
intent.putExtra(GamingActivity.INTENT_EXTRA_SCENARIO, scenario.id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback
|
||||||
private Paint attrScoreLinePaint = new Paint();
|
private Paint attrScoreLinePaint = new Paint();
|
||||||
private Paint linePaint = new Paint();
|
private Paint linePaint = new Paint();
|
||||||
private Paint scorePaint = new Paint();
|
private Paint scorePaint = new Paint();
|
||||||
|
private Paint bonusScorePaint = new Paint();
|
||||||
private Paint scoreFinishedPaint = new Paint();
|
private Paint scoreFinishedPaint = new Paint();
|
||||||
private Paint bonusBarPaint = new Paint();
|
private Paint bonusBarPaint = new Paint();
|
||||||
|
|
||||||
|
@ -103,9 +104,13 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback
|
||||||
_scenario = s;
|
_scenario = s;
|
||||||
|
|
||||||
scorePaint.setColor(Color.YELLOW);
|
scorePaint.setColor(Color.YELLOW);
|
||||||
scorePaint.setTextSize(50);
|
scorePaint.setTextSize(40);
|
||||||
scorePaint.setTypeface(Typeface.DEFAULT_BOLD);
|
scorePaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||||
|
|
||||||
|
bonusScorePaint.setColor(Color.rgb(132, 0, 255));
|
||||||
|
bonusScorePaint.setTextSize(20);
|
||||||
|
bonusScorePaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||||
|
|
||||||
bonusBarPaint.setColor(Color.rgb(132, 0, 255));
|
bonusBarPaint.setColor(Color.rgb(132, 0, 255));
|
||||||
|
|
||||||
scoreFinishedPaint.setColor(Color.YELLOW);
|
scoreFinishedPaint.setColor(Color.YELLOW);
|
||||||
|
@ -118,7 +123,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback
|
||||||
|
|
||||||
linePaint.setColor(Color.GRAY);
|
linePaint.setColor(Color.GRAY);
|
||||||
linePaint.setStrokeWidth(5);
|
linePaint.setStrokeWidth(5);
|
||||||
attrScorePaint.setColor(Color.DKGRAY);
|
attrScorePaint.setColor(Color.GRAY);
|
||||||
|
|
||||||
attrScoreLinePaint.setColor(Color.DKGRAY);
|
attrScoreLinePaint.setColor(Color.DKGRAY);
|
||||||
attrScoreLinePaint.setStrokeWidth(2);
|
attrScoreLinePaint.setStrokeWidth(2);
|
||||||
|
@ -266,6 +271,7 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback
|
||||||
|
|
||||||
// canvas.drawText(scoreText, (width - scoreTextBounds.width()) / 2, height - 10, usedScorePaint);
|
// canvas.drawText(scoreText, (width - scoreTextBounds.width()) / 2, height - 10, usedScorePaint);
|
||||||
|
|
||||||
|
canvas.restore();
|
||||||
|
|
||||||
float hitWidth = width*(_scenario.getHitPercentage()/100);
|
float hitWidth = width*(_scenario.getHitPercentage()/100);
|
||||||
float misWidth = width*(_scenario.getMissedPercentage()/100);
|
float misWidth = width*(_scenario.getMissedPercentage()/100);
|
||||||
|
@ -274,7 +280,15 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback
|
||||||
String scoreText = String.format("%1$.0f", _scenario.getHitTotalValue());
|
String scoreText = String.format("%1$.0f", _scenario.getHitTotalValue());
|
||||||
Rect scoreTextBounds = new Rect();
|
Rect scoreTextBounds = new Rect();
|
||||||
scorePaint.getTextBounds(scoreText, 0, scoreText.length(), scoreTextBounds);
|
scorePaint.getTextBounds(scoreText, 0, scoreText.length(), scoreTextBounds);
|
||||||
canvas.drawText(scoreText, hitWidth, height*0.95f-scoreTextBounds.height()-5, scorePaint);
|
canvas.drawText(scoreText, hitWidth, height*0.95f-scoreTextBounds.height(), scorePaint);
|
||||||
|
|
||||||
|
float bonus =_scenario.getBonusTotalValue();
|
||||||
|
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);
|
canvas.drawRect(0, height*0.95f, width, height, mainPaint);
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/mainMenu"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
@ -68,10 +69,10 @@
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:keepScreenOn="true"
|
android:keepScreenOn="true"
|
||||||
android:text="@string/dummy_content"
|
android:text="@string/dummy_content"
|
||||||
android:textColor="@color/textPrimary"
|
android:textColor="@color/textSecondary"
|
||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:paddingBottom="30dp"
|
android:paddingBottom="60dp"
|
||||||
android:shadowColor="@android:color/black"
|
android:shadowColor="@android:color/black"
|
||||||
android:shadowDx="0"
|
android:shadowDx="0"
|
||||||
android:shadowDy="0"
|
android:shadowDy="0"
|
||||||
|
@ -98,4 +99,52 @@
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:contentDescription="@string/app_name" />
|
android:contentDescription="@string/app_name" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/logoEmotionHero"
|
||||||
|
android:paddingLeft="@dimen/fab_margin"
|
||||||
|
android:paddingRight="@dimen/fab_margin"
|
||||||
|
android:id="@+id/introText1"
|
||||||
|
android:text="@string/game_intro_text"
|
||||||
|
android:textColor="@color/textPrimary"
|
||||||
|
android:textSize="30sp"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:text="Yes!"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:id="@+id/nextButton"
|
||||||
|
android:textSize="40sp"
|
||||||
|
android:textColor="@color/textHighlight"
|
||||||
|
android:layout_marginBottom="20dp"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/logoEmotionHero"
|
||||||
|
android:paddingLeft="@dimen/fab_margin"
|
||||||
|
android:paddingRight="@dimen/fab_margin"
|
||||||
|
android:id="@+id/introText2"
|
||||||
|
android:text="@string/game_intro_text2"
|
||||||
|
android:textColor="@color/textPrimary"
|
||||||
|
android:textSize="30sp"
|
||||||
|
android:visibility="gone"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:text="I'm ready!"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:id="@+id/readyButton"
|
||||||
|
android:textSize="40sp"
|
||||||
|
android:textColor="@color/textHighlight"
|
||||||
|
android:layout_marginBottom="20dp"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
|
@ -15,5 +15,5 @@
|
||||||
<string name="section_format">Hello World from section: %1$d</string>
|
<string name="section_format">Hello World from section: %1$d</string>
|
||||||
<string name="load_game_activity">Loading training...</string>
|
<string name="load_game_activity">Loading training...</string>
|
||||||
<string name="game_intro_text">Are you ready to become the next <b>Emotion Hero</b>? With this program you train for the right emotional response in <i>every</i> situation.</string>
|
<string name="game_intro_text">Are you ready to become the next <b>Emotion Hero</b>? With this program you train for the right emotional response in <i>every</i> situation.</string>
|
||||||
<string name="game_intro_text2">Feel the emotions as they are given by the dots on screen. If <i>you</i> feel them, <i>we</i> detect them.\nNote that you do not always need to go full throttle, we can detect eg. a 47% surprise score!</string>
|
<string name="game_intro_text2">The bar belows shows your current feelings.\nFeel the emotions as they are given by the dots on screen. If <i>you</i> feel them, <i>we</i> detect them!</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue