package gr.sullenart.games.fruitcatcher.screens;
import gr.sullenart.games.fruitcatcher.FruitCatcherGame;
import gr.sullenart.games.fruitcatcher.images.ImageProvider;
import gr.sullenart.games.fruitcatcher.state.State;
import gr.sullenart.games.fruitcatcher.view.Button;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector3;
public class MenuScreen implements Screen, InputProcessor {
//private String TAG = MenuScreen.class.getName();
private OrthographicCamera camera;
private SpriteBatch batch;
private FruitCatcherGame game;
private ImageProvider imageProvider;
private Texture backgroundImage;
private Button [] buttons;
private Button helpButton;
private TextureRegion logo;
private int logoX;
private int logoY;
private Button [] soundButtons;
private boolean soundOn;
//private long soundButtonTimePressed = 0;
public MenuScreen(FruitCatcherGame game) {
super();
this.game = game;
soundOn = State.isSoundOn();
game.getSoundManager().setSoundOn(soundOn);
}
@Override
public void show() {
imageProvider = game.getImageProvider();
imageProvider.load();
backgroundImage = imageProvider.getBackgroundSpring();
TextureRegion buttonBg = imageProvider.getButton();
buttons = new Button [3];
buttons[0] = new Button(buttonBg, imageProvider.getStart());
buttons[1] = new Button(buttonBg, imageProvider.getKids());
buttons[2] = new Button(buttonBg, imageProvider.getScores());
helpButton = new Button(imageProvider.getHelp());
soundButtons = new Button[2];
soundButtons[0] = new Button(imageProvider.getSoundImage(false));
soundButtons[1] = new Button(imageProvider.getSoundImage(true));
camera = new OrthographicCamera();
camera.setToOrtho(false, imageProvider.getScreenWidth(), imageProvider.getScreenHeight());
batch = new SpriteBatch();
logo = imageProvider.getLogo();
logoX = (imageProvider.getScreenWidth() - logo.getRegionWidth())/2;
logoY = (imageProvider.getScreenHeight() - logo.getRegionHeight() - 10)-50;
int buttonMargin = 15;
int buttonsHeight = 3*buttonMargin;
for(int i=0; i<buttons.length; i++) {
buttonsHeight += buttons[i].getRegionHeight();
}
for(int i=buttons.length-1;i>=0;i--) {
int x, y;
x = (imageProvider.getScreenWidth() - buttons[i].getRegionWidth())/2;
if (i == buttons.length - 1) {
y = ((imageProvider.getScreenHeight() - buttonsHeight) / 2) - 10;
}
else {
y = ((int) buttons[i+1].getPosY()) +
buttons[i+1].getRegionHeight() + buttonMargin;
}
buttons[i].setPos(x, y);
}
float x = imageProvider.getScreenWidth() - helpButton.getRegionWidth() - 10;
float y = 10;
helpButton.setPos(x, y);
soundButtons[0].setPos(10, 10);
soundButtons[1].setPos(10, 10);
Gdx.input.setInputProcessor(this);
}
@Override
public void render(float delta) {
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(backgroundImage, 0, 0);
batch.draw(logo, logoX, logoY);
for(int i=0;i<buttons.length;i++) {
buttons[i].draw(batch);
}
helpButton.draw(batch);
if (!soundOn) {
soundButtons[0].draw(batch);
}
else {
soundButtons[1].draw(batch);
}
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void hide() {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
if (batch != null) {
batch.dispose();
}
}
@Override
public boolean keyDown(int keycode) {
if(keycode == Keys.BACK){
Gdx.app.exit();
return true;
}
return false;
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean keyTyped(char character) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
Vector3 touchPos = new Vector3();
touchPos.set(screenX, screenY, 0);
camera.unproject(touchPos);
for(int i=0;i<buttons.length;i++) {
if (buttons[i].isPressed(touchPos)) {
if (i == 0) {
game.gotoLevelScreen();
}
else if (i == 1) {
game.startGameKidsMode();
game.gotoGameScreen(null);
}
else if (i == 2) {
game.showHighscores();
}
break;
}
}
if (helpButton.isPressed(touchPos)) {
game.showHelp();
}
if (soundOn && soundButtons[0].isPressed(touchPos)) {
soundOn = false;
State.setSoundOn(soundOn);
game.getSoundManager().setSoundOn(soundOn);
}
else if (!soundOn && soundButtons[1].isPressed(touchPos)) {
soundOn = true;
State.setSoundOn(soundOn);
game.getSoundManager().setSoundOn(soundOn);
}
return true;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return true;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}