From 330e7abba846d882169fdd30984bac4229512479 Mon Sep 17 00:00:00 2001
From: Rasmus <rburwitz@uni-bremen.de>
Date: Sun, 19 Jul 2020 14:46:15 +0200
Subject: [PATCH] VideoVController added + AudioController fix

---
 .../ClientControllerCommunicator.java         |  3 +-
 .../Controller/AudioController.java           | 10 +---
 .../Controller/VideoController.java           | 57 +++++++++++++++++++
 .../galaxytruckerreloaded/Main.java           | 21 +++----
 .../Video/FullscreenEnableButton.java         |  3 +-
 .../OptionButtons/Video/WindowedButton.java   |  3 +-
 .../View/Screen/GamePlay.java                 |  3 -
 .../View/UI/Options/AudioUI.java              |  1 +
 .../View/UI/Options/VideoUI.java              |  2 +
 9 files changed, 78 insertions(+), 25 deletions(-)
 create mode 100644 core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/VideoController.java

diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
index ded70088..4748ce94 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
@@ -87,7 +87,8 @@ public class ClientControllerCommunicator {
         HangerController.getInstance();
         TraderController.getInstance(singleton);
         TravelController.getInstance(singleton);
-        AudioController.getInstance(singleton);
+        AudioController.getInstance();
+        VideoController.getInstance(singleton);
         // TODO CREATE ALL CONTROLLERS HERE, all controllers should be singletons
         return singleton;
     }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/AudioController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/AudioController.java
