Browse Source

Titel von PopupMenu mit Übersetzungen

Jan 6 months ago
parent
commit
d6f3b48a01

+ 2 - 2
src/main/java/controller/tiles/interactive/AnimalEnclosureController.java

@@ -2,6 +2,7 @@ package controller.tiles.interactive;
 
 import controller.GameController;
 import model.tiles.InteractiveTileModel;
+import util.Translator;
 import view.Camera;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
@@ -15,8 +16,7 @@ public class AnimalEnclosureController extends InteractiveTileController {
     public AnimalEnclosureController(GameController gc, InteractiveTileModel model) {
         super(model, null, gc);
         setView(new AnimalEnclosureView(gc, this));
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
+        PopupMenu popup = new UpgradeMenu(100, 100, Translator.translate("popup.title.animal_enclosure"));
         setPopupOnClick(popup);
     }
 

+ 2 - 2
src/main/java/controller/tiles/interactive/BarracksController.java

@@ -2,6 +2,7 @@ package controller.tiles.interactive;
 
 import controller.GameController;
 import model.tiles.InteractiveTileModel;
+import util.Translator;
 import view.Camera;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
@@ -16,8 +17,7 @@ public class BarracksController extends InteractiveTileController {
     public BarracksController(GameController gc, InteractiveTileModel model) {
         super(model, null, gc);
         setView(new BarracksView(gc, this));
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
+        PopupMenu popup = new UpgradeMenu(100, 100, Translator.translate("popup.title.barracks"));
         setPopupOnClick(popup);
     }
 }

+ 2 - 1
src/main/java/controller/tiles/interactive/IronMineController.java

@@ -2,6 +2,7 @@ package controller.tiles.interactive;
 
 import controller.GameController;
 import model.tiles.InteractiveTileModel;
+import util.Translator;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
 import view.tile.interactive.IronMineView;
@@ -11,7 +12,7 @@ public class IronMineController extends InteractiveTileController {
     public IronMineController(GameController gc, InteractiveTileModel model) {
         super(model, null, gc);
         setView(new IronMineView(gc, this));
-        PopupMenu popup = new UpgradeMenu(100, 100);
+        PopupMenu popup = new UpgradeMenu(100, 100, Translator.translate("popup.title.iron_mine"));
 
         setPopupOnClick(popup);
     }

+ 2 - 1
src/main/java/controller/tiles/interactive/LighthouseController.java

@@ -2,6 +2,7 @@ package controller.tiles.interactive;
 
 import controller.GameController;
 import model.tiles.InteractiveTileModel;
+import util.Translator;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
 import view.tile.interactive.LighthouseView;
@@ -11,7 +12,7 @@ public class LighthouseController extends InteractiveTileController {
     public LighthouseController(GameController gc, InteractiveTileModel model) {
         super(model, null, gc);
         setView(new LighthouseView(gc, this));
-        PopupMenu popup = new UpgradeMenu(100, 100);
+        PopupMenu popup = new UpgradeMenu(100, 110, Translator.translate("popup.title.lighthouse"));
 
         setPopupOnClick(popup);
     }

+ 2 - 2
src/main/java/controller/tiles/interactive/MineController.java

@@ -2,6 +2,7 @@ package controller.tiles.interactive;
 
 import controller.GameController;
 import model.tiles.InteractiveTileModel;
+import util.Translator;
 import view.Camera;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
@@ -17,8 +18,7 @@ public class MineController extends InteractiveTileController{
     public MineController(GameController gc, InteractiveTileModel model) {
         super(model, null, gc);
         setView(new MineView(gc, this));
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
+        PopupMenu popup = new UpgradeMenu(100, 100, Translator.translate("popup.title.mine"));
         setPopupOnClick(popup);
     }
 

+ 2 - 1
src/main/java/controller/tiles/interactive/SawmillController.java

@@ -2,6 +2,7 @@ package controller.tiles.interactive;
 
 import controller.GameController;
 import model.tiles.InteractiveTileModel;
+import util.Translator;
 import view.Camera;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
@@ -16,7 +17,7 @@ public class SawmillController extends InteractiveTileController {
     public SawmillController(GameController gc, InteractiveTileModel model) {
         super(model, null, gc);
         setView(new SawmillView(gc, this));
-        PopupMenu popup = new UpgradeMenu(100, 100);
+        PopupMenu popup = new UpgradeMenu(100, 100, Translator.translate("popup.title.sawmill"));
 
         setPopupOnClick(popup);
     }

+ 1 - 1
src/main/java/main/Main.java

@@ -13,7 +13,7 @@ public class Main {
 
     public static void main(String[] args) throws IOException {
 
-        Translator.load("lang/en_us.json");
+        Translator.load("lang/de_de.json");
 
         GameController gameController = GameSaver.loadGame();
         GamePanel gamePanel = gameController.getView();

+ 9 - 0
src/main/java/model/tiles/InteractiveTileModel.java

@@ -4,6 +4,7 @@ public class InteractiveTileModel {
     protected int worldGridX, worldGridY;
     protected int width, height;
     private boolean clicked;
+    private int level;
 
     public InteractiveTileModel(int worldGridX, int worldGridY, int width, int height) {
         this.worldGridX = worldGridX;
@@ -11,6 +12,14 @@ public class InteractiveTileModel {
         this.width = width;
         this.height = height;
         this.clicked = false;
+        this.level = 1;
+    }
+    public int getLevel(){
+        return level;
+    }
+
+    public void setLevel(int level){
+        this.level = level;
     }
 
     public int getWorldGridX() {

+ 0 - 1
src/main/java/view/UI.java

@@ -5,7 +5,6 @@ import util.GAMESTATE;
 import util.Translator;
 import view.components.Button;
 import view.popUpMenu.PopupMenu;
-import view.tile.interactive.InteractiveTileView;
 import view.tile.ONCLICKTYPE;
 
 import java.awt.*;

+ 8 - 0
src/main/java/view/components/Button.java

@@ -64,4 +64,12 @@ public class Button implements Serializable {
         this.screenX = x + offsetX;
         this.screenY = y + offsetY;
     }
+    /**
+     * Centers the Button to a specified width accordingly using offset
+     * @param width the width to center itself to.
+     * @since 2025-05-23
+     */
+    public void centerToWidth(int width) {
+        offsetX = (width - this.width)/2;
+    }
 }

+ 27 - 0
src/main/java/view/popUpMenu/PopupMenu.java

@@ -1,5 +1,6 @@
 package view.popUpMenu;
 
+import util.TextUtil;
 import view.components.Button;
 
 import java.awt.*;
@@ -10,12 +11,22 @@ public abstract class PopupMenu implements Serializable {
 
     public int overlayWidth;
     public int overlayHeight;
+    public String title;
     public ArrayList<Button> buttonArrayList = new ArrayList<>();
+    public PopupMenu(int width, int height, String title) {
+        overlayWidth = width;
+        overlayHeight = height;
+        this.title = title;
+    }
     public PopupMenu(int width, int height) {
         overlayWidth = width;
         overlayHeight = height;
     }
 
+    public void setTitle(String title){
+        this.title = title;
+    }
+
     public void addButton(Button button, int offsetX, int offsetY){
         button.setOffset(offsetX, offsetY);
         buttonArrayList.add(button);
@@ -23,10 +34,20 @@ public abstract class PopupMenu implements Serializable {
 
 
     public void draw(int x, int y, Graphics2D g2){
+        FontMetrics fm = g2.getFontMetrics();
+        int msgWidth = fm.stringWidth(title);
+        int msgHeight = fm.getAscent();
+        if(overlayWidth < msgWidth) overlayWidth = msgWidth + 20;
+
+        centerButtons();
+
         g2.setColor(Color.GRAY);
         g2.fillRoundRect(x,y, overlayWidth, overlayHeight, 15, 15);
         g2.setColor(Color.WHITE);
         g2.drawRoundRect(x,y,overlayWidth,overlayHeight, 15, 15);
+
+        g2.drawString(title, x + ((overlayWidth - msgWidth )/2), y+ 20);
+
         for (Button button : buttonArrayList){
             button.setRelativeScreenCoordinates(x,y);
             button.draw(g2);
@@ -34,6 +55,12 @@ public abstract class PopupMenu implements Serializable {
 
     }
 
+    private void centerButtons() {
+        for (Button button : buttonArrayList){
+            button.centerToWidth(overlayWidth);
+        }
+    }
+
     public Button getClickedButton(int screenX, int screenY) {
         for (Button button : buttonArrayList){
             if(button.wasClicked(screenX, screenY)) return button;

+ 5 - 4
src/main/java/view/popUpMenu/UpgradeMenu.java

@@ -1,15 +1,16 @@
 package view.popUpMenu;
 
+import controller.tiles.interactive.InteractiveTileController;
 import util.Translator;
 import view.components.Button;
 
 import java.io.Serializable;
 
 public class UpgradeMenu extends PopupMenu {
-    public UpgradeMenu(int width, int height) {
-        super(width, height);
-        addButton( new Button(80, 25, Translator.translate("popup.upgrade"), this::upgrade), 10, 10 );
-        addButton(new Button(80,25, Translator.translate("popup.collect"),this::collect), 10, 40);
+    public UpgradeMenu(int width, int height, String title) {
+        super(width, height, title);
+        addButton( new Button(80, 25, Translator.translate("popup.upgrade"), this::upgrade), 10, 40 );
+        addButton( new Button(80,25, Translator.translate("popup.collect"),this::collect), 10, 70);
     }
 
     private void upgrade(){

+ 1 - 3
src/main/java/view/tile/interactive/AnimalEnclosureView.java

@@ -2,6 +2,7 @@ package view.tile.interactive;
 
 import controller.GameController;
 import controller.tiles.interactive.InteractiveTileController;
+import util.Translator;
 import view.Camera;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
@@ -12,9 +13,6 @@ public class AnimalEnclosureView extends InteractiveTileView {
 
     public AnimalEnclosureView(GameController gc, InteractiveTileController controller) {
         super( gc.getView().tileSize, gc.getView().tileSize, controller, gc.getView().tileManager);
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
-        setPopupOnClick(popup);
         setImage("/tiles/animalEnclosureTest.png");
     }
 }

+ 0 - 2
src/main/java/view/tile/interactive/BarracksView.java

@@ -12,8 +12,6 @@ public class BarracksView extends InteractiveTileView {
 
     public BarracksView(GameController gc, InteractiveTileController controller) {
         super( gc.getView().tileSize, gc.getView().tileSize, controller, gc.getView().tileManager);
-        PopupMenu popup = new UpgradeMenu(100, 100);
         setImage("/tiles/barracksTest.png");
-        setPopupOnClick(popup);
     }
 }

+ 0 - 3
src/main/java/view/tile/interactive/IronMineView.java

@@ -10,9 +10,6 @@ public class IronMineView extends InteractiveTileView {
 
     public IronMineView(GameController gc, InteractiveTileController controller) {
         super( gc.getView().tileSize, gc.getView().tileSize, controller, gc.getView().tileManager);
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
-        setPopupOnClick(popup);
         setImage("/tiles/mineIronTest.png");
     }
 }

+ 0 - 3
src/main/java/view/tile/interactive/LighthouseView.java

@@ -12,9 +12,6 @@ public class LighthouseView extends InteractiveTileView {
 
     public LighthouseView(GameController gc, InteractiveTileController controller) {
         super( gc.getView().tileSize, gc.getView().tileSize, controller, gc.getView().tileManager);
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
-        setPopupOnClick(popup);
         setImage("/tiles/lighthouseTest.png");
     }
 

+ 0 - 3
src/main/java/view/tile/interactive/MineView.java

@@ -13,9 +13,6 @@ public class MineView extends InteractiveTileView {
 
     public MineView(GameController gc, InteractiveTileController controller) {
         super( gc.getView().tileSize, gc.getView().tileSize, controller, gc.getView().tileManager);
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
-        setPopupOnClick(popup);
         setImage("/tiles/mineTest.png");
     }
 

+ 0 - 3
src/main/java/view/tile/interactive/SawmillView.java

@@ -12,9 +12,6 @@ public class SawmillView extends InteractiveTileView {
 
     public SawmillView(GameController gc, InteractiveTileController controller) {
         super( gc.getView().tileSize, gc.getView().tileSize, controller, gc.getView().tileManager);
-        PopupMenu popup = new UpgradeMenu(100, 100);
-
-        setPopupOnClick(popup);
         setImage("/tiles/sawmillTest.png");
     }
 

+ 7 - 1
src/main/resources/lang/de_de.json

@@ -9,5 +9,11 @@
   "popup.upgrade": "Verbessern",
   "item.wood": "Holz",
   "item.water": "Wasser",
-  "item.stone": "Stein"
+  "item.stone": "Stein",
+  "popup.title.animal_enclosure": "Tierstall",
+  "popup.title.barracks": "Kaserne",
+  "popup.title.lighthouse": "Leuchtturm",
+  "popup.title.iron_mine": "Eisen Mine",
+  "popup.title.mine": "Steinbruch",
+  "popup.title.sawmill": "Sägewerk"
 }

+ 8 - 1
src/main/resources/lang/en_us.json

@@ -9,4 +9,11 @@
   "popup.upgrade": "Upgrade",
   "item.wood": "Wood",
   "item.water": "Water",
-  "item.stone": "Stone"}
+  "item.stone": "Stone",
+  "popup.title.animal_enclosure": "Animal Enclosure",
+  "popup.title.barracks": "Barracks",
+  "popup.title.lighthouse": "Lighthouse",
+  "popup.title.iron_mine": "Iron Mine",
+  "popup.title.mine": "Stone Mine",
+  "popup.title.sawmill": "Sawmill"
+}