154 lines
5.3 KiB
Java
154 lines
5.3 KiB
Java
package de.frajul.endlessroll.views;
|
|
|
|
import android.view.View;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.TextView;
|
|
|
|
import de.frajul.endlessroll.R;
|
|
import de.frajul.endlessroll.levels.Level;
|
|
import de.frajul.endlessroll.levels.LevelPack;
|
|
import de.frajul.endlessroll.main.GameActivity;
|
|
import de.frajul.endlessroll.main.GameHandler;
|
|
import de.frajul.endlessroll.main.game.Game;
|
|
import de.frajul.endlessroll.main.game.Timer;
|
|
import de.frajul.endlessroll.user.User;
|
|
|
|
/**
|
|
* Created by Julian on 11.12.2015.
|
|
*/
|
|
public class ViewManager implements View.OnClickListener {
|
|
|
|
private GameHandler gameViewHandler;
|
|
private Game game;
|
|
|
|
private TextView fpsView;
|
|
private TextView playerProgress;
|
|
private TextView playerSpeed;
|
|
private ImageView pauseButton;
|
|
private GameOverMessage gameOverMessage;
|
|
private GoalMessage goalMessage;
|
|
public ToolButtonBar toolButtonBar;
|
|
public ShortMenu shortMenu;
|
|
private Countdown countdown;
|
|
|
|
private String fpsFormat, playerProgressFormat, playerSpeedFormat;
|
|
|
|
public ViewManager(final Game game, final GameHandler gameViewHandler, final GameActivity gameActivity) {
|
|
this.game = game;
|
|
this.gameViewHandler = gameViewHandler;
|
|
|
|
final RelativeLayout layout = gameViewHandler.getRootLayout();
|
|
gameViewHandler.startInUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
toolButtonBar = new ToolButtonBar(game,
|
|
gameActivity.getUser().getToolSlotSettings(),
|
|
(LinearLayout) layout.findViewById(R.id.game_toolbuttonbar));
|
|
shortMenu = new ShortMenu(game, gameActivity,
|
|
layout.findViewById(R.id.game_shortmenu));
|
|
gameOverMessage = new GameOverMessage(game, gameActivity,
|
|
layout.findViewById(R.id.game_game_over_message));
|
|
goalMessage = new GoalMessage(game, gameActivity, layout.findViewById(R.id.game_goal_message));
|
|
countdown = new Countdown(game, gameActivity.getTypeface(),
|
|
(TextView) layout.findViewById(R.id.game_countdown));
|
|
}
|
|
});
|
|
pauseButton = (ImageView) layout.findViewById(R.id.game_pausebutton);
|
|
pauseButton.setOnClickListener(this);
|
|
playerProgress = (TextView) layout.findViewById(R.id.game_playerprogress);
|
|
playerSpeed = (TextView) layout.findViewById(R.id.game_playerspeed);
|
|
fpsView = (TextView) layout.findViewById(R.id.game_fps);
|
|
|
|
fpsFormat = game.getContext().getString(R.string.game_fps_format_d);
|
|
playerProgressFormat = game.getContext().getString(R.string.game_playerprogress_format_f);
|
|
playerSpeedFormat = game.getContext().getString(R.string.game_playerspeed_format_f);
|
|
}
|
|
|
|
public void prepareToBeShown(){
|
|
if(shortMenu.isVisible())
|
|
shortMenu.prepareToBeShown();
|
|
if(gameOverMessage.isVisible())
|
|
gameOverMessage.prepareToBeShown();
|
|
if(goalMessage.isVisible())
|
|
goalMessage.prepareToBeShown();
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
game.tryToPause();
|
|
}
|
|
|
|
public void resetViews(final User user) {
|
|
gameViewHandler.startInUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
toolButtonBar.reset(user.getToolSlotSettings());
|
|
toolButtonBar.update(0);
|
|
playerProgress.setText(R.string.game_playerprogress_placeholder);
|
|
playerSpeed.setText(R.string.game_playerspeed_placeholder);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void onGoalMessageKeyBack(){
|
|
goalMessage.onKeyBack();
|
|
}
|
|
|
|
public void showGameOverMessage() {
|
|
gameViewHandler.startInUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
gameOverMessage.fadeIn();
|
|
}
|
|
});
|
|
}
|
|
|
|
public void showGoalMessage(final LevelPack levelPack, final Level level){
|
|
gameViewHandler.startInUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
goalMessage.fadeInWithDelay(levelPack, level);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void showShortMenu() {
|
|
shortMenu.startAnims();
|
|
shortMenu.setVisible(true);
|
|
}
|
|
|
|
public void hideShortMenu() {
|
|
shortMenu.setVisible(false);
|
|
}
|
|
|
|
public void startCountdown() {
|
|
countdown.start();
|
|
}
|
|
|
|
public void stopCountdown() {
|
|
countdown.stop();
|
|
}
|
|
|
|
public void update(final boolean gameRunning, final Timer timer, final float playerX, final float playerXMov) {
|
|
gameViewHandler.startInUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
fpsView.setText(String.format(fpsFormat, timer.getFps()));
|
|
if (gameRunning) {
|
|
playerProgress.setText(String.format(playerProgressFormat, toMeters(playerX)));
|
|
playerSpeed
|
|
.setText(String.format(playerSpeedFormat, toMeters(playerXMov * 1000)));
|
|
toolButtonBar.update(timer.getFrameTimeSeconds());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private float toMeters(float value) {
|
|
return ((int) (value * 20)) / 10f;
|
|
}
|
|
|
|
}
|