diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/Player.java | 112 | 
1 files changed, 112 insertions, 0 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/Player.java b/core/src/ch/asynk/tankontank/game/Player.java new file mode 100644 index 0000000..85869f8 --- /dev/null +++ b/core/src/ch/asynk/tankontank/game/Player.java @@ -0,0 +1,112 @@ +package ch.asynk.tankontank.game; + +import java.util.ArrayList; +import java.util.Random; + +import com.badlogic.gdx.utils.Disposable; + +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; + +// import com.badlogic.gdx.math.Vector2; +// import com.badlogic.gdx.math.Vector3; + +import ch.asynk.tankontank.engine.Pawn; +import ch.asynk.tankontank.engine.gfx.Image; +import ch.asynk.tankontank.engine.gfx.Drawable; + +public class Player implements Drawable, Disposable +{ +    private static final float MOVE_TIME = 0.4f; + +    private static Random rand = new Random(); + +    private Army army; +    private Image flag; +    private ArrayList<Pawn> units; +    private ArrayList<Pawn> losses; +    private ArrayList<Pawn> reinforcement; +    private int actionPoints; + +    public Player(Army army, TextureAtlas atlas, String name, int size) +    { +        this.army = army; +        this.flag = new Image(atlas.findRegion(name)); +        this.units = new ArrayList<Pawn>(size); +        this.losses = new ArrayList<Pawn>(size); +        this.reinforcement = new ArrayList<Pawn>(size); +        setActionPoints(); +    } + +    public String toString() +    { +        return "Player : " + army + " AP: " + actionPoints + +            " units:" + units.size() + " losses:" + losses.size() + " reinforcement:" + reinforcement.size(); +    } + +    @Override +    public void dispose() +    { +        flag.dispose(); +    } + +    public void addUnit(Pawn pawn) +    { +        units.add(pawn); +    } + +    public Image getFlag() +    { +        return flag; +    } + +    public boolean apExhausted() +    { +        return (actionPoints <= 0); +    } + +    public void burnDownOneAp() +    { +        actionPoints -= 1; +        if (actionPoints < 0) System.err.println("AP < 0, damn that's very wrong"); +    } + +    public void turnEnd() +    { +    } + +    public void turnStart() +    { +        for (Pawn pawn : units) +            pawn.reset(); +        setActionPoints(); +    } + +    private void setActionPoints() +    { +        this.actionPoints = 2 + rand.nextInt(3); +    } + +    public boolean isEnemy(Pawn pawn) +    { +        return ((Unit) pawn).isEnemy(army); +    } + +    public void setPosition(float x, float y) +    { +        flag.setPosition(x, y); +    } + +    @Override +    public void draw(Batch batch) +    { +        flag.draw(batch); +    } + +    @Override +    public void drawDebug(ShapeRenderer debugShapes) +    { +        flag.drawDebug(debugShapes); +    } +} | 
