From f5d539ebad2027c6d989cecde4aaa337795aa162 Mon Sep 17 00:00:00 2001 From: Markus Kofler Date: Fri, 20 May 2022 21:44:04 +0200 Subject: [PATCH] #41 Implement Player Movement on Game Screen --- assets/player.png | Bin 0 -> 53091 bytes core/src/boardLogic/Board.java | 43 +++- core/src/boardLogic/BoardFields.java | 225 ++++++++++++------ .../com/mankomania/game/MankomaniaGame.java | 15 +- .../mankomania/game/screens/GameScreen.java | 65 ++--- core/src/fieldLogic/Field.java | 17 +- core/src/playerLogic/Player.java | 100 ++++++-- 7 files changed, 308 insertions(+), 157 deletions(-) create mode 100644 assets/player.png diff --git a/assets/player.png b/assets/player.png new file mode 100644 index 0000000000000000000000000000000000000000..4d118a910f008e578b7de25eb3def033e15c7209 GIT binary patch literal 53091 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 O7(8A5T-G@yGywn!>c6A_ literal 0 HcmV?d00001 diff --git a/core/src/boardLogic/Board.java b/core/src/boardLogic/Board.java index 0b1341c..1e1bdde 100644 --- a/core/src/boardLogic/Board.java +++ b/core/src/boardLogic/Board.java @@ -1,5 +1,7 @@ package boardLogic; +import com.badlogic.gdx.Gdx; + import org.graalvm.compiler.core.common.Fields; import java.util.ArrayList; @@ -15,18 +17,25 @@ public class Board { private ArrayList players; private int currentPlayerIndex; //private StockExchange stockExchangeData; //To comment out when merged + private float x; + private float y; + private float length; + + private static final float BOARD_SIZING_FACTOR = 1f; public Board(){ players = new ArrayList<>(); + + // UI Properties + x = calcBoardPosition(Gdx.graphics.getWidth()); + y = calcBoardPosition(Gdx.graphics.getHeight()); + length = calcBoardSize(); + fields = BoardFields.getFields(x, y, length); + // stockExchangeData = new StockExchange(); //To comment out when merged // lottery = new Lottery(); //To comment out when merged // lottery.setLotteryAmount(0); //To comment out when merged - currentPlayerIndex = 0; - } - - public Field[] initFields(float boardX, float boardY, float boardLength) { - this.fields = BoardFields.getFields(boardX, boardY, boardLength); - return this.fields; + currentPlayerIndex = 0; } //-------GETTERS--------- @@ -35,6 +44,7 @@ public Field[] initFields(float boardX, float boardY, float boardLength) { public Field getCurrentPlayerField(){return players.get(currentPlayerIndex).getCurrentPosition();} public int[] getStartingFieldIndexes(){return startingFieldIndexes;} public Player getCurrentPlayer(){return players.get(currentPlayerIndex);} + public ArrayList getPlayers(){return players;} public Field getFieldByIndex(int fieldIndex){return fields[fieldIndex];} public Field[] getFields(){return fields;} //----------------------- @@ -53,4 +63,25 @@ public void addPlayer(Player p){ } //----------------------- + // UI Methods + public float getX() { + return x; + } + + public float getY() { + return y; + } + + public float getLength() { + return length; + } + + private float calcBoardPosition(int base) { + return base / 2f - (Gdx.graphics.getHeight() / BOARD_SIZING_FACTOR / 2); + } + + private float calcBoardSize() { + return Gdx.graphics.getHeight() / BOARD_SIZING_FACTOR; + } + } diff --git a/core/src/boardLogic/BoardFields.java b/core/src/boardLogic/BoardFields.java index f0641e9..d24007d 100644 --- a/core/src/boardLogic/BoardFields.java +++ b/core/src/boardLogic/BoardFields.java @@ -3,77 +3,162 @@ import fieldLogic.Field; public class BoardFields { - public static Field[] getFields(float boardX, float boardY, float boardLength) { + + private static Field[] initFields(float boardX, float boardY, float boardLength) { return new Field[]{ - new Field(1, boardX + (boardLength / 1.135f), boardLength / 15), - new Field(2, boardX + (boardLength / 14f), boardLength / 8.5f), - new Field(3, boardX + (boardLength / 8.5f), boardLength / 1.08f), - new Field(4, boardX + (boardLength / 1.08f), boardLength / 1.13f), - new Field(5, boardX + (boardLength / 1.22f), boardLength / 23), - new Field(6, boardX + (boardLength / 1.33f), boardLength / 19), - new Field(7, boardX + (boardLength / 1.45f), boardLength / 12), - new Field(8, boardX + (boardLength / 1.53f), boardLength / 7), - new Field(9, boardX + (boardLength / 1.545f), boardLength / 5), - new Field(10, boardX + (boardLength / 1.53f), boardLength / 3.9f), - new Field(11, boardX + (boardLength / 1.449f), boardLength / 3.2f), - new Field(12, boardX + (boardLength / 1.35f), boardLength / 2.9f), - new Field(13, boardX + (boardLength / 1.71f), boardLength / 5), - new Field(14, boardX + (boardLength / 2f), boardLength / 5), - new Field(15, boardX + (boardLength / 2.43f), boardLength / 5), - new Field(16, boardX + (boardLength / 2.83f), boardLength / 5), - new Field(17, boardX + (boardLength / 2.90f), boardLength / 7), - new Field(18, boardX + (boardLength / 3.25f), boardLength / 11.5f), - new Field(19, boardX + (boardLength / 4f), boardLength / 19), - new Field(20, boardX + (boardLength / 5.5f), boardLength / 23), - new Field(21, boardX + (boardLength / 9f), boardLength / 15), - new Field(22, boardX + (boardLength / 22f), boardLength / 5.5f), - new Field(23, boardX + (boardLength / 20f), boardLength / 4f), - new Field(24, boardX + (boardLength / 12f), boardLength / 3.3f), - new Field(25, boardX + (boardLength / 7f), boardLength / 2.9f), - new Field(26, boardX + (boardLength / 4.95f), boardLength / 2.85f), - new Field(27, boardX + (boardLength / 4.95f), boardLength / 2.4f), - new Field(28, boardX + (boardLength / 4.95f), boardLength / 2.14f), - new Field(29, boardX + (boardLength / 4.95f), boardLength / 1.89f), - new Field(30, boardX + (boardLength / 4.95f), boardLength / 1.7f), - new Field(31, boardX + (boardLength / 4.95f), boardLength / 1.55f), - new Field(32, boardX + (boardLength / 7f), boardLength / 1.53f), - new Field(33, boardX + (boardLength / 12f), boardLength / 1.45f), - new Field(34, boardX + (boardLength / 20f), boardLength / 1.33f), - new Field(35, boardX + (boardLength / 22f), boardLength / 1.22f), - new Field(36, boardX + (boardLength / 14f), boardLength / 1.13f), - new Field(37, boardX + (boardLength / 5.5f), boardLength / 1.05f), - new Field(38, boardX + (boardLength / 4f), boardLength / 1.06f), - new Field(39, boardX + (boardLength / 3.33f), boardLength / 1.105f), - new Field(40, boardX + (boardLength / 2.90f), boardLength / 1.17f), - new Field(41, boardX + (boardLength / 2.83f), boardLength / 1.26f), - new Field(42, boardX + (boardLength / 2.90f), boardLength / 1.36f), - new Field(43, boardX + (boardLength / 3.25f), boardLength / 1.455f), - new Field(44, boardX + (boardLength / 3.9f), boardLength / 1.52f), - new Field(45, boardX + (boardLength / 2.43f), boardLength / 1.26f), - new Field(46, boardX + (boardLength / 2.13f), boardLength / 1.26f), - new Field(47, boardX + (boardLength / 1.9f), boardLength / 1.26f), - new Field(48, boardX + (boardLength / 1.71f), boardLength / 1.26f), - new Field(49, boardX + (boardLength / 1.545f), boardLength / 1.26f), - new Field(50, boardX + (boardLength / 1.53f), boardLength / 1.17f), - new Field(51, boardX + (boardLength / 1.45f), boardLength / 1.105f), - new Field(52, boardX + (boardLength / 1.33f), boardLength / 1.06f), - new Field(53, boardX + (boardLength / 1.22f), boardLength / 1.05f), - new Field(54, boardX + (boardLength / 1.14f), boardLength / 1.08f), - new Field(55, boardX + (boardLength / 1.055f), boardLength / 1.22f), - new Field(56, boardX + (boardLength / 1.06f), boardLength / 1.33f), - new Field(57, boardX + (boardLength / 1.1f), boardLength / 1.44f), - new Field(58, boardX + (boardLength / 1.17f), boardLength / 1.52f), - new Field(59, boardX + (boardLength / 1.255f), boardLength / 1.56f), - new Field(60, boardX + (boardLength / 1.255f), boardLength / 1.71f), - new Field(61, boardX + (boardLength / 1.255f), boardLength / 1.9f), - new Field(62, boardX + (boardLength / 1.255f), boardLength / 2.13f), - new Field(63, boardX + (boardLength / 1.255f), boardLength / 2.43f), - new Field(64, boardX + (boardLength / 1.255f), boardLength / 2.85f), - new Field(65, boardX + (boardLength / 1.17f), boardLength / 2.9f), - new Field(66, boardX + (boardLength / 1.1f), boardLength / 3.3f), - new Field(67, boardX + (boardLength / 1.06f), boardLength / 4f), - new Field(68, boardX + (boardLength / 1.055f), boardLength / 5.5f), - new Field(69, boardX + (boardLength / 1.08f), boardLength / 9f) + new Field(0, boardX + (boardLength / 1.135f), boardLength / 15), + new Field(1, boardX + (boardLength / 14f), boardLength / 8.5f), + new Field(2, boardX + (boardLength / 8.5f), boardLength / 1.08f), + new Field(3, boardX + (boardLength / 1.08f), boardLength / 1.13f), + new Field(4, boardX + (boardLength / 1.22f), boardLength / 23), + new Field(5, boardX + (boardLength / 1.33f), boardLength / 19), + new Field(6, boardX + (boardLength / 1.45f), boardLength / 12), + new Field(7, boardX + (boardLength / 1.53f), boardLength / 7), + new Field(8, boardX + (boardLength / 1.545f), boardLength / 5), + new Field(9, boardX + (boardLength / 1.53f), boardLength / 3.9f), + new Field(10, boardX + (boardLength / 1.449f), boardLength / 3.2f), + new Field(11, boardX + (boardLength / 1.35f), boardLength / 2.9f), + new Field(12, boardX + (boardLength / 1.71f), boardLength / 5), + new Field(13, boardX + (boardLength / 2f), boardLength / 5), + new Field(14, boardX + (boardLength / 2.43f), boardLength / 5), + new Field(15, boardX + (boardLength / 2.83f), boardLength / 5), + new Field(16, boardX + (boardLength / 2.90f), boardLength / 7), + new Field(17, boardX + (boardLength / 3.25f), boardLength / 11.5f), + new Field(18, boardX + (boardLength / 4f), boardLength / 19), + new Field(19, boardX + (boardLength / 5.5f), boardLength / 23), + new Field(20, boardX + (boardLength / 9f), boardLength / 15), + new Field(21, boardX + (boardLength / 22f), boardLength / 5.5f), + new Field(22, boardX + (boardLength / 20f), boardLength / 4f), + new Field(23, boardX + (boardLength / 12f), boardLength / 3.3f), + new Field(24, boardX + (boardLength / 7f), boardLength / 2.9f), + new Field(25, boardX + (boardLength / 4.95f), boardLength / 2.85f), + new Field(26, boardX + (boardLength / 4.95f), boardLength / 2.4f), + new Field(27, boardX + (boardLength / 4.95f), boardLength / 2.14f), + new Field(28, boardX + (boardLength / 4.95f), boardLength / 1.89f), + new Field(29, boardX + (boardLength / 4.95f), boardLength / 1.7f), + new Field(30, boardX + (boardLength / 4.95f), boardLength / 1.55f), + new Field(31, boardX + (boardLength / 7f), boardLength / 1.53f), + new Field(32, boardX + (boardLength / 12f), boardLength / 1.45f), + new Field(33, boardX + (boardLength / 20f), boardLength / 1.33f), + new Field(34, boardX + (boardLength / 22f), boardLength / 1.22f), + new Field(35, boardX + (boardLength / 14f), boardLength / 1.13f), + new Field(36, boardX + (boardLength / 5.5f), boardLength / 1.05f), + new Field(37, boardX + (boardLength / 4f), boardLength / 1.06f), + new Field(38, boardX + (boardLength / 3.33f), boardLength / 1.105f), + new Field(39, boardX + (boardLength / 2.90f), boardLength / 1.17f), + new Field(40, boardX + (boardLength / 2.83f), boardLength / 1.26f), + new Field(41, boardX + (boardLength / 2.90f), boardLength / 1.36f), + new Field(42, boardX + (boardLength / 3.25f), boardLength / 1.455f), + new Field(43, boardX + (boardLength / 3.9f), boardLength / 1.52f), + new Field(44, boardX + (boardLength / 2.43f), boardLength / 1.26f), + new Field(45, boardX + (boardLength / 2.13f), boardLength / 1.26f), + new Field(46, boardX + (boardLength / 1.9f), boardLength / 1.26f), + new Field(47, boardX + (boardLength / 1.71f), boardLength / 1.26f), + new Field(48, boardX + (boardLength / 1.545f), boardLength / 1.26f), + new Field(49, boardX + (boardLength / 1.53f), boardLength / 1.17f), + new Field(50, boardX + (boardLength / 1.45f), boardLength / 1.105f), + new Field(51, boardX + (boardLength / 1.33f), boardLength / 1.06f), + new Field(52, boardX + (boardLength / 1.22f), boardLength / 1.05f), + new Field(53, boardX + (boardLength / 1.14f), boardLength / 1.08f), + new Field(54, boardX + (boardLength / 1.055f), boardLength / 1.22f), + new Field(55, boardX + (boardLength / 1.06f), boardLength / 1.33f), + new Field(56, boardX + (boardLength / 1.1f), boardLength / 1.44f), + new Field(57, boardX + (boardLength / 1.17f), boardLength / 1.52f), + new Field(58, boardX + (boardLength / 1.255f), boardLength / 1.56f), + new Field(59, boardX + (boardLength / 1.255f), boardLength / 1.71f), + new Field(60, boardX + (boardLength / 1.255f), boardLength / 1.9f), + new Field(61, boardX + (boardLength / 1.255f), boardLength / 2.13f), + new Field(62, boardX + (boardLength / 1.255f), boardLength / 2.43f), + new Field(63, boardX + (boardLength / 1.255f), boardLength / 2.85f), + new Field(64, boardX + (boardLength / 1.17f), boardLength / 2.9f), + new Field(65, boardX + (boardLength / 1.1f), boardLength / 3.3f), + new Field(66, boardX + (boardLength / 1.06f), boardLength / 4f), + new Field(67, boardX + (boardLength / 1.055f), boardLength / 5.5f), + new Field(68, boardX + (boardLength / 1.08f), boardLength / 9f) }; } + public static Field[] getFields(float boardX, float boardY, float boardLength) { + Field[] fields = initFields(boardX, boardY, boardLength); + connectFields(fields); + return fields; + } + + public static void connectFields(Field[] fields) { + fields[0].setNextField(fields[4]); + fields[0].setPreviousField(fields[68]); + fields[1].setNextField(fields[21]); + fields[1].setPreviousField(fields[20]); + fields[2].setNextField(fields[36]); + fields[2].setPreviousField(fields[35]); + fields[3].setNextField(fields[54]); + fields[3].setPreviousField(fields[53]); + for (int i = 4; i < fields.length; i++) { + switch(i){ + case 4: // Start Position 1 + fields[i].setNextField(fields[i+1]); + fields[i].setPreviousField(fields[0]); + break; + case 8: // Intersection 1 First 1 + fields[i].setNextField(fields[12]); + fields[i].setPreviousField(fields[i-1]); + break; + case 9: case 10: case 41: case 42: // Intersection Fields + fields[i].setNextField(fields[i-1]); + fields[i].setPreviousField(fields[i+1]); + break; + case 11: // Intersection 1 First 1 + fields[i].setNextField(fields[i-1]); + fields[i].setPreviousField(fields[63]); + break; + case 43: // Intersection 2 First 1 + fields[i].setNextField(fields[i-1]); + fields[i].setPreviousField(fields[30]); + break; + case 20: // Start Position 2 + fields[i].setNextField(fields[1]); + fields[i].setPreviousField(fields[i-1]); + break; + case 21: // Start Position 2 + fields[i].setNextField(fields[i+1]); + fields[i].setPreviousField(fields[1]); + break; + case 30: // Intersection 1 + fields[i].setNextField(fields[31]); + fields[i].setOptionalNextField(fields[43]); + break; + case 35: // Start Position 3 + fields[i].setNextField(fields[2]); + fields[i].setPreviousField(fields[i-1]); + break; + case 36: // Start Position 3 + fields[i].setNextField(fields[i+1]); + fields[i].setPreviousField(fields[2]); + break; + case 40: // Intersection 1 First 1 + fields[i].setNextField(fields[44]); + fields[i].setPreviousField(fields[i-1]); + break; + case 53: // Start Position 4 + fields[i].setNextField(fields[3]); + fields[i].setPreviousField(fields[i-1]); + break; + case 54: // Start Position 4 + fields[i].setNextField(fields[i+1]); + fields[i].setPreviousField(fields[3]); + break; + case 63: // Intersection 2 + fields[i].setNextField(fields[i+1]); + fields[i].setOptionalNextField(fields[11]); + break; + case 68: // Start Position 1 + fields[i].setNextField(fields[0]); + fields[i].setPreviousField(fields[i-1]); + break; + default: + fields[i].setPreviousField(fields[i-1]); + fields[i].setNextField(fields[i+1]); + break; + } + } + } } diff --git a/core/src/com/mankomania/game/MankomaniaGame.java b/core/src/com/mankomania/game/MankomaniaGame.java index 4a11107..f52c339 100644 --- a/core/src/com/mankomania/game/MankomaniaGame.java +++ b/core/src/com/mankomania/game/MankomaniaGame.java @@ -9,14 +9,16 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.utils.ScreenUtils; +import com.mankomania.game.screens.GameScreen; import com.mankomania.game.screens.LoadingScreen; import com.mankomania.game.screens.StartScreen; import boardLogic.Board; +import playerLogic.Player; public class MankomaniaGame extends Game { private static MankomaniaGame game; - public Board board; + private Board board; public static MankomaniaGame getInstance() { if (game == null) { @@ -25,18 +27,17 @@ public static MankomaniaGame getInstance() { return game; } - public MankomaniaGame() { - board = new Board(); - } - @Override public void create() { + board = new Board(); + Gdx.input.setInputProcessor(new InputMultiplexer()); Screen currentScreen = this.getScreen(); ScreenAdapter loadingScreen = new LoadingScreen(new StartScreen()); this.setScreen(loadingScreen); + if (currentScreen != null) { currentScreen.dispose(); } @@ -56,6 +57,10 @@ public static void renderMenu(Stage stage, SpriteBatch batch, float delta, Textu stage.draw(); } + public Board getBoard() { + return board; + } + @Override public void dispose() { this.dispose(); diff --git a/core/src/com/mankomania/game/screens/GameScreen.java b/core/src/com/mankomania/game/screens/GameScreen.java index e3cca95..d476e7b 100644 --- a/core/src/com/mankomania/game/screens/GameScreen.java +++ b/core/src/com/mankomania/game/screens/GameScreen.java @@ -19,20 +19,19 @@ import com.mankomania.game.DiceAnimation; import com.mankomania.game.MankomaniaGame; +import java.util.ArrayList; + +import boardLogic.Board; import fieldLogic.Field; +import playerLogic.Player; public class GameScreen extends ScreenAdapter { private final Texture gameBoard; private final Stage stage; - private final SpriteBatch batch; private final Skin skin; private final float boxWidth; private final float boxHeight; private final Dialog turnDialog; - private final float boardX; - private final float boardY; - private final float boardLength; - private InputMultiplexer inputMultiplexer; private Texture p1Card; @@ -47,7 +46,6 @@ public class GameScreen extends ScreenAdapter { private String turnDialogPlayerMoney; private boolean turnDialogIsCurrentPlayer; - private static final float BOARD_SIZING_FACTOR = 1f; private static final float BOARD_PLAYER_BOX_WIDTH_FACTOR = 4.5f; private static final float BOARD_PLAYER_BOX_HEIGHT_FACTOR = 4f; private static final float BOARD_PLAYER_MONEY_FACTOR = 4.5f; @@ -58,14 +56,13 @@ public class GameScreen extends ScreenAdapter { private float elapsed; public GameScreen() { + stage = new Stage(); gameBoard = new Texture("board.jpg"); p1Card = new Texture("P1.png"); p2Card = new Texture("P2.png"); p3Card = new Texture("P3.png"); p4Card = new Texture("P4.png"); turnBox = new Texture("turnBox.png"); - stage = new Stage(); - batch = new SpriteBatch(); skin = new Skin(Gdx.files.internal("skin/comic-ui.json")); boxWidth = calcWidthFactor(BOARD_PLAYER_BOX_WIDTH_FACTOR); boxHeight = calcHeightFactor(BOARD_PLAYER_BOX_HEIGHT_FACTOR); @@ -80,18 +77,18 @@ public GameScreen() { inputMultiplexer.addProcessor(stage); } - boardX = calcBoardPosition(Gdx.graphics.getWidth()); - boardY = calcBoardPosition(Gdx.graphics.getHeight()); - boardLength = calcBoardSize(); - MankomaniaGame game = MankomaniaGame.getInstance(); - if (game.board.getFields() == null) { - game.board.initFields(boardX, boardY, boardLength); + ArrayList players = MankomaniaGame.getInstance().getBoard().getPlayers(); + for (int i = 0; i < players.size(); i++) { + stage.addActor(players.get(i)); } } @Override public void render(float delta) { + stage.getBatch().begin(); + ScreenUtils.clear(0.9f, 0.9f, 0.9f, 1); + Board board = MankomaniaGame.getInstance().getBoard(); if (elapsed >= duration){ diceAnimation.removeDice(); diceAnimation.setDiceShown(false); @@ -100,16 +97,14 @@ public void render(float delta) { if(diceAnimation.getDiceShown()){ elapsed+=delta; } - stage.act(delta); - ScreenUtils.clear(0.9f, 0.9f, 0.9f, 1); - batch.begin(); - drawGameBoard(); + drawGameBoard(board); drawPlayerInformation(); - batch.end(); + stage.getBatch().end(); if (!turnDialogIsShown && turnDialogNeeded) { drawTurnDialog(); turnDialogIsShown = true; } + stage.act(delta); stage.draw(); } @@ -125,22 +120,14 @@ public void hideTurnDialog() { this.turnDialog.hide(); } - private void drawGameBoard() { - batch.draw( + private void drawGameBoard(Board board) { + stage.getBatch().draw( gameBoard, - boardX, - boardY, - boardLength, - boardLength + board.getX(), + board.getY(), + board.getLength(), + board.getLength() ); - drawFields(); - } - - private void drawFields() { - Field[] fields = MankomaniaGame.getInstance().board.getFields(); - for (int i = 0; i < fields.length; i++) { - batch.draw(turnBox, fields[i].getX() - 10, fields[i].getY() - 10, 20, 20); - } } private void drawPlayerInformation() { @@ -161,9 +148,9 @@ private float calcHeightFactor(float factor) { private void drawPlayerBox(float x, float y, String playerName, Texture playerCard) { if (playerName.equals(turnDialogPlayerName)) { - batch.draw(turnBox, x, y, boxWidth, boxHeight); + stage.getBatch().draw(turnBox, x, y, boxWidth, boxHeight); } - batch.draw(playerCard, x, y, boxWidth, boxHeight); + stage.getBatch().draw(playerCard, x, y, boxWidth, boxHeight); } private void drawPlayerMetadata(int money) { @@ -211,14 +198,6 @@ private void drawTurnDialog() { turnDialog.setPosition(dialogXPosition, dialogYPosition); } - private float calcBoardPosition(int base) { - return base / 2f - (Gdx.graphics.getHeight() / BOARD_SIZING_FACTOR / 2); - } - - private float calcBoardSize() { - return Gdx.graphics.getHeight() / BOARD_SIZING_FACTOR; - } - public ClickListener startTurnListener(){ return new ClickListener() { diff --git a/core/src/fieldLogic/Field.java b/core/src/fieldLogic/Field.java index 58b4ce5..becd715 100644 --- a/core/src/fieldLogic/Field.java +++ b/core/src/fieldLogic/Field.java @@ -8,17 +8,14 @@ public class Field { private Field nextField; private Field optionalNextField; private Field previousField; - private final String fieldDescription; - private final FieldColor color; private final int fieldIndex; + private final float x; + private final float y; - public Field(int fieldIndex, String fieldDescription, FieldColor color){ + public Field(int fieldIndex, float x, float y){ this.fieldIndex = fieldIndex; - this.nextField = null; - this.optionalNextField = null; - this.previousField = null; - this.fieldDescription = fieldDescription; - this.color = color; + this.x = x; + this.y = y; } @@ -37,8 +34,8 @@ public boolean hasPlayer(ArrayList players) { public Field getNextField(){return nextField;} public Field getOptionalNextField(){return optionalNextField;} public Field getPreviousField(){return previousField;} - public String getFieldDescription(){return fieldDescription;} - public FieldColor getColor(){return color;} + public float getX(){return x;} + public float getY(){return y;} //----------------------- //--------SETTERS-------- public void setNextField(Field field){ diff --git a/core/src/playerLogic/Player.java b/core/src/playerLogic/Player.java index 349751f..6fe1b0c 100644 --- a/core/src/playerLogic/Player.java +++ b/core/src/playerLogic/Player.java @@ -1,5 +1,10 @@ package playerLogic; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.scenes.scene2d.Actor; +import com.badlogic.gdx.scenes.scene2d.actions.MoveToAction; import com.badlogic.gdx.utils.IntArray; import java.security.SecureRandom; @@ -8,69 +13,118 @@ import fieldLogic.Field; import shareLogic.Share; -public class Player { +public class Player extends Actor { + private static float SIZE = Gdx.graphics.getHeight() / 15; + private int playerIndex; private int money; private Field currentPosition; private SecureRandom secRand = new SecureRandom(); - // private IntArray movePath; - private HashMap shares; + // private IntArray movePath; + private HashMap shares; + private Texture playerTexture; - public Player(){ + public Player() { } - public Player(Field startingField, int playerIndex){ + + public Player(Field startingField, int playerIndex) { money = 1000000; - // movePath = new IntArray(); + // movePath = new IntArray(); shares = new HashMap<>(); setInitialRandomShares(secRand.nextInt(3 - 1) + 1); this.playerIndex = playerIndex; - this.currentPosition = startingField; - + currentPosition = startingField; + this.setX(currentPosition.getX()); + this.setY(currentPosition.getY()); + playerTexture = new Texture("player.png"); } //--------GETTERS----------- public int getPlayerIndex() { return playerIndex; } + public int getMoney() { return money; } - public int getAmountOfShare(Share shareName){return shares.get(shareName);} - public Field getCurrentPosition(){return currentPosition;} + + public int getAmountOfShare(Share shareName) { + return shares.get(shareName); + } + + public Field getCurrentPosition() { + return currentPosition; + } + //-------------------------- //--------SETTERS----------- - public void setCurrentFieldPosition(Field field){ + public void setCurrentFieldPosition(Field field) { this.currentPosition = field; } - public void setPlayerIndex(int playerIndex){ + + public void setPlayerIndex(int playerIndex) { this.playerIndex = playerIndex; } + public void setMoney(int money) { this.money = money; } - public void setInitialRandomShares(int share_Index){ - switch(share_Index){ - case 1: shares.put(Share.DRY_OIL_PLC,0); - shares.put(Share.SHORT_CIRCUIT_PLC,0); + public void setInitialRandomShares(int share_Index) { + switch (share_Index) { + case 1: + shares.put(Share.DRY_OIL_PLC, 0); + shares.put(Share.SHORT_CIRCUIT_PLC, 0); - case 2:shares.put(Share.DRY_OIL_PLC,0); - shares.put(Share.HARD_STEEL_PLC,0); + case 2: + shares.put(Share.DRY_OIL_PLC, 0); + shares.put(Share.HARD_STEEL_PLC, 0); - case 3:shares.put(Share.HARD_STEEL_PLC,0); - shares.put(Share.SHORT_CIRCUIT_PLC,0); + case 3: + shares.put(Share.HARD_STEEL_PLC, 0); + shares.put(Share.SHORT_CIRCUIT_PLC, 0); } } //-------------------------- //-----MONEY UPDATING------- - public void addMoney(int amount){money += amount;} - public void loseMoney(int amount){money -= amount;} + public void addMoney(int amount) { + money += amount; + } + + public void loseMoney(int amount) { + money -= amount; + } + //-------------------------- - public void payToPlayer(Player player, int amount){ + public void payToPlayer(Player player, int amount) { money -= amount; player.addMoney(amount); } + public void moveForward(boolean moveToOptional) { + this.clearActions(); + Field nextField; + if (moveToOptional && currentPosition.getOptionalNextField() != null) { + nextField = currentPosition.getOptionalNextField(); + } else { + nextField = currentPosition.getNextField(); + } + + MoveToAction moveAction = new MoveToAction(); + moveAction.setPosition(nextField.getX(), nextField.getY()); + moveAction.setDuration(0.2f); + currentPosition = nextField; + this.addAction(moveAction); + } + + @Override + public void draw(Batch batch, float parentAlpha) { + batch.draw(playerTexture, this.getX() - (SIZE / 2), this.getY() - (SIZE / 2), SIZE, SIZE); + } + + public void dispose() { + playerTexture.dispose(); + } }