From c0ef02df49b1f110b0db1016e0eedd163047df04 Mon Sep 17 00:00:00 2001
From: Aaron <rudkowsk@uni-bremen.de>
Date: Sat, 11 Jul 2020 18:34:06 +0100
Subject: [PATCH] controller als singleton, crew in views

---
 core/assets/crew/background.png               | Bin 0 -> 6364 bytes
 .../ClientControllerCommunicator.java         |   9 ++
 .../Controller/BattleController.java          |   1 +
 .../Controller/CrewController.java            |  16 +++-
 .../Controller/HangerController.java          |  11 ++-
 .../Controller/TraderController.java          |  29 +++---
 .../Controller/TravelController.java          |  11 ++-
 .../Server/Services/TraderService.java        |   4 +-
 ...smissButton.java => CrewSelectButton.java} |   4 +-
 .../View/Screen/GamePlay.java                 |  59 +++---------
 .../View/UI/Ship/ShipView.java                |  59 ++++++++----
 .../View/UI/ShipInformation/CrewUI.java       |  89 +++++++++++-------
 .../View/UI/ShipInformation/RoomUI.java       |  13 +--
 database.mv.db                                | Bin 53248 -> 53248 bytes
 14 files changed, 175 insertions(+), 130 deletions(-)
 create mode 100644 core/assets/crew/background.png
 rename core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/{CrewDismissButton.java => CrewSelectButton.java} (89%)

diff --git a/core/assets/crew/background.png b/core/assets/crew/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..6940a39e42533fe79f1bd917d04d58f458e0c3e4
GIT binary patch
literal 6364
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

literal 0
HcmV?d00001

diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
index 114c48ab..f9ae6b7f 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Communication/ClientControllerCommunicator.java
@@ -1,5 +1,6 @@
 package com.galaxytrucker.galaxytruckerreloaded.Communication;
 
+import com.galaxytrucker.galaxytruckerreloaded.Controller.*;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Overworld;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Planet;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Ship;
@@ -58,6 +59,10 @@ public class ClientControllerCommunicator {
         return permittedLogin;
     }
 
