From a9ca5f6b1794174ade61850734caae19c8dce85b Mon Sep 17 00:00:00 2001 From: opfromthestart Date: Tue, 3 Aug 2021 19:42:04 -0400 Subject: [PATCH] Everything Excpeti polishing and options -Added LayerTitle class that is the title menu -Edited the launcher and proxy so it only starts the game when it needs to -Made buttons work with MutableString objects --- .../progressia/ProgressiaLauncher.java | 24 +++++++++++-- .../progressia/client/ClientProxy.java | 19 ++++++---- .../client/graphics/gui/BasicButton.java | 11 ++++-- .../client/graphics/gui/Button.java | 4 +++ .../progressia/test/LayerButtonTest.java | 16 +++++++-- .../windcorp/progressia/test/LayerTitle.java | 35 +++++++++++++++++++ .../resources/assets/languages/en-US.lang | 7 +++- .../resources/assets/languages/ru-RU.lang | 7 +++- 8 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 src/main/java/ru/windcorp/progressia/test/LayerTitle.java diff --git a/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java b/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java index c8935fc..2567d9d 100644 --- a/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java +++ b/src/main/java/ru/windcorp/progressia/ProgressiaLauncher.java @@ -18,18 +18,38 @@ package ru.windcorp.progressia; +import ru.windcorp.progressia.client.ClientProxy; +import ru.windcorp.progressia.client.graphics.GUI; +import ru.windcorp.progressia.client.graphics.backend.GraphicsBackend; +import ru.windcorp.progressia.client.graphics.backend.RenderTaskQueue; +import ru.windcorp.progressia.client.graphics.flat.FlatRenderProgram; +import ru.windcorp.progressia.client.graphics.font.GNUUnifontLoader; +import ru.windcorp.progressia.client.graphics.font.Typefaces; +import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; +import ru.windcorp.progressia.client.localization.Localizer; +import ru.windcorp.progressia.common.resource.ResourceManager; import ru.windcorp.progressia.common.util.crash.CrashReports; import ru.windcorp.progressia.common.util.crash.analyzers.OutOfMemoryAnalyzer; import ru.windcorp.progressia.common.util.crash.providers.*; +import ru.windcorp.progressia.test.LayerTitle; public class ProgressiaLauncher { public static String[] arguments; + private static ClientProxy proxy; - public static void launch(String[] args, Proxy proxy) { + public static void launch(String[] args, ClientProxy inProxy) { arguments = args.clone(); setupCrashReports(); - proxy.initialize(); + + inProxy.initialize(); + proxy = inProxy; + GUI.addTopLayer(new LayerTitle("Title")); + } + + public static void play() + { + proxy.setupServer(); } private static void setupCrashReports() { diff --git a/src/main/java/ru/windcorp/progressia/client/ClientProxy.java b/src/main/java/ru/windcorp/progressia/client/ClientProxy.java index 1d154e7..402c5e8 100644 --- a/src/main/java/ru/windcorp/progressia/client/ClientProxy.java +++ b/src/main/java/ru/windcorp/progressia/client/ClientProxy.java @@ -38,7 +38,9 @@ public class ClientProxy implements Proxy { @Override public void initialize() { + GraphicsBackend.initialize(); + try { RenderTaskQueue.waitAndInvoke(FlatRenderProgram::init); RenderTaskQueue.waitAndInvoke(WorldRenderProgram::init); @@ -47,21 +49,26 @@ public class ClientProxy implements Proxy { .setDefault(GNUUnifontLoader.load(ResourceManager.getResource("assets/unifont-13.0.03.hex.gz"))) ); } catch (InterruptedException e) { - throw CrashReports.report(e, "ClientProxy failed"); + throw CrashReports.report(e, "Menu launch failed"); } - + Localizer.getInstance().setLanguage("en-US"); - + TestContent.registerContent(); Atlases.loadAllAtlases(); AudioSystem.initialize(); - - ServerState.startServer(); - ClientState.connectToLocalServer(); TestMusicPlayer.start(); + + //setupServer(); + } + + public void setupServer() + { + ServerState.startServer(); + ClientState.connectToLocalServer(); } } diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/gui/BasicButton.java b/src/main/java/ru/windcorp/progressia/client/graphics/gui/BasicButton.java index cd30152..ddaab7b 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/gui/BasicButton.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/gui/BasicButton.java @@ -42,10 +42,10 @@ public abstract class BasicButton extends Component { private boolean isPressed = false; private final Collection> actions = Collections.synchronizedCollection(new ArrayList<>()); - - public BasicButton(String name, String label, Font labelFont) { + + public BasicButton(String name, Label label) { super(name); - this.label = new Label(name + ".Label", labelFont, label); + this.label = label; setLayout(new LayoutAlign(10)); addChild(this.label); @@ -103,6 +103,11 @@ public abstract class BasicButton extends Component { }); } + + public BasicButton(String name, String label, Font labelFont) + { + this(name, new Label(name + ".Label", labelFont, label)); + } public BasicButton(String name, String label) { this(name, label, new Font()); diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Button.java b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Button.java index bbeb361..c41dedc 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Button.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Button.java @@ -29,6 +29,10 @@ public class Button extends BasicButton { super(name, label, labelFont); } + public Button(String name, Label label) { + super(name, label); + } + public Button(String name, String label) { this(name, label, new Font()); } diff --git a/src/main/java/ru/windcorp/progressia/test/LayerButtonTest.java b/src/main/java/ru/windcorp/progressia/test/LayerButtonTest.java index e505291..65b1a07 100644 --- a/src/main/java/ru/windcorp/progressia/test/LayerButtonTest.java +++ b/src/main/java/ru/windcorp/progressia/test/LayerButtonTest.java @@ -17,7 +17,10 @@ */ package ru.windcorp.progressia.test; +import ru.windcorp.progressia.client.ClientState; import ru.windcorp.progressia.client.graphics.Colors; +import ru.windcorp.progressia.client.graphics.GUI; +import ru.windcorp.progressia.client.graphics.Layer; import ru.windcorp.progressia.client.graphics.font.Font; import ru.windcorp.progressia.client.graphics.gui.Button; import ru.windcorp.progressia.client.graphics.gui.Checkbox; @@ -25,6 +28,7 @@ import ru.windcorp.progressia.client.graphics.gui.Label; import ru.windcorp.progressia.client.graphics.gui.RadioButton; import ru.windcorp.progressia.client.graphics.gui.RadioButtonGroup; import ru.windcorp.progressia.client.graphics.gui.menu.MenuLayer; +import ru.windcorp.progressia.server.ServerState; public class LayerButtonTest extends MenuLayer { @@ -60,8 +64,16 @@ public class LayerButtonTest extends MenuLayer { getCloseAction().run(); })); - getContent().addChild(new Button("Quit", "Quit").addAction(b -> { - System.exit(0); + getContent().addChild(new Button("Menu", "Menu").addAction(b -> { + //System.exit(0); + for (Layer layer : GUI.getLayers()) + { + GUI.removeLayer(layer); + } + GUI.addTopLayer(new LayerTitle("Title")); + //ClientState.getInstance().; + + //ServerState.getInstance().shutdown("Safe Exit"); })); getContent().takeFocus(); diff --git a/src/main/java/ru/windcorp/progressia/test/LayerTitle.java b/src/main/java/ru/windcorp/progressia/test/LayerTitle.java new file mode 100644 index 0000000..8ef01fd --- /dev/null +++ b/src/main/java/ru/windcorp/progressia/test/LayerTitle.java @@ -0,0 +1,35 @@ +package ru.windcorp.progressia.test; + +import ru.windcorp.progressia.ProgressiaLauncher; +import ru.windcorp.progressia.client.graphics.Colors; +import ru.windcorp.progressia.client.graphics.GUI; +import ru.windcorp.progressia.client.graphics.font.Font; +import ru.windcorp.progressia.client.graphics.gui.Button; +import ru.windcorp.progressia.client.graphics.gui.GUILayer; +import ru.windcorp.progressia.client.graphics.gui.Label; +import ru.windcorp.progressia.client.graphics.gui.layout.LayoutVertical; +import ru.windcorp.progressia.client.localization.MutableString; +import ru.windcorp.progressia.client.localization.MutableStringLocalized; + +public class LayerTitle extends GUILayer { + + public LayerTitle(String name) { + super(name, new LayoutVertical(20,10)); + + MutableString title = new MutableStringLocalized("Layer"+name+".Title"); + Font titleFont = new Font().deriveBold().withColor(Colors.BLACK).withAlign(0.5f); + getRoot().addChild(new Label(name+".Title", titleFont, title)); + + Font buttonFont = titleFont; + MutableString playText = new MutableStringLocalized("Layer"+name+".Play"); + getRoot().addChild(new Button(name+".Play", new Label(name+".Play", buttonFont, playText)).addAction(b -> { + GUI.removeLayer(this); + ProgressiaLauncher.play();})); + + MutableString quitText = new MutableStringLocalized("Layer"+name+".Quit"); + getRoot().addChild(new Button(name+"Quit", new Label(name+".Quit", buttonFont, quitText)).addAction(b -> { + System.exit(0); + })); + } + +} diff --git a/src/main/resources/assets/languages/en-US.lang b/src/main/resources/assets/languages/en-US.lang index 4935e77..6bea171 100644 --- a/src/main/resources/assets/languages/en-US.lang +++ b/src/main/resources/assets/languages/en-US.lang @@ -22,4 +22,9 @@ LayerTestGUI.PlacementModeHint = (Blocks %s Tiles: Ctrl + Mouse Wheel) LayerTestGUI.IsFullscreen = Fullscreen: %5s (F11) LayerTestGUI.IsVSync = VSync: %5s (F12) -LayerButtonTest.Title = Button Test \ No newline at end of file +LayerButtonTest.Title = Button Test + +LayerTitle.Title = Progressia +LayerTitle.Play = Play World +LayerTitle.Options = Options +LayerTitle.Quit = Quit \ No newline at end of file diff --git a/src/main/resources/assets/languages/ru-RU.lang b/src/main/resources/assets/languages/ru-RU.lang index cd10faa..efb1757 100644 --- a/src/main/resources/assets/languages/ru-RU.lang +++ b/src/main/resources/assets/languages/ru-RU.lang @@ -22,4 +22,9 @@ LayerTestGUI.PlacementModeHint = (Блок %s плитки: Ctrl + прокру LayerTestGUI.IsFullscreen = Полный экран: %5s (F11) LayerTestGUI.IsVSync = Верт. синхр.: %5s (F12) -LayerButtonTest.Title = Тест Кнопок \ No newline at end of file +LayerButtonTest.Title = Тест Кнопок + +LayerTitle.Title = Прогрессия +LayerTitle.Play = ??????? +LayerTitle.Options = ???????? +LayerTitle.Quit = ???????? \ No newline at end of file