package com.arretadogames.pilot.screens;
import aurelienribon.tweenengine.TweenAccessor;
import com.arretadogames.pilot.MainActivity;
import com.arretadogames.pilot.R;
import com.arretadogames.pilot.accounts.AccountManager;
import com.arretadogames.pilot.android.KeyboardManager;
import com.arretadogames.pilot.game.Game;
import com.arretadogames.pilot.game.GameMode;
import com.arretadogames.pilot.game.GameState;
import com.arretadogames.pilot.googlesync.SyncManager;
import com.arretadogames.pilot.loading.FontLoader;
import com.arretadogames.pilot.loading.FontLoader.FontTypeFace;
import com.arretadogames.pilot.render.opengl.GLCanvas;
import com.arretadogames.pilot.ui.GameButtonListener;
import com.arretadogames.pilot.ui.ImageButton;
import com.arretadogames.pilot.ui.Text;
import com.arretadogames.pilot.ui.ZoomImageButton;
import com.arretadogames.pilot.util.Assets;
public class MainMenuScreen extends GameScreen implements GameButtonListener, TweenAccessor<MainMenuScreen> {
private final static int ZOOM_PROPERTY = 1;
private final static int BLACK_ALPHA_PROPERTY = 2;
private static final int QUICK_RACE_BUTTON = 1;
private static final int SETTINGS_BUTTON = 2;
private static final int G_SIGN_IN_BUTTON = 3;
private static final int STORE_BUTTON = 4;
private static final int TOURNAMENT_BUTTON = 5;
private ImageButton quickRaceBt;
private ImageButton settingsBt;
private ImageButton gPlusBt;
private ImageButton tournamentBt;
private ImageButton storeBt;
private Text inputLabel;
// Main Menu Screens
private SettingsScreen settingsScreen;
private float currentBlackAlpha;
private float currentZoom;
private State currentState;
public MainMenuScreen() {
quickRaceBt = new ZoomImageButton(QUICK_RACE_BUTTON, 340, 240,
getDimension(R.dimen.main_menu_play_button_size)+30,
getDimension(R.dimen.main_menu_play_button_size)+30,
this,
R.drawable.quickrace_button_selected,
R.drawable.quickrace_button_unselected);
settingsBt = new ZoomImageButton(SETTINGS_BUTTON, 20, 20,
getDimension(R.dimen.main_menu_button_size),
getDimension(R.dimen.main_menu_button_size),
this,
R.drawable.bt_settings_selected,
R.drawable.bt_settings_unselected);
gPlusBt = new ImageButton(G_SIGN_IN_BUTTON,
700, 20,
getDimension(R.dimen.main_menu_button_size),
getDimension(R.dimen.main_menu_button_size),
this,
R.drawable.bt_gplus_selected,
R.drawable.bt_gplus_unselected);
tournamentBt = new ImageButton(TOURNAMENT_BUTTON, 40, 210,
getDimension(R.dimen.main_menu_play_button_size),
getDimension(R.dimen.main_menu_play_button_size),
this,
R.drawable.bt_tournament_selected,
R.drawable.bt_tournament_unselected);
storeBt = new ZoomImageButton(STORE_BUTTON,
550, 240,
getDimension(R.dimen.main_menu_play_button_size)+30,
getDimension(R.dimen.main_menu_play_button_size)+30,
this,
R.drawable.store_button_selected,
R.drawable.store_button_unselected);
tournamentBt = new ZoomImageButton(TOURNAMENT_BUTTON,
130, 240,
getDimension(R.dimen.main_menu_play_button_size)+30,
getDimension(R.dimen.main_menu_play_button_size)+30,
this,
R.drawable.tournament_button_selected,
R.drawable.tournament_button_unselected);
inputLabel = new Text(400, 50, "",
FontLoader.getInstance().getFont(FontTypeFace.TRANSMETALS_STROKED), 1, true);
currentBlackAlpha = 0;
currentZoom = 1f;
currentState = State.MAIN;
settingsScreen = new SettingsScreen(this);
}
@Override
public void render(GLCanvas canvas, float timeElapsed) {
canvas.saveState();
canvas.setClearColor(255, 0, 0, 0);
// canvas.scale(currentZoom, currentZoom, GameSettings.TARGET_WIDTH / 2, GameSettings.TARGET_HEIGHT / 2);
canvas.drawBitmap(R.drawable.menu_background, 0, 0,
getDimension(R.dimen.screen_width), getDimension(R.dimen.screen_height),
0, getDimension(R.dimen.main_menu_bg_extra_height));
if (currentState == State.MAIN) {
settingsBt.render(canvas, timeElapsed);
quickRaceBt.render(canvas, timeElapsed);
gPlusBt.render(canvas, timeElapsed);
storeBt.render(canvas, timeElapsed);
tournamentBt.render(canvas, timeElapsed);
if (KeyboardManager.isShowing()) {
inputLabel.render(canvas, timeElapsed);
}
} else if (currentState == State.SETTINGS) {
settingsScreen.render(canvas, timeElapsed);
}
canvas.setClearColor(currentBlackAlpha, 0, 0, 0);
canvas.restoreState();
}
@Override
public void step(float timeElapsed) {
if (KeyboardManager.isShowing()) {
inputLabel.setText(KeyboardManager.getText());
}
}
@Override
public void input(InputEventHandler event) {
if (currentState == State.MAIN) {
quickRaceBt.input(event);
settingsBt.input(event);
gPlusBt.input(event);
storeBt.input(event);
tournamentBt.input(event);
} else if (currentState == State.SETTINGS) {
settingsScreen.input(event);
}
}
@Override
public void onPause() {
//
}
@Override
public void onClick(int buttonId) {
switch (buttonId) {
case QUICK_RACE_BUTTON:
Game.getInstance().setGameMode(GameMode.QUICKRACE);
startGame();
Assets.mainMenuMusic.stop();
break;
case SETTINGS_BUTTON:
//currentState = State.SETTINGS;
break;
case G_SIGN_IN_BUTTON:
if (SyncManager.get().isSignedIn()) {
SyncManager.get().revokeAccess();
AccountManager.get().clearArrount1();
} else {
SyncManager.get().userClickedSignIn();
}
Assets.mainMenuMusic.stop();
break;
case STORE_BUTTON:
startStore();
Assets.mainMenuMusic.stop();
break;
case TOURNAMENT_BUTTON:
Game.getInstance().setGameMode(GameMode.TOURNAMENT);
Assets.mainMenuMusic.stop();
startTournamentSelection();
break;
}
}
private void startGame() {
Game.getInstance().goTo(GameState.LEVEL_SELECTION);
currentBlackAlpha = 0;
currentZoom = 1;
}
private void startStore() {
Game.getInstance().goTo(GameState.GAME_STORE);
}
private void startTournamentSelection() {
Game.getInstance().goTo(GameState.TOURNAMENT_SELECTION);
}
@Override
public int getValues(MainMenuScreen target, int tweenType, float[] returnValues) {
if (tweenType == ZOOM_PROPERTY) {
returnValues[0] = target.currentZoom;
} else if (tweenType == BLACK_ALPHA_PROPERTY) {
returnValues[0] = target.currentBlackAlpha;
}
return 1;
}
@Override
public void setValues(MainMenuScreen target, int tweenType, float[] newValues) {
if (tweenType == ZOOM_PROPERTY) {
target.currentZoom = newValues[0];
} else if (tweenType == BLACK_ALPHA_PROPERTY) {
target.currentBlackAlpha = newValues[0];
}
}
public void setState(State newState) {
currentState = newState;
}
public enum State {
MAIN, SETTINGS;
}
@Override
public void onBackPressed() {
MainActivity.getActivity().showExitDialog();
}
}