use of de.eskalon.commons.graphics.postproc.PostProcessingPipeline in project ProjektGG by eskalon.
the class GameMapScreen method create.
@Override
protected void create() {
super.create();
camera = new CameraWrapper(67, application.getWidth(), application.getHeight());
camera.setPosition(application.getWidth() / 2, application.getHeight() / 2, 0);
postProcessor = new PostProcessingPipeline(application.getWidth(), application.getHeight(), true);
pausePostProcessingEffect = new ColorBlendEffect(application.getUICamera(), new Color(0.4F, 0.4F, 0.4F, 0.4F));
gameRenderer = new GameRenderer(camera.getCamera(), fragmentShader.getString());
selectionInputController = new MapSelectionInputController(application.getEventBus(), camera.getCamera());
addInputProcessor(selectionInputController);
movementInputController = new MapMovementInputController(camera, application.getSettings());
addInputProcessor(movementInputController);
gameSpeedInputProcessor = new GameSpeedInputProcessor(application.getSettings());
addInputProcessor(gameSpeedInputProcessor);
// CHARACTER DIALOG
BasicDialog characterMenuDialog = new BasicDialog(Lang.get("screen.map.character_config"), skin, "big");
ImageTextButton closeCharacterMenuButton = new ImageTextButton(Lang.get("ui.generic.close"), skin);
closeCharacterMenuButton.addListener(new ButtonClickListener(application.getSoundManager()) {
@Override
protected void onClick() {
characterMenuDialog.hide();
}
});
Table characterMenuTable = new Table();
Table changeableCharacterMenuTable = new Table();
ImageTextButton characterMenuTab1Button = new ImageTextButton(Lang.get("screen.map.character_config.character"), skin);
ImageTextButton characterMenuTab2Button = new ImageTextButton(Lang.get("screen.map.character_config.privileges"), skin);
characterMenuTab1Button.addListener(new ButtonClickListener(application.getSoundManager()) {
@Override
protected void onClick() {
// CHARACTER & FAMILY
changeableCharacterMenuTable.clear();
changeableCharacterMenuTable.add(new Label(Lang.get("screen.map.character_config.name"), skin, "dark")).padBottom(50).row();
changeableCharacterMenuTable.add(new Label(Lang.get("screen.map.character_config.family"), skin, "dark")).row();
changeableCharacterMenuTable.add(new Label(Lang.get("screen.map.character_config.find_so"), skin, "dark"));
}
});
characterMenuTab2Button.addListener(new ButtonClickListener(application.getSoundManager()) {
@Override
protected void onClick() {
// PRIVILEGES
changeableCharacterMenuTable.clear();
changeableCharacterMenuTable.add(new Label(Lang.get("screen.map.character_config.privileges_list"), skin, "dark")).row();
if (application.getClient().getLocalPlayerCharacter().getPosition() != null) {
// TODO Position privileges
// TODO Impeachment
ImageTextButton kickButton = new ImageTextButton(Lang.get("screen.map.character_config.privilege.impeach"), skin);
kickButton.addListener(new ButtonClickListener(application.getSoundManager()) {
@Override
protected void onClick() {
short mayor = application.getClient().getSession().getWorld().getPosition(PositionType.MAYOR).getCurrentHolder();
if (mayor != -1)
application.getClient().getActionHandler().arrangeImpeachmentVote(mayor, (param) -> {
if ((Boolean) param == true) {
SimpleTextDialog.createAndShow(stage, skin, Lang.get("screen.map.character_config.privilege.success"), Lang.get("ui.generic.wip"));
} else {
SimpleTextDialog.createAndShow(stage, skin, Lang.get("ui.generic.error"), Lang.get("ui.generic.rmi_error"));
}
});
}
});
changeableCharacterMenuTable.add(kickButton);
}
}
});
Table characterMenuTabTable = new Table();
characterMenuTabTable.add(characterMenuTab1Button).padRight(5);
characterMenuTabTable.add(characterMenuTab2Button);
characterMenuTable.add(characterMenuTabTable).padRight(30).padBottom(15).center().top().row();
characterMenuTable.add(changeableCharacterMenuTable).padBottom(15).top().height(315).row();
characterMenuTable.add(closeCharacterMenuButton).padRight(30).center().top();
characterMenuDialog.add(characterMenuTable).pad(30);
// PLAYER ICON
iconButton = new ImageButton(skin.getDrawable(PlayerIcon.values()[0].getShieldDrawableName()));
iconButton.addListener(new ButtonClickListener(application.getSoundManager()) {
@Override
protected void onClick() {
characterMenuDialog.show(stage);
characterMenuDialog.setPosition(0, 103);
}
});
Table iconTable = new Table();
iconTable.setBackground(skin.getDrawable("icon_background"));
iconTable.add(iconButton).padLeft(8).padRight(10).padBottom(1);
// INFO STUFF
Table infoTable = new Table();
// Gold
Table goldTable = new Table();
goldTable.setBackground(skin.getDrawable("info_background"));
goldTable.add(new Image(skin.getDrawable("icon_gold_coin"))).left().top().padLeft(4).padBottom(2).padRight(4);
goldTable.add(new Label("19 Gulden", skin, "dark")).padBottom(5).expandX().left().top();
// Name
Table nameTable = new Table();
nameTable.setBackground(skin.getDrawable("info_background"));
nameTable.add(new Label("Freiherr Franz von Woyzeck", skin, "big_dark")).padBottom(2).expandX().left();
// Notifications
Table notificationTable = new Table();
infoTable.add(goldTable).row();
infoTable.add(nameTable).left().row();
infoTable.add(notificationTable).left().padLeft(2).padTop(2).row();
// DATE STUFF
Table dateTimeTable = new Table();
// Date
Table dateTable = new Table();
dateLabel = new Label("", skin, "dark");
dateTable.setBackground(skin.getDrawable("date_background"));
dateTable.add(dateLabel).padLeft(9).padBottom(5).expandX().left();
// Clock
Table clockTable = new Table();
clockTable.setBackground(skin.getDrawable("clock_background"));
dateTimeTable.add(dateTable).row();
dateTimeTable.add(clockTable).right();
// MISC
Table miscTable = new Table();
Table misc2Table = new Table();
// Inventory
ImageButton inventoryButton = new ImageButton(skin, "inventory");
// Book
ImageButton bookButton = new ImageButton(skin, "leaning_book");
// Minimap
Table minimapTable = new Table();
minimapTable.setBackground(skin.getDrawable("minimap_test"));
misc2Table.add(inventoryButton).padRight(2);
misc2Table.add(bookButton).padTop(2).row();
miscTable.add(misc2Table).right().row();
miscTable.add(minimapTable);
mainTable.setSkin(skin);
mainTable.setFillParent(true);
mainTable.add(iconTable).top().left();
mainTable.add(infoTable).top().left();
mainTable.add(dateTimeTable).right().expandX().row();
mainTable.add("").fill();
mainTable.add("").expand().fill();
mainTable.add(miscTable).expandY().bottom().right();
// PAUSE DIALOG
pauseDialog = new BasicDialog("", skin) {
@Override
protected void result(Object object) {
pauseShown = false;
postProcessor.removeEffect(pausePostProcessingEffect);
if (object == (Integer) 1) {
application.getScreenManager().pushScreen("settings", "blendingTransition");
} else {
Log.info("Client", "Verbindung wird getrennt");
final GameClient client = application.getClient();
final GameServer server = application.getServer();
// Set stuff to null to stop updates
application.setClient(null);
application.setServer(null);
ThreadHandler.getInstance().executeRunnable(() -> {
client.disconnect();
if (server != null) {
server.stop();
}
});
DiscordGGHandler.getInstance().setMenuPresence();
application.getScreenManager().pushScreen("main_menu", null);
}
}
};
pauseDialog.button(Lang.get("screen.map.pause.settings"), 1).button(Lang.get("screen.map.pause.disconnect"), 2);
houseSelectionDialog = new BasicDialog("", skin);
houseSelectionDialog.button("Test");
stage.addListener(new InputListener() {
@Override
public boolean keyDown(InputEvent event, int keycode) {
if (keycode == Keys.ESCAPE) {
if (pauseShown) {
pauseDialog.hide();
postProcessor.removeEffect(pausePostProcessingEffect);
} else {
pauseDialog.show(stage);
postProcessor.addEffect(pausePostProcessingEffect);
}
pauseShown = !pauseShown;
return true;
}
return false;
}
});
}
Aggregations