#16 added basic error screen
parent
4f6d5e37d0
commit
e3b99bc2fc
@ -0,0 +1,68 @@
|
||||
package eu.jonahbauer.wizard.client.libgdx.screens;
|
||||
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
||||
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
||||
import eu.jonahbauer.wizard.client.libgdx.state.Session;
|
||||
import eu.jonahbauer.wizard.common.messages.server.NackMessage;
|
||||
|
||||
public class ErrorScreen extends MenuScreen {
|
||||
private final String labelText;
|
||||
private TextButton buttonBack;
|
||||
private final MenuScreen prevScreen;
|
||||
|
||||
private final ChangeListener listener = new ChangeListener() {
|
||||
@Override
|
||||
public void changed(ChangeEvent event, Actor actor) {
|
||||
if (actor == buttonBack) {
|
||||
game.setScreen(prevScreen);
|
||||
sfxClick();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public ErrorScreen(WizardGame game, MenuScreen prevScreen, NackMessage message) {
|
||||
super(game);
|
||||
this.prevScreen = prevScreen;
|
||||
labelText = switch (message.getCode()) {
|
||||
case NackMessage.GAME_ALREADY_STARTED -> messages.get("menu.error.game_already_started");
|
||||
case NackMessage.SESSION_FULL -> messages.get("menu.error.session_full");
|
||||
case NackMessage.SESSION_NOT_FOUND -> messages.get("menu.error.session_not_found");
|
||||
case NackMessage.PLAYER_NAME_TAKEN -> messages.get("menu.error.player_name_taken");
|
||||
case NackMessage.PLAYER_NAME_NOT_ALLOWED -> messages.get("menu.error.player_name_not_allowed");
|
||||
case NackMessage.SESSION_NAME_TAKEN -> messages.get("menu.error.session_name_taken");
|
||||
case NackMessage.SESSION_NAME_NOT_ALLOWED -> messages.get("menu.error.session_name_not_allowed");
|
||||
case NackMessage.MALFORMED_MESSAGE -> messages.get("menu.error.malformed_message");
|
||||
case NackMessage.UNEXPECTED_MESSAGE -> messages.get("menu.error.unexpected_message");
|
||||
case NackMessage.ILLEGAL_ARGUMENT -> messages.get("menu.error.illegal_argument");
|
||||
case NackMessage.NOT_FOUND -> messages.get("menu.error.not_found");
|
||||
case NackMessage.ALREADY_CONNECTED -> messages.get("menu.error.already_connected");
|
||||
case NackMessage.GAME_NOT_YET_STARTED -> messages.get("menu.error.game_not_yet_started");
|
||||
case NackMessage.PLAYER_NOT_FOUND -> messages.get("menu.error.player_not_found");
|
||||
case NackMessage.ILLEGAL_STATE -> messages.get("menu.error.illegal_state");
|
||||
case NackMessage.BAD_REQUEST -> messages.get("menu.error.bad_request");
|
||||
default -> "Something went terribly wrong :(";
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
super.show();
|
||||
|
||||
var buttonBack = new TextButton(messages.get("menu.error.back"), skin);
|
||||
var label = new Label(labelText, skin);
|
||||
|
||||
var content = new VerticalGroup();
|
||||
content.setPosition(WizardGame.WIDTH * 0.5f, WizardGame.HEIGHT*0.5f);
|
||||
content.addActor(label);
|
||||
content.addActor(buttonBack);
|
||||
|
||||
stage.addActor(content);
|
||||
stage.addCaptureListener(new KeyboardFocusManager(buttonBack));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue