diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3c1ed71..eb97023 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -55,12 +55,18 @@
android:name=".ReviewActivity"
android:theme="@style/AppTheme.NoActionBar" />
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/AchievementCollection.java b/app/src/main/java/com/rubenvandeven/emotionhero/AchievementCollection.java
index 0754357..b60a2fb 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/AchievementCollection.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/AchievementCollection.java
@@ -10,12 +10,12 @@ import java.util.ArrayList;
public class AchievementCollection {
private ArrayList achievements = new ArrayList(){{
// fill the collection :-)
- add(new Achievement("Microexpressor", null, null));
- add(new Achievement("\"In pursuit of happiness\"", null, null));
- add(new Achievement("CEO", null, null));
- add(new Achievement("Kuleshov", null, null));
- add(new Achievement("Soap opera", null, null));
- add(new Achievement("Stock photo model", null, null));
+ add(new Achievement("Microexpressor", "...", null));
+ add(new Achievement("\"In pursuit of happiness\"", "...", null));
+ add(new Achievement("CEO", "...", null));
+ add(new Achievement("Kuleshov", "...", null));
+ add(new Achievement("Soap opera", "...", null));
+ add(new Achievement("Stock photo model", "...", null));
}};
private static AchievementCollection ourInstance = new AchievementCollection();
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/GameOpenHelper.java b/app/src/main/java/com/rubenvandeven/emotionhero/GameOpenHelper.java
index 66163dc..d5de0de 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/GameOpenHelper.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/GameOpenHelper.java
@@ -2,6 +2,7 @@ package com.rubenvandeven.emotionhero;
import android.content.ContentValues;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
@@ -233,10 +234,10 @@ public class GameOpenHelper extends SQLiteOpenHelper {
public Game[] getGamesForLevel(int lvl_id) {
Scenario scenario = new Scenario(lvl_id, null);
- return getGamesForScenario(scenario);
+ return getGamesForScenario(scenario, null);
}
- public Game[] getGamesForScenario(Scenario s) {
+ public Game[] getGamesForScenario(Scenario s, Integer limit) {
SQLiteDatabase db = getReadableDatabase();
String selection = "lvl_id = ?";
@@ -252,7 +253,7 @@ public class GameOpenHelper extends SQLiteOpenHelper {
null, // don't group the rows
null, // don't filter by row groups
sortOrder, // The sort order
- null // no limit!
+ limit == null ? null : Integer.toString(limit) // no limit!
);
return cursorToGames(c, s);
}
@@ -366,6 +367,14 @@ public class GameOpenHelper extends SQLiteOpenHelper {
hit.id = newRowId;
}
+ public Game getHighscoreGameForScenario(Scenario scenario) {
+ Game[] games = getGamesForScenario(scenario, 1);
+ if(games == null || games.length == 0) {
+ return null;
+ }
+ return games[0];
+ }
+
public ArrayList getHitsForGame(Game game) {
SQLiteDatabase db = getReadableDatabase();
@@ -462,7 +471,7 @@ public class GameOpenHelper extends SQLiteOpenHelper {
Cursor c = getReadableDatabase().rawQuery("SELECT achievement_id FROM games g INNER JOIN game_achievements ga ON ga.game_id = g.id WHERE g.id = ?", params);
int count = c.getCount();
if(count < 1)
- return null;
+ return new ArrayList();
ArrayList achievements = new ArrayList<>(count);
c.moveToFirst();
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/GamingActivity.java b/app/src/main/java/com/rubenvandeven/emotionhero/GamingActivity.java
index 458fca9..2e81b15 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/GamingActivity.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/GamingActivity.java
@@ -155,14 +155,16 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
createSoundPool(); // instantiate SoundPool in sound
soundIds.put(SOUND_SCORE, sound.load(this, R.raw.score2, 1));
- StoryDialogFragment storyDialog = new StoryDialogFragment();
- storyDialog.show(getSupportFragmentManager(), "StoryDialog");
+// StoryDialogFragment storyDialog = new StoryDialogFragment();
+// storyDialog.show(getSupportFragmentManager(), "StoryDialog");
Typeface font = Typeface.createFromAsset(getAssets(), "unifont-9.0.02.ttf");
mContentView.setTypeface(font);
- titleText.setText(currentScenario.game.toString());
+ titleText.setText(currentScenario.toString());
titleText.setTypeface(font);
+
+ startGame();
}
public void startGame() {
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/HighscoreActivity.java b/app/src/main/java/com/rubenvandeven/emotionhero/HighscoreActivity.java
index 6f63fd4..0513a2e 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/HighscoreActivity.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/HighscoreActivity.java
@@ -37,6 +37,7 @@ public class HighscoreActivity extends AppCompatActivity {
public final static String INTENT_EXTRA_SCORE_ID = "com.rubenvandeven.emotionhero.SCORE_ID";
public final static String INTENT_EXTRA_GAME_ID = "com.rubenvandeven.emotionhero.GAME_ID";
+ public final static String INTENT_EXTRA_LVL_ID = "com.rubenvandeven.emotionhero.LVL_ID";
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
@@ -82,6 +83,7 @@ public class HighscoreActivity extends AppCompatActivity {
// }
// get game from Intent
String gameIdString = getIntent().getStringExtra(INTENT_EXTRA_GAME_ID);
+ int providedLvlId = getIntent().getIntExtra(INTENT_EXTRA_LVL_ID, 0);
if(gameIdString != null) {
long gameId = Long.valueOf(gameIdString);
Game game = player.getGameOpenHelper().getGameByid(gameId);
@@ -112,6 +114,10 @@ public class HighscoreActivity extends AppCompatActivity {
if(game != null) {
int levelpage = Scenario.SCENARIOS.indexOf(game.scenario.id);
mViewPager.setCurrentItem(levelpage);
+ } else if(providedLvlId != 0) {
+ int levelpage = Scenario.SCENARIOS.indexOf(providedLvlId);
+ Log.e("HIGHSCORE", "page: "+levelpage);
+ mViewPager.setCurrentItem(levelpage);
}
@@ -186,7 +192,7 @@ public class HighscoreActivity extends AppCompatActivity {
Player player = Player.getInstance(getContext());
GameOpenHelper gameOpenHelper = player.getGameOpenHelper();
- Game[] games = gameOpenHelper.getGamesForScenario(scenario);
+ Game[] games = gameOpenHelper.getGamesForScenario(scenario, null);
if(gameId != 0) {
Log.d("Highscore", "Request game: " + gameId);
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/MirrorMenuActivity.java b/app/src/main/java/com/rubenvandeven/emotionhero/MirrorMenuActivity.java
index d125330..968c3e6 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/MirrorMenuActivity.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/MirrorMenuActivity.java
@@ -174,7 +174,7 @@ public class MirrorMenuActivity extends AppCompatActivity implements Detector.Im
highscoresButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Intent intent = new Intent(MirrorMenuActivity.this, HighscoreActivity.class);
+ Intent intent = new Intent(MirrorMenuActivity.this, ProgressActivity.class);
// intent.putExtra(HighscoreActivity.INTENT_EXTRA_LEVEL, player.getPlayerInfo().reachedLevelId);
startActivity(intent);
}
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/ProgressActivity.java b/app/src/main/java/com/rubenvandeven/emotionhero/ProgressActivity.java
new file mode 100644
index 0000000..cd24e6c
--- /dev/null
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/ProgressActivity.java
@@ -0,0 +1,161 @@
+package com.rubenvandeven.emotionhero;
+
+import android.content.Intent;
+import android.graphics.Typeface;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutCompat;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+public class ProgressActivity extends AppCompatActivity {
+
+ Player player;
+
+ LinearLayout levelsLayout;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ setContentView(R.layout.activity_progress);
+
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ getSupportActionBar().setTitle("Progress");
+
+ levelsLayout = (LinearLayout) findViewById(R.id.levelsLayout);
+
+ player = Player.getInstance(getApplicationContext());
+
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ // rebuild layout on each onResume, so that updated scores are refreshed
+ buildLayout();
+ }
+
+ public void buildLayout() {
+ levelsLayout.removeAllViews();
+
+ Typeface font = Typeface.createFromAsset(getAssets(), "unifont-9.0.02.ttf");
+
+ int defaultMargin = getResources().getDimensionPixelSize(R.dimen.fab_margin);
+
+ TextView introText = new TextView(this);
+ introText.setText("0. Introduction");
+ introText.setTextSize(getResources().getDimensionPixelSize(R.dimen.gametitle_textsize));
+ introText.setTextColor(getResources().getColor(R.color.textHighlight));
+ introText.setPadding(defaultMargin,defaultMargin,defaultMargin,defaultMargin);
+ introText.setId(R.id.textView);
+ introText.setTypeface(font);
+
+ introText.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(ProgressActivity.this, IntroActivity.class);
+ startActivity(intent);
+ }
+ });
+
+ levelsLayout.addView(introText);
+
+ int si = 1;
+ for(int lvl_id: Scenario.SCENARIOS) {
+ final Scenario scenario = new Scenario(lvl_id, null);
+ boolean hasAccess = player.getPlayerInfo().hasAccessToLevel(scenario.id);
+ Log.d("PROGRESS", "scenario: "+scenario.id);
+
+ final Game highscoreGame = player.getGameOpenHelper().getHighscoreGameForScenario(scenario);
+ int playerAchievementCount = player.getGameOpenHelper().countAchievementsForLevel(scenario.id);
+ int totalAchievementCount = scenario.achievements.size();
+
+ RelativeLayout lvlLayout = new RelativeLayout(this);
+ lvlLayout.setPadding(defaultMargin,defaultMargin,defaultMargin,defaultMargin);
+ lvlLayout.setLayoutParams(new LinearLayoutCompat.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+
+ TextView titleText = new TextView(this);
+// titleText.setText(hasAccess ? scenario.toString() : "= LOCKED =");
+ titleText.setText(String.format("%1$d. %2$s", si, scenario.toString()));
+ titleText.setTextSize(getResources().getDimensionPixelSize(R.dimen.gametitle_textsize));
+ titleText.setTextColor(getResources().getColor(hasAccess ? R.color.textHighlight : R.color.textSecondary));
+ titleText.setId(R.id.textView);
+ titleText.setTypeface(font);
+
+
+ lvlLayout.addView(titleText);
+
+ TextView scoreText = new TextView(this);
+ String scoreString = (highscoreGame != null) ? String.format("%1$.2f", highscoreGame.score + highscoreGame.bonus) : (hasAccess ? "play now!" : "locked");
+ scoreText.setText(scoreString);
+ scoreText.setTextColor(getResources().getColor(hasAccess ? R.color.textPrimary : R.color.textSecondary));
+ scoreText.setTextSize(getResources().getDimensionPixelSize(R.dimen.highscore_textsize));
+ RelativeLayout.LayoutParams scoreTextParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ scoreTextParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
+ scoreTextParams.addRule(RelativeLayout.BELOW, titleText.getId());
+ scoreText.setId(R.id.scoreText);
+ scoreText.setLayoutParams(scoreTextParams);
+
+ lvlLayout.addView(scoreText);
+
+ if(playerAchievementCount > 0) {
+ TextView achievementText = new TextView(this);
+ achievementText.setText(String.format("+%1$d achievements", playerAchievementCount));
+ achievementText.setTextColor(getResources().getColor(R.color.textSecondary));
+ RelativeLayout.LayoutParams achievementTextParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ achievementTextParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
+ achievementTextParams.addRule(RelativeLayout.BELOW, scoreText.getId());
+ achievementText.setLayoutParams(achievementTextParams);
+ lvlLayout.addView(achievementText);
+ }
+
+ if(hasAccess) {
+ lvlLayout.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent;
+ // TODO: is this behaviour confusing?
+ if(highscoreGame != null) {
+ // Clicking score -> highscores
+ intent = new Intent(ProgressActivity.this, HighscoreActivity.class);
+ intent.putExtra(HighscoreActivity.INTENT_EXTRA_LVL_ID, scenario.id);
+ } else {
+ // "PLAY NOW!"
+ intent = new Intent(ProgressActivity.this, GamingActivity.class);
+ intent.putExtra(GamingActivity.INTENT_EXTRA_SCENARIO, scenario.id);
+ }
+ startActivity(intent);
+ }
+ });
+ }
+
+
+ levelsLayout.addView(lvlLayout);
+
+ si++;
+
+ }
+
+
+ TextView outroText = new TextView(this);
+ outroText.setText(String.format("Ending: %1$s", "\"All hail the Emotion Hero!\""));
+// outroText.setText(String.format("%1$d. %2$s", si, "Em07i0n H3r0!"));
+ outroText.setTextSize(getResources().getDimensionPixelSize(R.dimen.gametitle_textsize));
+ outroText.setTextColor(getResources().getColor(R.color.textHighlight));
+ outroText.setPadding(defaultMargin,defaultMargin,defaultMargin,defaultMargin);
+ outroText.setId(R.id.textView);
+ outroText.setTypeface(font);
+ // TODO: check if last level was sufficient (minscore/achievements)
+
+ levelsLayout.addView(outroText);
+ }
+}
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/ReviewAchievementsActivity.java b/app/src/main/java/com/rubenvandeven/emotionhero/ReviewAchievementsActivity.java
index d558e7e..7ef1866 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/ReviewAchievementsActivity.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/ReviewAchievementsActivity.java
@@ -2,6 +2,7 @@ package com.rubenvandeven.emotionhero;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.support.v7.widget.AppCompatTextView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.WindowManager;
@@ -56,6 +57,7 @@ public class ReviewAchievementsActivity extends AppCompatActivity {
addAchievement(achievement);
}
+
int toDiscover = game.scenario.achievements.size() - game.achievements.size();
if(toDiscover > 0) {
@@ -63,19 +65,28 @@ public class ReviewAchievementsActivity extends AppCompatActivity {
} else {
toDiscoverText.setText("Wow, you obtained all achievements in one run!!");
}
+
+
}
public void addAchievement(Achievement achievement) {
- TextView titleText = new TextView(this);
- TextView descriptionText = new TextView(this);
+ AppCompatTextView titleText = new AppCompatTextView(this);
+ AppCompatTextView descriptionText = new AppCompatTextView(this);
// ImageView imageView = new ImageView(this);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+
titleText.setText(achievement.title);
+// titleText.setText("mwa");
titleText.setTextColor(getResources().getColor(R.color.textHighlight));
- titleText.setTextSize(R.dimen.highscore_textsize);
+ titleText.setTextSize(getResources().getDimensionPixelSize(R.dimen.highscore_textsize));
+ titleText.setLayoutParams(params);
+
descriptionText.setText(achievement.description);
descriptionText.setTextColor(getResources().getColor(R.color.textPrimary));
+ descriptionText.setLayoutParams(params);
+
achievementsLayout.addView(titleText);
achievementsLayout.addView(descriptionText);
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/ReviewActivity.java b/app/src/main/java/com/rubenvandeven/emotionhero/ReviewActivity.java
index 9f02781..1df00d7 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/ReviewActivity.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/ReviewActivity.java
@@ -167,6 +167,7 @@ public class ReviewActivity extends AppCompatActivity {
lvlNameText.setTypeface(font);
overallScorePercText.setTypeface(font);
achievementArrow.setTypeface(font);
+ achievementText.setTypeface(font);
retryArrow.setTypeface(font);
improveArrow.setTypeface(font);
nextLvlArrow.setTypeface(font);
@@ -216,7 +217,7 @@ public class ReviewActivity extends AppCompatActivity {
}
public void checkAchievements() {
- if(game.achievements.size() > 0) {
+ if(game.achievements != null && game.achievements.size() > 0) {
achievementTitle.setVisibility(View.VISIBLE);
achievementLayout.setVisibility(View.VISIBLE);
@@ -225,7 +226,7 @@ public class ReviewActivity extends AppCompatActivity {
if(achievementString.length() > 0) {
achievementString += "\n";
}
- achievementString += String.format("%2$s", achievement.title);
+ achievementString += String.format("%1$s", achievement.title);
}
achievementText.setText(achievementString);
achievementLayout.setOnClickListener(new View.OnClickListener() {
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/Scenario.java b/app/src/main/java/com/rubenvandeven/emotionhero/Scenario.java
index 99c80b8..d017d03 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/Scenario.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/Scenario.java
@@ -468,13 +468,13 @@ public class Scenario {
switch(id) {
case LVL_ANGER:
- return "CEO";
+ return "\"Smile like you mean it\"";
case LVL_JOY:
- return "The Conversation";
+ return "The seven";
case LVL_SURPRISE:
- return "Party time!";
+ return "\"Let's talk business\"";
case LVL_SADDNESS:
- return "Six feet under";
+ return "A sad sad situation";
}
return "...";
}
diff --git a/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java b/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java
index f23f9a9..55a5647 100644
--- a/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java
+++ b/app/src/main/java/com/rubenvandeven/emotionhero/ScenarioView.java
@@ -288,8 +288,6 @@ public class ScenarioView extends SurfaceView implements SurfaceHolder.Callback
canvas.drawRect(0, height*0.95f, bonusWidth, height*0.975f, bonusBarPaint);
}
-
-
}
// TODO: create AttributeScoreCollection class, with this method.
diff --git a/app/src/main/res/layout/activity_progress.xml b/app/src/main/res/layout/activity_progress.xml
new file mode 100644
index 0000000..d75e311
--- /dev/null
+++ b/app/src/main/res/layout/activity_progress.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index c16f46a..ca45e7a 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -5,4 +5,5 @@
16dp
8dp
15sp
+ 12sp