216 lines
9.5 KiB
Java
216 lines
9.5 KiB
Java
package com.rubenvandeven.emotionhero;
|
|
|
|
import android.app.ProgressDialog;
|
|
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.progress_achievements));
|
|
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);
|
|
startActivity(intent);
|
|
finish();
|
|
}
|
|
});
|
|
}
|
|
|
|
levelsLayout.addView(outroText);
|
|
}
|
|
}
|