diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java index 8ae659df..220d0c18 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java @@ -110,6 +110,8 @@ public void playState(MdgaState state) { playGame = false; asset = MusicAsset.CEREMONY; break; + case NONE: + throw new RuntimeException("no music for state NONE"); } assert (null != asset) : "music sceduling went wrong"; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardHandler.java similarity index 98% rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java rename to Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardHandler.java index e652faf7..0496adc7 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardHandler.java @@ -14,7 +14,7 @@ import java.util.*; -public class BoardView { +public class BoardHandler { private static final float GRID_SIZE = 1.72f; private static final float GRID_ELEVATION = 0.0f; private static final String MAP_NAME = "map.mdga"; @@ -29,14 +29,16 @@ public class BoardView { private Map> playerMap; - public BoardView(MdgaApp app) { + public BoardHandler(MdgaApp app) { assert (app != null) : "app is null"; this.app = app; this.pieces = new HashMap<>(); this.playerMap = new HashMap<>(); + } + public void init() { initMap(); initCamera(); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/CeremonyView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/CeremonyView.java index c1d0ccc6..880e7475 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/CeremonyView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/CeremonyView.java @@ -87,7 +87,7 @@ private void setupStatistics() { container.addChild(new Label("Spieler 3: Punkte 60")); Button exitButton = container.addChild(new Button("Verlassen")); - exitButton.addClickCommands(source -> app.stop()); + exitButton.addClickCommands(source -> app.enter(MdgaState.MAIN)); statisticsNode.attachChild(container); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java index 23d7f6f3..52ebb26e 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java @@ -8,27 +8,6 @@ import pp.dialog.SimpleDialog; import pp.mdga.client.MdgaApp; -public class StartDialog extends SimpleDialog { - StartDialog(MdgaApp app) { - super(app.getDialogView().getDialogManager()); +public class StartDialog { - Checkbox serverHost = new Checkbox("sdgfsdg"); - serverHost.setChecked(false); - //serverHost.addClickCommands(s -> toggleServerHost()); - - final Container input = new Container(new SpringGridLayout()); - input.addChild(new Label("sdgsgsdg")); - //input.addChild(host, 1); - input.addChild(new Label("sdfdsgsdgsdg")); - //input.addChild(port, 1); - input.addChild(serverHost); - - DialogBuilder.simple(app.getDialogView().getDialogManager()) - .setTitle("server.dialog") - .setOkButton("button.connect") - .setNoButton("button.cancel") - .setOkClose(false) - .setNoClose(false) - .build(this); - } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/GameView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/GameView.java index 08513d1b..24d01ee8 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/GameView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/GameView.java @@ -1,4 +1,31 @@ package pp.mdga.client; -public class GameView { +import com.jme3.material.Material; +import com.jme3.scene.Geometry; +import com.jme3.scene.Node; +import com.jme3.scene.shape.Quad; +import com.simsilica.lemur.Button; +import com.simsilica.lemur.Container; +import com.simsilica.lemur.Label; +import pp.mdga.client.Board.BoardHandler; + +public class GameView extends MdgaView { + private BoardHandler boardHandler; + + public GameView(MdgaApp app) { + super(app); + + boardHandler = new BoardHandler(app); + } + + @Override + public void enter() { + boardHandler.init(); + } + + @Override + public void leave() { + rootNode.detachAllChildren(); + app.getGuiNode().detachChild(rootNode); + } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/MainMenuView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/MainMenuView.java index 036c4c08..267a90be 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/MainMenuView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/MainMenuView.java @@ -35,7 +35,7 @@ public void enter() { hostGameButton.addClickCommands(source -> System.out.println("Hosting game...")); Button joinGameButton = menuContainer.addChild(new Button("Join Game")); - joinGameButton.addClickCommands(source -> System.out.println("Joining game...")); + joinGameButton.addClickCommands(source -> app.enter(MdgaState.LOBBY)); Button exitButton = menuContainer.addChild(new Button("Exit")); exitButton.addClickCommands(source -> app.stop()); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java index c2af3a2d..dace62af 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java @@ -2,24 +2,23 @@ import com.jme3.app.SimpleApplication; import com.jme3.system.NanoTimer; -import com.simsilica.lemur.Button; import com.simsilica.lemur.GuiGlobals; import pp.mdga.client.Acoustic.AcousticHandler; import pp.mdga.client.Acoustic.MdgaSound; import pp.mdga.client.Animation.AnimationHandler; import com.jme3.system.AppSettings; -import pp.mdga.client.Board.BoardView; +import pp.mdga.client.Board.BoardHandler; import pp.mdga.client.Dialog.DialogView; -import pp.mdga.client.Dialog.SoundDialog; public class MdgaApp extends SimpleApplication { private AnimationHandler animationHandler; private AcousticHandler acousticHandler; - private BoardView boardView; - private DialogView dialogView; - NanoTimer test = new NanoTimer(); - private MdgaState testState = MdgaState.MAIN; + MdgaView view = null; + private MdgaState state = MdgaState.MAIN; + + //TODO + private NanoTimer test = new NanoTimer(); public static void main(String[] args) { AppSettings settings = new AppSettings(true); @@ -38,53 +37,59 @@ public static void main(String[] args) { public void simpleInitApp() { animationHandler = new AnimationHandler(this); acousticHandler = new AcousticHandler(this); - boardView = new BoardView(this); - dialogView = new DialogView(this); - - //dialogView.mainMenu(); - //acousticHandler.playState(MdgaState.GAME); - - acousticHandler.playSound(MdgaSound.LOST); - acousticHandler.playSound(MdgaSound.VICTORY); - - //SoundDialog settingsDialog = new SoundDialog(this); - //settingsDialog.show(); - - // Interact with the dialog - //Button closeButton = settingsDialog.getButton("close"); - //closeButton.addClickCommands(source -> System.out.println("Closing dialog...")); GuiGlobals.initialize(this); - MainMenuView mainMenuView = new MainMenuView(this); - LobbyView lobbyView = new LobbyView(this); - //mainMenuView.enter(); - //lobbyView.enter(); - CeremonyView ceremonyView = new CeremonyView(this); - ceremonyView.enter(); + enter(state); } @Override public void simpleUpdate(float tpf) { acousticHandler.update(); - //test.reset(); - if (test.getTimeInSeconds() > 10) { - if (testState == MdgaState.MAIN) { - testState = MdgaState.LOBBY; - acousticHandler.playState(MdgaState.MAIN); - } - else if (testState == MdgaState.LOBBY) { - testState = MdgaState.CEREMONY; - acousticHandler.playState(MdgaState.LOBBY); - } - else { - testState = MdgaState.MAIN; - acousticHandler.playState(MdgaState.CEREMONY); - } - - test.reset(); + if(test.getTimeInSeconds() < 10) { + return; } + + switch (state) { + case LOBBY: + enter(MdgaState.GAME); + break; + case GAME: + enter(MdgaState.CEREMONY); + break; + } + } + + public void enter(MdgaState state) { + if(null != view) { + view.leave(); + } + + this.state = state; + + switch (state) { + case MAIN: + view = new MainMenuView(this); + break; + case LOBBY: + view = new LobbyView(this); + test.reset(); + break; + case GAME: + view = new GameView(this); + test.reset(); + break; + case CEREMONY: + view = new CeremonyView(this); + break; + case NONE: + throw new RuntimeException("cant enter state NONE"); + } + + acousticHandler.playState(state); + + view.enter(); } public AnimationHandler getAnimationHandler() { @@ -94,12 +99,4 @@ public AnimationHandler getAnimationHandler() { public AcousticHandler getAcousticHandler() { return acousticHandler; } - - public BoardView getBoardView() { - return boardView; - } - - public DialogView getDialogView() { - return dialogView; - } }