package game.gui; import game.Game; import game.Server; import game.gui.element.Bar; import game.gui.element.Label; public class GuiLoading extends Gui { public static interface Callback { void poll(Game gm, GuiLoading gui); } private final String message; private final Callback callback; private Label headerLabel; private Label taskLabel; private Bar progressBar1; private Bar progressBar2; public static GuiLoading makeLoadTask(final Server server) { return new GuiLoading("Lade Welt ...", new Callback() { public void poll(Game gm, GuiLoading gui) { if(server.isStarted()) { gm.displayGuiScreen(null); return; } } }); } public static GuiLoading makeSaveTask(final Server server) { return new GuiLoading("Speichere Welt ...", new Callback() { public void poll(Game gm, GuiLoading gui) { if(server.isStopped()) { gm.displayGuiScreen(GuiMenu.INSTANCE); return; } } }); } public GuiLoading(String message, Callback callback) { this.message = message; this.callback = callback; } public void init(int width, int height) { this.taskLabel = this.add(new Label(0, 40, 500, 20, "")); this.progressBar1 = this.add(new Bar(0, 80, 500, 20)); this.progressBar2 = this.add(new Bar(0, 120, 500, 20)); this.shift(); this.headerLabel = this.add(new Label(0, 40, width, 20, this.message)); this.progressBar1.visible = false; this.progressBar2.visible = false; } public String getTitle() { return this.message; } public void setTask(String task) { this.taskLabel.setText(task); } public void setBar(String desc) { this.progressBar1.visible = true; this.progressBar1.setDescription(desc); } public void setBar(String desc, String unit, int total) { this.progressBar1.visible = true; this.progressBar1.setDescription(desc, unit, total); } public void setBar(String desc, int total) { this.progressBar1.visible = true; this.progressBar1.setDescription(desc, total); } public void setProgress(float progress) { this.progressBar1.setProgress(progress); } public void resetBar() { this.progressBar1.resetProgress(); this.progressBar1.visible = false; } public void setSub(String desc) { this.progressBar2.visible = true; this.progressBar2.setDescription(desc); } public void setSub(String desc, String unit, int total) { this.progressBar2.visible = true; this.progressBar2.setDescription(desc, unit, total); } public void setSub(String desc, int total) { this.progressBar2.visible = true; this.progressBar2.setDescription(desc, total); } public void setSubProgress(float progress) { this.progressBar2.setProgress(progress); } public void resetSub() { this.progressBar2.resetProgress(); this.progressBar2.visible = false; } public void updateScreen() { if(this.callback != null) this.callback.poll(this.gm, this); } }