package com.fdangelo.circleworld.gui.core;
import java.util.ArrayList;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
public abstract class Screen {
static private Skin defaultSkin;
private final Stage stage;
private final ScreenTable defaultScreenTable;
private ArrayList<Screen> subscreens = new ArrayList<Screen>();
public Screen() {
stage = new Stage();
defaultScreenTable = new ScreenTable();
stage.addActor(defaultScreenTable);
initScreen();
}
protected void addSubscreen(Screen screen) {
subscreens.add(screen);
stage.addActor(screen.defaultScreenTable);
}
public final Stage getStage() {
return stage;
}
public final ScreenTable getScreenTable() {
return defaultScreenTable;
}
public final void update(final float deltaTime) {
stage.act(deltaTime);
onUpdate(deltaTime);
for (int i = 0; i < subscreens.size(); i++)
subscreens.get(i).update(deltaTime);
}
public final void draw() {
stage.draw();
}
public final void resize(int width, int height) {
stage.setViewport(width, height);
}
public final void setActive() {
Gdx.input.setInputProcessor(stage);
stage.setViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
public void setVisible(boolean visible) {
defaultScreenTable.setVisible(visible);
}
static public Skin getDefaultSkin() {
if (defaultSkin == null) {
defaultSkin = new Skin(Gdx.files.internal("data/uiskin.json"));
}
return defaultSkin;
}
protected abstract void initScreen();
protected void onUpdate(final float deltaTime) {
}
}