package com.arretadogames.pilot.screens; import android.graphics.Color; import android.view.MotionEvent; import aurelienribon.tweenengine.Tween; import aurelienribon.tweenengine.TweenAccessor; import aurelienribon.tweenengine.equations.Quart; import com.arretadogames.pilot.R; import com.arretadogames.pilot.config.GameSettings; import com.arretadogames.pilot.game.Game; import com.arretadogames.pilot.game.GameMode; import com.arretadogames.pilot.game.GameState; import com.arretadogames.pilot.loading.FontLoader; import com.arretadogames.pilot.loading.FontLoader.FontTypeFace; import com.arretadogames.pilot.render.opengl.GLCanvas; import com.arretadogames.pilot.tournaments.TournamentManager; import com.arretadogames.pilot.ui.AnimationManager; import com.arretadogames.pilot.ui.GameButtonListener; import com.arretadogames.pilot.ui.TextImageButton; import com.arretadogames.pilot.ui.ZoomImageButton; import com.arretadogames.pilot.util.Assets; public class PauseScreen extends GameScreen implements TweenAccessor<PauseScreen>, GameButtonListener { private static final int CONTINUE_BT = 1; private static final int RESTART_BT = 2; private static final int QUIT_BT = 3; private final float GAME_WIDTH = getDimension(R.dimen.screen_width); private final float GAME_HEIGHT = getDimension(R.dimen.screen_height); private final float PAUSE_MENU_WIDTH; private boolean isHidden; private final float ARROW_WIDTH; private int backgroundId; private float currentBlackAlpha; private float currentWidth; private ZoomImageButton continueBt; private ZoomImageButton restartBt; private ZoomImageButton quitBt; public PauseScreen() { isHidden = true; backgroundId = R.drawable.pause_menu_bg; // PAUSE_MENU_WIDTH = getDimension(R.dimen.pause_bg_width) - getDimension(R.dimen.pause_bg_extra_width); PAUSE_MENU_WIDTH = 800; ARROW_WIDTH = getDimension(R.dimen.pause_menu_arrow_width);// ImageLoader.checkBitmapSize(R.drawable.pause_menu_bg)[0] - PAUSE_MENU_SIZE; currentWidth = ARROW_WIDTH; currentBlackAlpha = 0; continueBt = new ZoomImageButton(CONTINUE_BT, 0, 150, getDimension(R.dimen.main_menu_button_size) + 50, getDimension(R.dimen.main_menu_button_size) + 50, this, R.drawable.continue_selected, R.drawable.continue_unselected); restartBt = new ZoomImageButton(RESTART_BT, 0, 160, getDimension(R.dimen.main_menu_button_size) + 30, getDimension(R.dimen.main_menu_button_size) + 30, this, R.drawable.restart_selected, R.drawable.restart_unselected); quitBt = new ZoomImageButton(QUIT_BT, 0, 160, getDimension(R.dimen.main_menu_button_size) + 30, getDimension(R.dimen.main_menu_button_size) + 30, this, R.drawable.menu_selected, R.drawable.menu_unselected); } @Override public void render(GLCanvas canvas, float timeElapsed) { canvas.drawRect(0, 0, 800, 480, Color.argb((int)currentBlackAlpha, 0, 0, 0)); // canvas.drawBitmap(backgroundId, (800 - currentWidth), 1, // getDimension(R.dimen.pause_bg_width), getDimension(R.dimen.pause_bg_height), // getDimension(R.dimen.pause_bg_extra_width), 0); // Fnish // canvas.drawBitmap(backgroundId, 0, 0, GAME_WIDTH, GAME_HEIGHT, 0, // getDimension(R.dimen.main_menu_bg_extra_height)); canvas.drawBitmap(backgroundId, (800 - currentWidth), 1, GAME_WIDTH, GAME_HEIGHT, 0, getDimension(R.dimen.main_menu_bg_extra_height)); if (!isHidden) { float buttonX = GameSettings.TARGET_WIDTH - currentWidth + ARROW_WIDTH + 8 + 140; restartBt.setX(buttonX); restartBt.render(canvas, timeElapsed); continueBt.setX(buttonX + 140); continueBt.render(canvas, timeElapsed); quitBt.setX(buttonX + 300 ); quitBt.render(canvas, timeElapsed); } } @Override public void step(float timeElapsed) { // TODO Auto-generated method stub } @Override public void input(InputEventHandler event) { if(isHidden) { } else { continueBt.input(event); restartBt.input(event); quitBt.input(event); } // if (isHidden && event.getAction() == MotionEvent.ACTION_UP) { // if (event.getY() <= 77 && event.getX() > 800 - ARROW_WIDTH) { // show(); // } // } else if (!isHidden) { // continueBt.input(event); // restartBt.input(event); // quitBt.input(event); // if (event.getX() < GameSettings.TARGET_WIDTH - PAUSE_MENU_WIDTH + ARROW_WIDTH) // hide(); // // } } public void show() { isHidden = false; Tween.to(this, 1, 0.5f).target(PAUSE_MENU_WIDTH).ease(Quart.OUT).start(AnimationManager.getInstance()); Tween.to(this, 2, 0.5f).target(80f).start(AnimationManager.getInstance()); } public void hide() { isHidden = true; Tween.to(this, 1, 0.5f).target(ARROW_WIDTH).ease(Quart.OUT).start(AnimationManager.getInstance()); Tween.to(this, 2, 0.5f).target(0f).start(AnimationManager.getInstance()); } @Override public void onPause() { } public boolean isHidden() { return isHidden; } @Override public int getValues(PauseScreen pScreen, int type, float[] returnValues) { if (type == 1) returnValues[0] = pScreen.currentWidth; if (type == 2) returnValues[0] = pScreen.currentBlackAlpha; return 1; } @Override public void setValues(PauseScreen pScreen, int type, float[] newValues) { if (type == 1) pScreen.currentWidth = newValues[0]; if (type == 2) pScreen.currentBlackAlpha = newValues[0]; } @Override public void onClick(int buttonId) { // All functions here are ASYNCHRONOUS switch (buttonId) { case CONTINUE_BT: hide(); break; case RESTART_BT: Game.getInstance().goTo(GameState.LEVEL_RESTART); break; case QUIT_BT: if (Game.getInstance().getGameMode() == GameMode.TOURNAMENT) TournamentManager.getInstance().resetTournamentData(); Assets.mainMenuMusic.play(); Game.getInstance().goTo(GameState.MAIN_MENU); break; default: break; } } }