Эх сурвалжийг харах

character reset function, character count objectives visited, character win and lose detection

Hudriwudri 5 жил өмнө
parent
commit
57cff9f693

+ 2 - 1
src/pathgame/PathGame.java

@@ -10,6 +10,7 @@ import pathgame.rendering.TileMapRenderer;
 import pathgame.tilemap.TileMap;
 import pathgame.tilemap.TileMapGenerator;
 import pathgame.gameplay.Player;
+import pathgame.gameplay.PlayerAbilities;
 import pathgame.gameplay.menu.Menu;
 import pathgame.rendering.HUDRenderer;
 import pathgame.rendering.MenuRenderer;
@@ -24,7 +25,7 @@ public class PathGame implements IGame
     private TileMap map = TileMapGenerator.getMap(50, 50, 15);
 
     private final PlayerRenderer playerRenderer = new PlayerRenderer();
-    private final Player player = new Player(10, 10);
+    private final Player player = new Player(1000, 10, PlayerAbilities.NORMAL);
 
     private final Menu menu = new Menu();
     private final MenuRenderer menuRenderer = new MenuRenderer();

+ 56 - 13
src/pathgame/gameplay/Player.java

@@ -4,9 +4,11 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import pathgame.tilemap.Tile;
 import pathgame.tilemap.TileMap;
+import pathgame.tilemap.TileTown;
 
 public class Player
 {
+
     private static final float SPEED = 0.125f;
 
     private PlayerAbilities abilities;
@@ -21,18 +23,18 @@ public class Player
     private boolean isMoving = false;
     private int currSpeedSlowdown = 1;
 
-    private final int energySupply;
+    private int energySupply;
     private int energyUsed = 0;
-    private final int objectivesAmount;
+    private int objectivesAmount;
     private int objectivesVisited = 0;
     private final LinkedList<MinusStepsValues> steps = new LinkedList<>();
     //private int minusEnergy = 0;
 
-    public Player(int energySupply, int objectivesAmount)
+    public Player(int energySupply, int objectivesAmount, PlayerAbilities abilities)
     {
         this.energySupply = energySupply;
         this.objectivesAmount = objectivesAmount;
-        abilities = PlayerAbilities.NORMAL;
+        this.abilities = abilities;
     }
 
     public float getLastX()
@@ -54,7 +56,7 @@ public class Player
     {
         return y;
     }
-    
+
     private void tickSteps()
     {
         Iterator<MinusStepsValues> iter = steps.iterator();
@@ -71,11 +73,11 @@ public class Player
     public void tick(TileMap map)
     {
         tickSteps();
-        
+
         int currentTileX = Math.round(x);
         int currentTileY = Math.round(y);
         Tile currentTile = map.getTile(currentTileX, currentTileY);
-        
+
         currSpeedSlowdown = currentTile.getEnergyCost(abilities);
         lastX = x;
         lastY = y;
@@ -87,8 +89,10 @@ public class Player
             if(isMoving)
             {
                 currentTile.onEnter(this, map, currentTileX, currentTileY);
-                ++objectivesVisited;//TODO check for objective
-                //System.out.print(map.getTile((int)x,(int) y).getEnergyCost());
+                if(currentTile instanceof TileTown)
+                {
+                    ++objectivesVisited;
+                }
                 steps.addLast(new MinusStepsValues(currSpeedSlowdown));
                 energyUsed += currSpeedSlowdown;
             }
@@ -158,8 +162,6 @@ public class Player
             }
             moveY = Math.min(moveY, d);
         }
-
-        //System.out.println(moveX);
         x += moveX;
         y += moveY;
     }
@@ -208,14 +210,55 @@ public class Player
     {
         return steps;
     }
-    
+
     public void setAbilities(PlayerAbilities playerAbilities)
     {
         abilities = playerAbilities;
     }
-    
+
     public PlayerAbilities getAbilities()
     {
         return abilities;
     }
+    
+    public void setEnergySupply(int energySupply)
+    {
+        this.energySupply = energySupply;
+    }
+    
+    public void setObjectivesAmount(int objectivesAmount)
+    {
+        this.objectivesAmount = objectivesAmount;
+    }
+    
+    public void getAbilities(PlayerAbilities playerAbilities)
+    {
+        abilities = playerAbilities;
+    }
+
+    public void reset(int energySupply, int objectivesAmount, PlayerAbilities abilities)
+    {
+        lastX = 0;
+        lastY = 0;
+        x = 0;
+        y = 0;
+
+        velX = 0;
+        velY = 0;
+        isMoving = false;
+        currSpeedSlowdown = 1;
+
+        energyUsed = 0;
+
+        objectivesVisited = 0;
+        steps.clear();
+        this.energySupply = energySupply;
+        this.objectivesAmount = objectivesAmount;
+        this.abilities = abilities;
+    }
+
+    public void reset()
+    {
+        reset(1000, 10, PlayerAbilities.NORMAL);
+    }
 }