From fe26c446aedd77a035248d059a7f4d18ab70b1a9 Mon Sep 17 00:00:00 2001 From: Scherbaum Maximilian <ms622@hdm-stuttgart.de> Date: Thu, 23 Nov 2023 15:23:47 +0100 Subject: [PATCH] update IEntity.java, update Player.java #6 --- .../battlearena/Model/Entity/IEntity.java | 15 +- .../battlearena/Model/Entity/Player.java | 139 +++++++++++++++++- 2 files changed, 152 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java index fd7bbc62..a8e2b2d1 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java @@ -1,4 +1,17 @@ package de.hdm_stuttgart.battlearena.Model.Entity; +import javafx.scene.canvas.GraphicsContext; + public interface IEntity { -} + + void initializeEntity(); + + void loadEntitySprites(); + + void updateEntityMovement(); + + void updateEntityAnimation(); + + void renderEntity(GraphicsContext graphicsContext); + +} \ No newline at end of file diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java index 0384286b..5c1d0ab7 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java @@ -1,10 +1,147 @@ package de.hdm_stuttgart.battlearena.Model.Entity; +import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler; + +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.image.Image; +import javafx.scene.shape.Rectangle; + import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import java.util.Objects; + public class Player implements IEntity { private static final Logger log = LogManager.getLogger(Player.class); -} + InputHandler inputHandler; + + GraphicsContext gameScene; + + private final Rectangle boxCollider = new Rectangle(8, 16, 32, 32); + + private Image directionDownOne, directionDownTwo; + + private int spriteCounter = 0; + private int spriteNumber = 1; + + private int mapPosX; + private int mapPosY; + private int playerSpeed; + private String playerDirection; + + public Player(GraphicsContext gameScene, InputHandler inputHandler) { + this.gameScene = gameScene; + this.inputHandler = inputHandler; + + initializeEntity(); + loadEntitySprites(); + } + + @Override + public void initializeEntity() { + mapPosX = 10; + mapPosY = 10; + playerSpeed = 3; + playerDirection = "down"; + } + + @Override + public void loadEntitySprites() { + try { + directionDownOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("textures/player/playerPlaceholder.png"))); + directionDownTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("textures/player/playerPlaceholder.png"))); + } catch (Exception e) { + log.error(e); + } + } + + @Override + public void updateEntityMovement() { + if (inputHandler.isMoveUp() || inputHandler.isMoveDown() || inputHandler.isMoveLeft() || inputHandler.isMoveRight()) { + if (inputHandler.isMoveUp()) { + playerDirection = "up"; + } else if (inputHandler.isMoveDown()) { + playerDirection = "down"; + } else if (inputHandler.isMoveLeft()) { + playerDirection = "left"; + } else { + playerDirection = "right"; + } + } + + boolean isColliding = false; + + if (!isColliding) { + switch (playerDirection) { + case "up": + mapPosY -= playerSpeed; + break; + case "down": + mapPosY += playerSpeed; + break; + case "left": + mapPosX -= playerSpeed; + break; + case "right": + mapPosX += playerSpeed; + } + } + + updateEntityAnimation(); + + } + + @Override + public void updateEntityAnimation() { + spriteCounter++; + + if (spriteCounter > 10) { + if (spriteNumber == 1) { + spriteNumber = 2; + } else if (spriteNumber == 2) { + spriteNumber = 1; + } + spriteCounter = 0; + } + } + + @Override + public void renderEntity(GraphicsContext graphicsContext) { + Image playerSprite = null; + + switch (playerDirection) { + case "up": + if (spriteNumber == 1) { + playerSprite = directionDownOne; + } + if (spriteNumber == 2) { + playerSprite = directionDownTwo; + } + case "down": + if (spriteNumber == 1) { + playerSprite = directionDownOne; + } + if (spriteNumber == 2) { + playerSprite = directionDownTwo; + } + case "left": + if (spriteNumber == 1) { + playerSprite = directionDownOne; + } + if (spriteNumber == 2) { + playerSprite = directionDownTwo; + } + case "right": + if (spriteNumber == 1) { + playerSprite = directionDownOne; + } + if (spriteNumber == 2) { + playerSprite = directionDownTwo; + } + } + + graphicsContext.drawImage(playerSprite, mapPosX, mapPosY, 48, 48); + } +} \ No newline at end of file -- GitLab