|
@@ -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);
|
|
|
+ }
|
|
|
}
|