Browse Source

Anfang Upgradeable

jan 5 months ago
parent
commit
f59020f03f

+ 12 - 0
src/main/java/controller/GameController.java

@@ -19,12 +19,14 @@ import model.tiles.InteractiveTileModel;
 import model.tiles.InteractiveTileType;
 import util.GAMESTATE;
 import util.WorldGenerator;
+import util.economy.EconomyData;
 import view.GamePanel;
 import view.sound.SoundManager;
 
 import javax.swing.*;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Map;
 
 /**
  * Controls the main game loop, input handling, entities, and interactive tiles.
@@ -497,5 +499,15 @@ public class GameController implements Runnable, Serializable {
         initShopController();
     }
 
+    public boolean hasAllResources(EconomyData data, int controllerLevel) {
+        boolean hasAllResources = true;
+        for(Map.Entry<ITEM_NAME, Integer> map : data.getCosts().get(controllerLevel).entrySet()){
+            if(getModel().getInventory().hasEnough(map.getKey(), map.getValue())){
+                hasAllResources = false;
+            }
+        }
+        return hasAllResources;
+    }
+
 }
 

+ 11 - 4
src/main/java/controller/tiles/interactive/upgradeable/SawmillController.java

@@ -2,12 +2,17 @@ package controller.tiles.interactive.upgradeable;
 
 import controller.GameController;
 import controller.tiles.interactive.InteractiveTileController;
+import model.items.ITEM_NAME;
 import model.tiles.InteractiveTileModel;
 import util.Translator;
+import util.economy.EconomyData;
+import util.economy.EconomyInfo;
 import view.popUpMenu.PopupMenu;
 import view.popUpMenu.UpgradeMenu;
 import view.tile.interactive.SawmillView;
 
+import java.util.Map;
+
 public class SawmillController extends InteractiveTileController {
 
     public SawmillController(GameController gc, InteractiveTileModel model) {
@@ -20,12 +25,14 @@ public class SawmillController extends InteractiveTileController {
 
     @Override
     public void upgrade() {
-        boolean condition = false;
-        if(condition){
-            getModel().upgrade();
+        EconomyData data = EconomyInfo.infoOf(getModel().getTileType());
+        int controllerLevel = getModel().getLevel();
+        if(data.getMaxLevel() < controllerLevel
+        && gameController.hasAllResources(data, controllerLevel)
+        && gameController.getModel().getLightHouseLevel() >= data.getRequiredLighthouseLevels().get(controllerLevel)){
+           getModel().upgrade();
         }
     }
-
     @Override
     public void collect() {
         gameController.addToInventory(getModel().collect());

+ 11 - 0
src/main/java/model/GameModel.java

@@ -1,7 +1,9 @@
 package model;
 
+import controller.tiles.interactive.upgradeable.LighthouseController;
 import model.entity.EntityModel;
 import model.tiles.InteractiveTileModel;
+import model.tiles.InteractiveTileType;
 import util.Settings;
 
 import java.io.Serializable;
@@ -41,4 +43,13 @@ public class GameModel implements Serializable {
     public Settings getSettings() {
         return settings;
     }
+
+    public int getLightHouseLevel() {
+        for(InteractiveTileModel model : interactiveTileModels){
+            if(model.getTileType() == InteractiveTileType.LIGHTHOUSE){
+                return model.getLevel();
+            }
+        }
+        return 0;
+    }
 }