-
Notifications
You must be signed in to change notification settings - Fork 0
XML GUI Scene
Radomiej edited this page Oct 6, 2016
·
1 revision
XML GUI is extansion for Javity allow you to loading UI stage from external xml file.
This is example game object which load xml view and add custom controllers:
public class SceneLoginBulider implements SceneBulider {
@Override
public void buildScene(Scene scene) {
JGameObject canvas = scene.instantiateGameObject(new Vector2(0, 0));
JXmlUi jCanvas = new JXmlUi("resources/views/login.xml", "internal/ui/uiskin.json");
canvas.addComponent(jCanvas);
canvas.addComponent(new LoginComponent());
canvas.addComponent(new BackComponent());
}
}public class LoginComponent extends JComponent {
private Button loginButton;
private TextField login, email, password;
private WWW loginWWW;
public JXmlUi jCanvas;
@Override
public void start() {
jCanvas = getGameObject().getComponent(JXmlUi.class);
loginButton = jCanvas.getActor("loginButton");
loginButton.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
login();
}
});
login = jCanvas.getActor("loginInput");
email = jCanvas.getActor("emailInput");
password = jCanvas.getActor("passwordInput");
loginWWW = new WWW("http://localhost:8080/rest/v1/users/login", new WWWResponseListener() {
@Override
public void httpResponseListener(WWW wwwResponse) {
LoginStatus loginStatus = wwwResponse.getJsonObjectResponse(LoginStatus.class);
Gdx.app.log(LoginComponent.class.getSimpleName(), "Login complete: " + loginStatus);
if(loginStatus.getLoginUser() != null) {
JSceneManager.loadScene(new SceneMapBulider());
}else{
loginButton.setDisabled(false);
}
}
});
}
@Override
public void update() {
}
public void login(){
loginButton.setDisabled(true);
loginWWW.GET("login=" + login.getText() + "&password=" + password.getText());
}
}Like you can see, LoginController wait for click loginButton and send to server via HTTP GET, login request and procces response. Look javity-net for more info about HTTP connection.
public class BackComponent extends JComponent {
public JXmlUi jCanvas;
private Button backButton;
@Override
public void start() {
if (jCanvas == null) jCanvas = getGameObject().getComponent(JXmlUi.class);
backButton = jCanvas.getActor("backButton");
backButton.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
back();
}
});
}
@Override
public void update() {
}
public void back() {
JSceneManager.loadScene(new SceneMainMenuBulider());
}
}BackComponent add listener for back button on loading view, and switch scene to MainMenu when button was pressed.