package com.rubenvandeven.emotionhero; import android.app.ActivityManager; import android.app.ProgressDialog; import android.content.Context; 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(); 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() { 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) { showLoadingDialog(); Intent intent = new Intent(ProgressActivity.this, MirrorMenuActivity.class); intent.putExtra(MirrorMenuActivity.INTENT_EXTRA_SHOW_INTRO, true); startActivity(intent); finish(); } }); 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 playText = new TextView(this); String playString = hasAccess ? "play now!" : "locked"; playText.setText(playString); playText.setTextSize(getResources().getDimensionPixelSize(R.dimen.progress_play)); playText.setTextColor(getResources().getColor(hasAccess ? R.color.textPrimary : R.color.textSecondary)); RelativeLayout.LayoutParams playTextParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); playTextParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); playTextParams.addRule(RelativeLayout.BELOW, titleText.getId()); playText.setLayoutParams(playTextParams); lvlLayout.addView(playText); // score if(highscoreGame != null) { TextView scoreText = new TextView(this); String scoreString = String.format("%1$.2f", highscoreGame.score + highscoreGame.bonus); scoreText.setText(scoreString); scoreText.setTextColor(getResources().getColor(R.color.textPrimary)); scoreText.setTextSize(getResources().getDimensionPixelSize(R.dimen.progress_score)); RelativeLayout.LayoutParams scoreTextParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); scoreTextParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); scoreTextParams.addRule(RelativeLayout.BELOW, titleText.getId()); scoreText.setId(R.id.scoreText); scoreText.setLayoutParams(scoreTextParams); lvlLayout.addView(scoreText); View.OnClickListener toHighScoreClick = new View.OnClickListener() { @Override public void onClick(View v) { Intent intent; // Clicking score -> highscores intent = new Intent(ProgressActivity.this, HighscoreActivity.class); intent.putExtra(HighscoreActivity.INTENT_EXTRA_LVL_ID, scenario.id); startActivity(intent); } }; scoreText.setOnClickListener(toHighScoreClick); // +3 achievements 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_LEFT, RelativeLayout.TRUE); achievementTextParams.addRule(RelativeLayout.BELOW, scoreText.getId()); achievementText.setLayoutParams(achievementTextParams); achievementText.setTextSize(getResources().getDimensionPixelSize(R.dimen.highscore_textsize)); achievementText.setOnClickListener(toHighScoreClick); lvlLayout.addView(achievementText); } } if(hasAccess) { playText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent; // "PLAY NOW!" showLoadingDialog(); intent = new Intent(ProgressActivity.this, GamingActivity.class); intent.putExtra(GamingActivity.INTENT_EXTRA_SCENARIO, scenario.id); startActivity(intent); } }); } levelsLayout.addView(lvlLayout); si++; } boolean completedAll = player.getPlayerInfo().completedAll; 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(completedAll ? getResources().getColor(R.color.textHighlight) : getResources().getColor(R.color.textSecondary) ); outroText.setPadding(defaultMargin,defaultMargin,defaultMargin,defaultMargin); outroText.setId(R.id.textView); outroText.setTypeface(font); if(completedAll) { outroText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), EndingActivity.class); finish(); startActivity(intent); } }); } levelsLayout.addView(outroText); } @Override protected void onPause() { super.onPause(); ActivityManager activityManager = (ActivityManager) getApplicationContext() .getSystemService(Context.ACTIVITY_SERVICE); activityManager.moveTaskToFront(getTaskId(), 0); } /** * For kioskmode * @param hasFocus */ @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(!hasFocus) { // Close every kind of system dialog Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); sendBroadcast(closeDialog); } } }