package com.tacoid.pweek.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.tacoid.pweek.I18nManager;
import com.tacoid.pweek.PreferenceManager;
import com.tacoid.pweek.PreferenceManager.Preference;
import com.tacoid.pweek.Pweek;
import com.tacoid.pweek.Pweek.ScreenOrientation;
import com.tacoid.pweek.actors.BackgroundActor;
import com.tacoid.pweek.actors.SignInButton;
public class GameServicesScreen implements Screen {
private class NoThxActor extends Actor {
private BitmapFont font;
private ShapeRenderer shapeRenderer;
private String str;
private float height;
private float width;
public NoThxActor() {
super();
font = Pweek.getInstance().manager.get("images/font64.fnt", BitmapFont.class);
str = I18nManager.getInstance().getString("nothanks");
font.setScale(0.5f);
font.setColor(0.8f, 0.8f, 0.8f, 1f);
height = font.getBounds(str).height;
width = font.getBounds(str).width;
shapeRenderer = new ShapeRenderer();
this.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
PreferenceManager.getInstance().setPreference(Preference.SIGNIN_GP, String.valueOf(false));
Pweek.getInstance().setScreen(MainMenuScreen.getInstance());
}
});
this.setPosition(VIRTUAL_WIDTH - 350, 100 - height - 20);
this.setWidth(width + 100);
this.setHeight(height + 100);
}
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
font.setScale(0.5f);
font.setColor(0.3f, 0.3f, 0.3f, 1f);
batch.end();
shapeRenderer.setProjectionMatrix(stage.getCamera().combined);
shapeRenderer.begin(ShapeType.FilledRectangle);
shapeRenderer.setColor(0.9f, 0.9f, 0.9f, 1f);
shapeRenderer.filledRect(VIRTUAL_WIDTH - 350, 100 - height - 20, width + 100, height + 40);
shapeRenderer.end();
shapeRenderer.begin(ShapeType.Rectangle);
shapeRenderer.setColor(0.3f, 0.3f, 0.3f, 1f);
shapeRenderer.rect(VIRTUAL_WIDTH - 350, 100 - height - 20, width + 100, height + 40);
shapeRenderer.end();
batch.begin();
font.draw(batch, str, VIRTUAL_WIDTH - 300, 100);
}
}
private class TextSignIn extends Actor {
private BitmapFont font;
public TextSignIn() {
font = Pweek.getInstance().manager.get("images/font64.fnt", BitmapFont.class);
}
@Override
public void draw(SpriteBatch batch, float alpha) {
int origX = VIRTUAL_WIDTH / 2;
int origY = 600;
String str = I18nManager.getInstance().getString("signin");
font.setScale(1f);
font.setColor(1f, 1f, 1f, 1f);
float x = origX - font.getBounds(str).width / 2;
font.draw(batch, str, x, origY + 2);
font.draw(batch, str, x, origY - 2);
font.draw(batch, str, x + 2, origY);
font.draw(batch, str, x - 2, origY);
font.setScale(1f);
font.setColor(0f, 0f, 0f, 1f);
font.draw(batch, str, x, origY);
String text = I18nManager.getInstance().getString("signinfull");
font.setScale(0.5f);
font.setColor(0f, 0f, 0f, 1f);
font.drawWrapped(batch, text, VIRTUAL_WIDTH - 750, origY - 200, 700);
}
}
private static final int VIRTUAL_WIDTH = 1280;
private static final int VIRTUAL_HEIGHT = 768;
private static GameServicesScreen instance;
private Stage stage;
private GameServicesScreen() {
stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(),
false);
stage.addActor(new BackgroundActor(ScreenOrientation.LANDSCAPE));
stage.addActor(new TextSignIn());
stage.addActor(new NoThxActor());
SignInButton signInButton = SignInButton.create(Pweek.getInstance().getGameService(), Pweek.getInstance().atlasGoogle, true, false);
signInButton.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
super.clicked(event, x, y);
Pweek.getInstance().setScreen(MainMenuScreen.getInstance());
}
});
signInButton.setPosition(VIRTUAL_WIDTH - 800 - signInButton.getWidth(), 305);
stage.addActor(signInButton);
}
public static GameServicesScreen getInstance() {
if(instance == null) {
instance = new GameServicesScreen();
}
return instance;
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render(float arg0) {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.draw();
stage.act(Gdx.graphics.getDeltaTime());
}
@Override
public void resize(int arg0, int arg1) {
stage.setViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, false);
stage.getCamera().position.set(VIRTUAL_WIDTH / 2, VIRTUAL_HEIGHT / 2, 0);
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void show() {
if (PreferenceManager.getInstance().isPreferenceDefined(Preference.SIGNIN_GP)) {
if (Boolean.valueOf(PreferenceManager.getInstance().getPreference(Preference.SIGNIN_GP))) {
Pweek.getInstance().getGameService().login();
}
Pweek.getInstance().setScreen(MainMenuScreen.getInstance());
} else {
Gdx.input.setInputProcessor(stage);
}
}
}