+    /**
+     * Issue logout request
+     * @return true if the user was succesfully logged out
+     */
     public boolean logout() {
         try {
             RequestObject requestObject = new RequestObject();
@@ -78,6 +83,10 @@ public class ClientControllerCommunicator {
         if (singleton == null){
             singleton = new ClientControllerCommunicator(client);
         }
+        CrewController.getInstance(singleton);
+        HangerController.getInstance();
+        TraderController.getInstance(singleton);
+        TravelController.getInstance(singleton);
         // TODO CREATE ALL CONTROLLERS HERE, all controllers should be singletons
         return singleton;
     }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/BattleController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/BattleController.java
index f779b660..9da29831 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/BattleController.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/BattleController.java
@@ -8,6 +8,7 @@ import lombok.*;
 @Setter
 @RequiredArgsConstructor(access = AccessLevel.PUBLIC)
 public class BattleController extends Controller{
+
     @NonNull
     private Ship myself;
 
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/CrewController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/CrewController.java
index 9ef3d096..29cea0ec 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/CrewController.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/CrewController.java
@@ -12,15 +12,29 @@ import lombok.*;
 
 @Getter
 @Setter
-@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
 public class CrewController extends Controller {
 
+    private static CrewController singleton;
+
     /**
      * ClientControllerCommunicator
      */
     @NonNull
     private ClientControllerCommunicator clientControllerCommunicator;
 
+    /**
+     * return the instance of this singleton
+     * @param communicator the communicator
+     * @return the singleton instance
+     */
+    public static CrewController getInstance(ClientControllerCommunicator communicator) {
+        if(singleton == null) {
+            singleton = new CrewController(communicator);
+        }
+        return singleton;
+    }
+
     /**
      * Move a crew member to a different section
      *
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/HangerController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/HangerController.java
index e8b677f1..83b4bb30 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/HangerController.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/HangerController.java
@@ -7,9 +7,18 @@ import lombok.Setter;
 
 @Getter
 @Setter
-@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
 public class HangerController extends Controller {
 
+    private static HangerController singleton;
+
+    public static HangerController getInstance() {
+        if(singleton == null) {
+            singleton = new HangerController();
+        }
+        return singleton;
+    }
+
     /**
      * Picks a Shipmodel
      * @param username - the specified username
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TraderController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TraderController.java
index 70687733..5eee83c3 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TraderController.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TraderController.java
@@ -16,22 +16,27 @@ import java.util.List;
 
 @Getter
 @Setter
-@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
 public class TraderController extends Controller{
 
-    /** the trader */
-    @NonNull
-    private Trader trader;
-
     /** ClientControllerCommunicator */
     @NonNull
     private ClientControllerCommunicator clientControllerCommunicator;
 
+    private static TraderController singleton;
+
+    public static TraderController getInstance(ClientControllerCommunicator communicator) {
+        if(singleton == null) {
+            singleton = new TraderController(communicator);
+        }
+        return singleton;
+    }
+
     /**
      * Buy a weapon from the trader
      * @param weapon - the weapon to buy
      */
-    public boolean purchaseWeapon(Weapon weapon) {
+    public boolean purchaseWeapon(Trader trader, Weapon weapon) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setWeapon(weapon);
@@ -65,7 +70,7 @@ public class TraderController extends Controller{
      * Buy crew from a trader
      * @param crew   - the crew to buy
      */
-    public boolean purchaseCrew(Crew crew) {
+    public boolean purchaseCrew(Trader trader, Crew crew) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setRequestType(RequestType.TRADERBUYCREW);
@@ -98,7 +103,7 @@ public class TraderController extends Controller{
      * Buy rockets from the trader
      * @param amount - the amount of rockets to buy
      */
-    public boolean purchaseRockets(int amount) {
+    public boolean purchaseRockets(Trader trader, int amount) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setRequestType(RequestType.TRADERBUYROCKETS);
@@ -130,7 +135,7 @@ public class TraderController extends Controller{
      * Buy fuel from the trader
      * @param amount - the amount of fuel to buy
      */
-    public boolean purchaseFuel( int amount) {
+    public boolean purchaseFuel(Trader trader, int amount) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setShip(clientControllerCommunicator.getClientShip());
@@ -162,7 +167,7 @@ public class TraderController extends Controller{
      * Buy health from the trader
      * @param amount - the amount to buy
      */
-    public boolean purchaseHP(int amount) {
+    public boolean purchaseHP(Trader trader, int amount) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setShip(clientControllerCommunicator.getClientShip());
@@ -194,7 +199,7 @@ public class TraderController extends Controller{
      * Sell weapon to the trader
      * @param weapon the weapon
      */
-    public boolean sellWeapon(Weapon weapon) {
+    public boolean sellWeapon(Trader trader, Weapon weapon) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setShip(clientControllerCommunicator.getClientShip());
@@ -228,7 +233,7 @@ public class TraderController extends Controller{
      * sell rockets to the trader
      * @param amount the amount of rockets
      */
-    public boolean sellRockets(int amount) {
+    public boolean sellRockets(Trader trader, int amount) {
         try {
             RequestObject requestObject = new RequestObject();
             requestObject.setShip(clientControllerCommunicator.getClientShip());
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TravelController.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TravelController.java
index 85f240ae..67ea4a37 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TravelController.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Controller/TravelController.java
@@ -12,13 +12,22 @@ import java.util.List;
 
 @Getter
 @Setter
-@RequiredArgsConstructor(access = AccessLevel.PUBLIC)
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
 public class TravelController extends Controller{
 
     /** ClientControllerCommunicator */
     @NonNull
     private ClientControllerCommunicator clientControllerCommunicator;
 
+    private static TravelController singleton;
+
+    public static TravelController getInstance(ClientControllerCommunicator communicator) {
+        if(singleton == null) {
+            singleton = new TravelController(communicator);
+        }
+        return singleton;
+    }
+
     /**
      * travels from one location to another
      * @param destination - the destination
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/TraderService.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/TraderService.java
index b6f34195..38fd9243 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/TraderService.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/Server/Services/TraderService.java
@@ -121,7 +121,7 @@ public class TraderService extends PlanetEventService {
                 ship.setCoins(shipCoins - crew.getPrice());
                 //List<Crew> shipCrew = ship. TODO wie crew von schiff?
                 //set current Room
-                crew.setCurrentRoom(ship.getSystems().get(0)); //TODO in welchen raum setzen?
+                crew.setCurrentRoom(ship.getSystems().get(0));
                 crew.setAssociatedUser(ship.getAssociatedUser());
                 crewDAO.update(crew);
                 return true;
@@ -133,7 +133,7 @@ public class TraderService extends PlanetEventService {
                     trader.setCrewStock(traderCrew);
                     traderDAO.update(trader);
                     //set current Room
-                    crew.setCurrentRoom(null); //TODO ?
+                    crew.setCurrentRoom(null);
                     crew.setAssociatedUser(user);
                     crewDAO.update(crew);
                     //remove from ship?
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/CrewDismissButton.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/CrewSelectButton.java
similarity index 89%
rename from core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/CrewDismissButton.java
rename to core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/CrewSelectButton.java
index df0ca863..a0cb3700 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/CrewDismissButton.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Buttons/InGameButtons/CrewSelectButton.java
@@ -15,7 +15,7 @@ import com.galaxytrucker.galaxytruckerreloaded.View.UI.ShipInformation.CrewUI;
 /**
  * Button for dismissing a Crew Member
  */
-public class CrewDismissButton extends ImButton
+public class CrewSelectButton extends ImButton
 {
     /**
      * Background
@@ -38,7 +38,7 @@ public class CrewDismissButton extends ImButton
      *
      * @param crew the crew member
      */
-    public CrewDismissButton(Texture texture, float x, float y, float width, float height, int crew, CrewUI ui) {
+    public CrewSelectButton(Texture texture, float x, float y, float width, float height, int crew, CrewUI ui) {
         super(texture, x, y, width, height);
         this.crewID = crew;
         this.ui = ui;
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java
index 0d73a906..d6df9e94 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/Screen/GamePlay.java
@@ -10,6 +10,8 @@ import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.scenes.scene2d.Stage;
 import com.badlogic.gdx.utils.viewport.FitViewport;
 import com.badlogic.gdx.utils.viewport.Viewport;
+import com.galaxytrucker.galaxytruckerreloaded.Communication.ClientControllerCommunicator;
+import com.galaxytrucker.galaxytruckerreloaded.Controller.TravelController;
 import com.galaxytrucker.galaxytruckerreloaded.Main;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Crew.Crew;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Overworld;
@@ -144,48 +146,11 @@ public class GamePlay implements Screen {
         stage = new Stage(viewport);
         pauseStage = new Stage(viewport);
 
-        player = new ShipView(main, main.getClient().getMyShip(), stage, main.getClient().getOverworld(), this); //TODO wie schiff aus controller?
+        player = new ShipView(main, main.getClient().getMyShip(), stage, main.getClient().getOverworld(), this);
 
         Gdx.input.setInputProcessor(stage);
     }
 
-    //TODO only for testing
-    public Ship fakeShip(){
-        Trader trader = new Trader();
-        //Planet planet = new Planet("planet", 125f, 125f, PlanetEvent.SHOP, false, new LinkedList<>(), trader);
-        Planet planet = new Planet();
-        List<Room> rooms = new LinkedList<>();
-//        rooms.add(new BlankRoom());
-//        rooms.add(new BlankRoom());
-//        rooms.add(new BlankRoom());
-        List<Weapon> weapons = new LinkedList<>();
-//        weapons.add(new LaserBlaster("karl"));
-//        weapons.add(new LaserBlaster("test"));
-        return new Ship(1, "aaron", ShipType.DEFAULT, 100, 49, 5, 5, 7, 9, 23, 6f, planet, 6, 6, rooms, weapons, false);
-    }
-
-    /**
-     * später durch laden aus controller ersetzen
-     */
-    public Overworld fakeMap() {
-        Overworld res = main.getClient().getOverworld();
-
-        HashMap<String, Planet> hmap = new HashMap<>();
-
-
-        Planet sp = new Planet(0, "planet1", (float) 78, (float) 199, PlanetEvent.SHOP, new LinkedList<Ship>());
-        String f = "78, 199";
-        hmap.put(f, sp);
-        Planet sp1 = new Planet(1, "planet2", (float) 200, (float) 154, PlanetEvent.COMBAT, new LinkedList<Ship>());
-        String f1 = "200, 154";
-        hmap.put(f1, sp1);
-        //TODO
-        //res.setPlanetMap(hmap);
-        res.setStartPlanet(sp);
-
-        return res;
-    }
-
 
     @Override
     public void show() {
@@ -271,7 +236,7 @@ public class GamePlay implements Screen {
      * @return whether or not it is a valid request
      */
     public boolean travel(Planet planet) {
-        boolean success = true; //TODO call to controller
+        boolean success = TravelController.getInstance(null).travel(planet); //Communicator can be null since already created, so never used
         if(success) {
             createEvent(planet.getEvent());
             if(planet.getEvent() == PlanetEvent.SHOP) {
@@ -534,14 +499,14 @@ public class GamePlay implements Screen {
      * @param crew the id of the crew member
      * @param room the new room
      */
-    public void crewMoved(int crew, Room room) {} //call controller, ask for permission
+    public void crewMoved(Crew crew, Room room) {} //call controller, ask for permission
 
     /**
      * update the health of a crew member
      * @param crew the crew member
      * @param health the new health
      */
-    public void crewHealth(int crew, int health) { player.crewHealth(crew, health); }
+    public void crewHealth(Crew crew, int health) { player.crewHealth(crew, health); }
 
     /**
      * update the energy status of the overall energy not yet assigned to a system
@@ -559,7 +524,7 @@ public class GamePlay implements Screen {
      * the player has chosen a new amount of energy for a system
      * @param amount how much should be subtracted/added
      */
-    public void roomSystemEnergyChosen(int id, int amount) {
+    public void roomSystemEnergyChosen(Room room, int amount) {
         //call controller
     }
 
@@ -567,17 +532,17 @@ public class GamePlay implements Screen {
      * the energy for a system is updated
      * @param amount the new total amount
      */
-    public void roomSystemEnergyUpdate(int id, int amount) {
-        player.roomSystemEnergyUpdate(id, amount);
+    public void roomSystemEnergyUpdate(Room room, int amount) {
+        player.roomSystemEnergyUpdate(room, amount);
     }
 
     /**
      * update the status of a system
-     * @param id the id of the system
+     * @param room the system
      * @param amount the new status
      */
-    public void roomSystemStatusUpdate(int id, int amount) {
-        player.roomSystemStatusUpdate(id, amount);
+    public void roomSystemStatusUpdate(Room room, int amount) {
+        player.roomSystemStatusUpdate(room, amount);
     }
 
     /**
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Ship/ShipView.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Ship/ShipView.java
index bfb38d30..daf5303d 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Ship/ShipView.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/Ship/ShipView.java
@@ -3,6 +3,7 @@ package com.galaxytrucker.galaxytruckerreloaded.View.UI.Ship;
 import com.badlogic.gdx.graphics.Texture;
 import com.badlogic.gdx.scenes.scene2d.Stage;
 import com.galaxytrucker.galaxytruckerreloaded.Main;
+import com.galaxytrucker.galaxytruckerreloaded.Model.Crew.Crew;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Overworld;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Map.Planet;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Ship;
@@ -16,6 +17,7 @@ import com.galaxytrucker.galaxytruckerreloaded.View.UI.Inventory.InventoryUI;
 import com.galaxytrucker.galaxytruckerreloaded.View.UI.Map.MapUI;
 import com.galaxytrucker.galaxytruckerreloaded.View.UI.ShipInformation.*;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
@@ -94,14 +96,24 @@ public class ShipView extends AbstractShip {
      */
     public ShipView(Main main, Ship ship, Stage stage, Overworld map, GamePlay game) {
         super(main, ship, stage, game);
-        //java.util.List crew = ship.get ??
+
+        List<Crew> crews = new ArrayList<>();
+        for(Room r : ship.getSystems()) {
+            crews.addAll(r.getCrew());
+        }
+        crew = new HashMap<>();
+        float cy = main.HEIGHT - 150;
+        for(Crew c : crews) {
+            crew.put(c.getId(), new CrewUI(main, c, stage, ship, this, 30, cy));
+            cy -= 60;
+        }
 
         this.map = map;
 
         rooms = new HashMap<>();
-        List<Room> existingRooms = ship.getSystems();
-        for(Room r : existingRooms) {
-            //TODO wie system das zu raum gehört? dann sys id als key, roomui als value
+        List<Room> existingSystems = ship.getSystems();
+        for(Room r : existingSystems) {
+
         }
 
         moveButton = new MoveButton(850, main.HEIGHT - 90, 150, 92, this);
@@ -127,8 +139,8 @@ public class ShipView extends AbstractShip {
     public void render() {
 
         main.batch.begin();
-        main.batch.draw(shipBackground, main.WIDTH -1730, main.HEIGHT/2 - shipBackground.getHeight()/2 - 200, 1000, 1000);
-        main.batch.draw(shipRoomBackground, main.WIDTH -1500, main.HEIGHT/2 - shipRoomBackground.getHeight()/2 - 100, 550, 550);
+        main.batch.draw(shipBackground, 70, main.HEIGHT/2 - shipBackground.getHeight()/2, shipBackground.getWidth(), shipBackground.getHeight());
+        main.batch.draw(shipRoomBackground, (70 + shipBackground.getWidth()/2) - shipRoomBackground.getWidth()/2, main.HEIGHT/2 - shipRoomBackground.getHeight()/2, shipRoomBackground.getWidth(), shipRoomBackground.getHeight());
         main.batch.draw(weaponGeneralBackground, 700, 100, 328, 90);
         main.batch.end();
 
@@ -146,6 +158,10 @@ public class ShipView extends AbstractShip {
         for(RoomUI r : rooms.values()) {
             r.render();
         }
+
+        for(CrewUI c : crew.values()) {
+            c.render();
+        }
     }
 
     /**
@@ -166,6 +182,9 @@ public class ShipView extends AbstractShip {
         for(RoomUI r : rooms.values()) {
             r.disposeRoomUI();
         }
+        for(CrewUI c : crew.values()) {
+            c.disposeCrewUI();
+        }
     }
 
     /**
@@ -237,24 +256,24 @@ public class ShipView extends AbstractShip {
     /**
      * a crew member is moved to a new room
      * called by crew ui after player attempts to move a crew
-     * @param crewid the id of the crew member
+     * @param crew the crew member
      * @param room the new room
      */
-    public void crewMoved(int crewid, Room room) {
-        game.crewMoved(crewid, room);
+    public void crewMoved(Crew crew, Room room) {
+        game.crewMoved(crew, room);
     }
 
     /**
      * crew member health update. called by game
-     * @param crewid the crew member
+     * @param crew the crew member
      * @param health the new health
      */
-    public void crewHealth(int crewid, int health) {
+    public void crewHealth(Crew crew, int health) {
         if(health == 0) {
-            crew.get(crewid).crewDied();
+            this.crew.get(crew.getId()).crewDied();
         }
         else {
-            crew.get(crewid).statusUpdate(health);
+            this.crew.get(crew.getId()).statusUpdate(health);
         }
     }
 
@@ -266,25 +285,25 @@ public class ShipView extends AbstractShip {
      * update the energy of a system in a room
      * @param amount the new total amount
      */
-    public void roomSystemEnergyUpdate(int sysid, int amount) {
-        rooms.get(sysid).systemEnergyUpdate(amount);
+    public void roomSystemEnergyUpdate(Room room, int amount) {
+        rooms.get(room.getId()).systemEnergyUpdate(amount);
     }
 
     /**
      * update the status of a system in a room
-     * @param sysid the system id
+     * @param room the system
      * @param amount the new status
      */
-    public void roomSystemStatusUpdate(int sysid, int amount) {
-        rooms.get(sysid).systemStatusUpdate(amount);
+    public void roomSystemStatusUpdate(Room room, int amount) {
+        rooms.get(room.getId()).systemStatusUpdate(amount);
     }
 
     /**
      * the player has chosen a new amount of energy
      * @param amount how much should be subtracted/added
      */
-    public void roomSystemEnergyChosen(int id, int amount) {
-        game.roomSystemEnergyChosen(id, amount);
+    public void roomSystemEnergyChosen(Room room, int amount) {
+        game.roomSystemEnergyChosen(room, amount);
     }
 
     /**
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/CrewUI.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/CrewUI.java
index 260d5c05..bbe7d72b 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/CrewUI.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/CrewUI.java
@@ -2,17 +2,20 @@ package com.galaxytrucker.galaxytruckerreloaded.View.UI.ShipInformation;
 
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+import com.badlogic.gdx.graphics.g2d.GlyphLayout;
+import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
 import com.badlogic.gdx.scenes.scene2d.Stage;
 import com.galaxytrucker.galaxytruckerreloaded.Main;
 import com.galaxytrucker.galaxytruckerreloaded.Model.Crew.Crew;
 
-import java.util.LinkedList;
 import java.util.List;
 
 import com.galaxytrucker.galaxytruckerreloaded.Model.Ship;
 import com.galaxytrucker.galaxytruckerreloaded.Model.ShipLayout.Room;
-import com.galaxytrucker.galaxytruckerreloaded.View.Buttons.InGameButtons.CrewDismissButton;
+import com.galaxytrucker.galaxytruckerreloaded.View.Buttons.InGameButtons.CrewSelectButton;
 import com.galaxytrucker.galaxytruckerreloaded.View.UI.Ship.ShipView;
 
 /**
@@ -47,59 +50,73 @@ public class CrewUI {
      * button to click to send the crew to another room. After the button is clicked,
      * the player needs to click on a room in their own ship
      */
-    private CrewDismissButton crewButton;
+    private CrewSelectButton crewButton;
 
     /**
-     * the name of the crew member
+     * the background box
      */
-    private String name;
+    private Texture background;
 
     /**
-     * id of the crew member
+     * the crew member displayed with this ui
      */
-    private int id;
+    private Crew crew;
 
     /**
-     * the current health of the crew member
+     * the main class
      */
-    private int health;
+    private Main main;
 
     /**
-     * the maximum health of the crew member
+     * rooms of the ship
      */
-    private int maxhealth;
+    private List<Room> rooms;
 
     /**
-     * the main class
+     * the shipview of this crewui
      */
-    private Main main;
+    private ShipView shipView;
 
     /**
-     * the stage for buttons
+     * the x position of the picture of the crew member in the upper left corner
      */
-    private Stage stage;
+    private float x;
 
     /**
-     * rooms of the ship
+     * the y position of the picture of the crew member in the upper left corner
      */
-    private List<Room> rooms;
+    private float y;
 
-    private ShipView shipView;
+    private BitmapFont font;
+
+    private GlyphLayout glyph = new GlyphLayout();
 
     /**
      * constructor
      * @param main the main class
      * @param crew the crew member
      */
-    public CrewUI(Main main, Crew crew, Stage stage, Ship ship, ShipView shipView) {
+    public CrewUI(Main main, Crew crew, Stage stage, Ship ship, ShipView shipView, float x, float y) {
         this.main = main;
-        this.stage = stage;
+        this.crew = crew;
         this.shipView = shipView;
-
-        name = crew.getName();
-        maxhealth = crew.getMaxhealth();
-        health = crew.getHealth();
-        id = crew.getId();
+        this.x = x;
+        this.y = y;
+
+        //font generator to get bitmapfont from .ttf file
+        FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.local("fonts/JustinFont11Bold.ttf"));
+        FreeTypeFontGenerator.FreeTypeFontParameter params = new FreeTypeFontGenerator.FreeTypeFontParameter();
+        //setting parameters of font
+        params.borderWidth = 1;
+        params.borderColor = Color.BLACK;
+        params.characters = FreeTypeFontGenerator.DEFAULT_CHARS;
+        params.magFilter = Texture.TextureFilter.Nearest;
+        params.minFilter = Texture.TextureFilter.Nearest;
+        params.genMipMaps = true;
+        params.size = 15;
+
+        font = generator.generateFont(params);
+        glyph.setText(font, crew.getName());
 
         if(crew.getName().equals("ana")) {
             crewImage = new Texture("crew/anaerobic.png");
@@ -108,18 +125,20 @@ public class CrewUI {
             crewImage = new Texture("crew/battle.png");
         }
         else {
-            crewImage = new Texture("crew/energy.png"); //TODO wie sieht das mit namen aus?
+            crewImage = new Texture("crew/energy.png");
         }
 
-        crewButton = new CrewDismissButton(crewImage, 0, 0, 10, 10, crew.getId(), this);
+        crewButton = new CrewSelectButton(crewImage, x, y+15, 50, 50, crew.getId(), this);
         stage.addActor(crewButton);
 
-        crewInShip = crewImage; //TODO for now
+        crewInShip = crewImage;
 
         crewStatus = new Texture("gameuis/energybar.png");
 
         box = new Texture("crew/health_box.png");
 
+        background = new Texture("crew/background.png");
+
         currentTexture = 10;
 
         rooms = ship.getSystems();
@@ -143,12 +162,14 @@ public class CrewUI {
      */
     public void render() {
         main.batch.begin();
+        main.batch.draw(background, x, y, 200, 55);
+        font.draw(main.batch, glyph, x + 55, y + 40);
         main.batch.draw(crewInShip, 0, 0, 0, 0); //TODO whxy
-        main.batch.draw(box, 0, 0, 10, 10); //TODO xywh
-        float x=0;
+        main.batch.draw(box, x + 35, y +5, 140, 20);
+        float ex=x+55;
         for(int i=0;i<=currentTexture;i++) {
-             main.batch.draw(crewStatus, x, 0, 0, 0); //TODO whxy
-            x+=5;
+             main.batch.draw(crewStatus, ex, y+13, 8.75f, 5);
+            ex+=8.75;
         }
         main.batch.end();
     }
@@ -160,7 +181,7 @@ public class CrewUI {
      * @param room the new room
      */
     public void crewMoved(Room room) {
-        shipView.crewMoved(id, room);
+        shipView.crewMoved(crew, room);
     }
 
     /**
@@ -209,7 +230,7 @@ public class CrewUI {
      * @param status the new status
      */
     public void statusUpdate(int status) {
-        int percent = status/maxhealth;
+        int percent = status/crew.getMaxhealth();
         currentTexture = percent * 10;
         //adapt currentTexture according to amount of textures we end up having
     }
diff --git a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/RoomUI.java b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/RoomUI.java
index 069ce529..bec9dde3 100644
--- a/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/RoomUI.java
+++ b/core/src/com/galaxytrucker/galaxytruckerreloaded/View/UI/ShipInformation/RoomUI.java
@@ -27,15 +27,7 @@ public class RoomUI {
      */
     private Texture roomLowOxyTexture;
 
-    /**
-     * Höhe des Raumes. Räume sind immer rechteckig.
-     */
-    private int height;
-
-    /**
-     * Weite des Raumes. Räume sind immer rechteckig.
-     */
-    private int width;
+    private Room room;
 
     private Main main;
 
@@ -49,6 +41,7 @@ public class RoomUI {
      */
     public RoomUI(Main main, Room room, Stage stage, ShipView ship) {
         this.main = main;
+        this.room = room;
         // TODO
 //        height = room.getHeight();
 //        width = room.getWidth();
@@ -92,7 +85,7 @@ public class RoomUI {
      * @param amount how much should be subtracted/added
      */
     public void systemEnergyChosen(int id, int amount) {
-        ship.roomSystemEnergyChosen(id, amount);
+        ship.roomSystemEnergyChosen(room, amount);
     }
 
     /**
diff --git a/database.mv.db b/database.mv.db
index 4284f5cf13e807bc594694175d5c882cd17f743a..d4e9f32ecfc33bf4cb8255bf3291a845051340b5 100644
GIT binary patch
literal 53248
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
T{U0&c|6L8%|Ixp~`v3m}qUVI(

literal 53248
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
BZ-4**

-- 
GitLab