emotionhero/app/src/main/java/com/rubenvandeven/emotionhero/ProgressActivity.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);
}
}