index 22507fbb..196c363b 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/AudioController.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/AudioController.java
@@ -20,18 +20,15 @@ public class AudioController extends Controller /**implements Audio*/ {
 
     private static AudioController singleton;
 
-    @NonNull
-    private ClientControllerCommunicator clientControllerCommunicator;
-
 
     /**
      * return the instance of this singleton
-     * @param communicator the communicator
+     * @
      * @return the singleton instance
      */
-    public static AudioController getInstance(ClientControllerCommunicator communicator) {
+    public static AudioController getInstance() {
         if(singleton == null) {
-            singleton = new AudioController(communicator);
+            singleton = new AudioController();
         }
         return singleton;
     }
@@ -40,7 +37,6 @@ public class AudioController extends Controller /**implements Audio*/ {
         if(music!= null) {
             music = Gdx.audio.newMusic(file);
             music.setLooping(true);
-            music.setVolume(0.5f);
             music.play();
         }
 
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/VideoController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/VideoController.java
new file mode 100644
index 00000000..bde571ae
--- /dev/null
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/VideoController.java
@@ -0,0 +1,57 @@
+package com.galaxytrucker.galaxytruckerreloaded.Controller;
+import com.badlogic.gdx.Game;
+import com.badlogic.gdx.Gdx;
+import com.galaxytrucker.galaxytruckerreloaded.Communication.ClientControllerCommunicator;
+import com.galaxytrucker.galaxytruckerreloaded.Main;
+import lombok.*;
+import org.hibernate.graph.internal.parse.HEGLTokenTypes;
+
+
+@Getter
+@Setter
+
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
+
+public class VideoController extends Controller{
+
+    private static VideoController singleton;
+
+    private Main main;
+
+
+    @NonNull
+    private ClientControllerCommunicator clientControllerCommunicator;
+
+
+    /**
+     * return the instance of this singleton
+     * @param communicator the communicator
+     * @return the singleton instance
+     */
+    public static VideoController getInstance(ClientControllerCommunicator communicator) {
+        if(singleton == null) {
+            singleton = new VideoController(communicator);
+        }
+        return singleton;
+    }
+
+    private int getHight(Main main){
+        return main.HEIGHT;
+    }
+    private int getWidth(Main main){
+        return main.WIDTH;
+    }
+
+    public void setResolution(int width, int height, Main main){
+        main.HEIGHT = height;
+        main.WIDTH = width;
+    }
+
+    public void setFullscreen() {
+        Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());
+    }
+
+    public void setWindowed() {
+        Gdx.graphics.setWindowedMode(getWidth(main),getHight(main));
+    }
+}
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java
index 1626125c..3c2cbf33 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Main.java
@@ -2,8 +2,10 @@ package com.galaxytrucker.galaxytruckerreloaded;
 
 import com.badlogic.gdx.Game;
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.audio.Music;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.galaxytrucker.galaxytruckerreloaded.Communication.Client;
+import com.galaxytrucker.galaxytruckerreloaded.Controller.AudioController;
 import com.galaxytrucker.galaxytruckerreloaded.Server.Server;
 import com.galaxytrucker.galaxytruckerreloaded.Server.ServerServiceCommunicator;
 import com.galaxytrucker.galaxytruckerreloaded.View.Screen.LoginScreen;
@@ -16,8 +18,8 @@ public class Main extends Game {
     /**
      * Settings
      */
-    public static final int WIDTH = 1920;
-    public static final int HEIGHT = 1080;
+    public static int WIDTH = 1920;
+    public static int HEIGHT = 1080;
 
     public static final String TITLE = "Galaxy Trucker";
     /**
@@ -38,11 +40,12 @@ public class Main extends Game {
     @Setter
     private boolean server;
 
+    private Music music;
     /**
      * start a server, if there isnt one
      */
     public void startServer() {
-        if(!server) {
+        if (!server) {
             Server.runServer();
             server = true;
         }
@@ -52,7 +55,7 @@ public class Main extends Game {
      * start a client, if there isnt already one
      */
     public void startClient() {
-        if(client == null) {
+        if (client == null) {
             client = new Client("localhost", 5050);
         }
     }
@@ -60,6 +63,7 @@ public class Main extends Game {
     @Override
     public void create() {
         batch = new SpriteBatch();
+        AudioController.getInstance().setMusic(Gdx.files.internal("Sounds/Music/bp_MUS_WastelandEXPLORE.ogg"));
 
         setScreen(new MainMenu(this));
     }
@@ -83,12 +87,5 @@ public class Main extends Game {
     public SpriteBatch getBatch() {
         return this.batch;
     }
-
-    public void setFullscreen() {
-        Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());
-    }
-
-    public void setWindowed() {
-        Gdx.graphics.setWindowedMode(WIDTH,HEIGHT);
-    }
 }
+
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/FullscreenEnableButton.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/FullscreenEnableButton.java
index 6c594ece..19b94293 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/FullscreenEnableButton.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/FullscreenEnableButton.java
@@ -4,6 +4,7 @@ import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.galaxytrucker.galaxytruckerreloaded.Controller.VideoController;
 import com.galaxytrucker.galaxytruckerreloaded.Main;
 import com.galaxytrucker.galaxytruckerreloaded.View.Buttons.ImButton;
 
@@ -25,6 +26,6 @@ public class FullscreenEnableButton extends ImButton {
 
     @Override
     public void leftClick() {
-        main.setFullscreen();
+        VideoController.getInstance(null).setFullscreen();
     }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/WindowedButton.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/WindowedButton.java
index 30ef43a6..e6fc89c3 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/WindowedButton.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/OptionButtons/Video/WindowedButton.java
@@ -4,6 +4,7 @@ import com.badlogic.gdx.audio.Sound;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.scenes.scene2d.InputEvent;
 import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
+import com.galaxytrucker.galaxytruckerreloaded.Controller.VideoController;
 import com.galaxytrucker.galaxytruckerreloaded.Main;
 import com.galaxytrucker.galaxytruckerreloaded.View.Buttons.ImButton;
 
@@ -25,6 +26,6 @@ public class WindowedButton extends ImButton {
 
     @Override
     public void leftClick() {
-        main.setWindowed();
+        VideoController.getInstance(null).setWindowed();
     }
 }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java
index a740241e..58b3a825 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java
@@ -159,9 +159,6 @@ public class GamePlay implements Screen {
         pauseStage = new Stage(viewport, main.batch);
         tileStage = new Stage(viewport, main.batch);
 
-        //evtl. an anderer Stelle callen
-        AudioController.getInstance(null).setMusic(Gdx.files.internal("Sounds/Music/bp_MUS_WastelandEXPLORE.ogg"));
-
 
         player = new ShipView(main, main.getClient().getMyShip(), stage, tileStage, main.getClient().getOverworld(), this);
 
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/AudioUI.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/AudioUI.java
index 69b0407a..f9a81180 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/AudioUI.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/AudioUI.java
@@ -112,6 +112,7 @@ public class AudioUI {
 
     /**
      * handles input to pause game, open options
+     * TODO: funktioniert nicht, ist auch nicht zwingend Nötig
      */
     public void updateInput() {
         //macht nicht was es soll. im Kern ein Bastard diese Methode
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/VideoUI.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/VideoUI.java
index 4c30ab56..1ef31084 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/VideoUI.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Options/VideoUI.java
@@ -86,6 +86,7 @@ public class VideoUI {
     /**
      * render
      * no stage stuff
+     * TODO: Absolutwerte durch Realtive Position ersetzen.
      */
     public void render() {
         updateInput();
@@ -138,6 +139,7 @@ public class VideoUI {
 
     /**
      * handles input to pause game, open options
+     * TODO: funktioniert nicht, ist auch nicht zwingend Nötig
      */
     public void updateInput() {
         //macht nicht was es soll. im Kern ein Bastard diese Methode
-- 
GitLab