Skip to content
Snippets Groups Projects
Commit ed1a18b6 authored by Scherbaum Maximilian's avatar Scherbaum Maximilian
Browse files

update: player textures, fix: hit detection #36 #18

parent 7bf0aa77
Branches
No related tags found
3 merge requests!74V1,!73Initial commit,!71Merge DataBase into Development
package de.hdm_stuttgart.battlearena.Controller;
import de.hdm_stuttgart.battlearena.Model.Entity.EntityClass;
import de.hdm_stuttgart.battlearena.Model.Entity.EntityFactory;
import de.hdm_stuttgart.battlearena.Model.Entity.EntityType;
import de.hdm_stuttgart.battlearena.Model.Entity.IEntity;
......@@ -32,6 +33,9 @@ public class GameSceneController implements Initializable {
IEntity player;
IEntity enemy;
EntityClass playerClass = EntityClass.HUMAN;
EntityClass enemyClass = EntityClass.HUMAN;
TileManager tileManager;
//map data
......@@ -63,8 +67,8 @@ public class GameSceneController implements Initializable {
graphicsContext2D = canvas2D.getGraphicsContext2D();
graphicsContext2D.setImageSmoothing(false);
player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler);
enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler);
player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler, playerClass);
enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler, enemyClass);
tileManager = new TileManager(graphicsContext2D, diffTileCount, horizontalTileCount, verticalTileCount, mapString);
......@@ -72,8 +76,8 @@ public class GameSceneController implements Initializable {
@Override
public void handle(long l) {
graphicsContext2D.clearRect(0, 0, canvas2D.getWidth(), canvas2D.getHeight());
updateContent();
renderContent(graphicsContext2D);
updateContent();
}
};
gameLoop.start();
......
......@@ -19,6 +19,8 @@ class EnemyHandler implements IEntity{
private int entitySpeed = 3;
private int health = 10;
@Override
public void initializeEntity() {
......@@ -65,4 +67,11 @@ class EnemyHandler implements IEntity{
return 3;
}
@Override
public int gotHit(int damageDone) {
log.debug(health);
return health -= damageDone;
}
}
\ No newline at end of file
package de.hdm_stuttgart.battlearena.Model.Entity;
public enum EntityClass {
HUMAN,
HIGH_BORN,
LOW_BORN,
SENTINELS
}
\ No newline at end of file
......@@ -11,10 +11,10 @@ public class EntityFactory {
private static final Logger log = LogManager.getLogger(EntityFactory.class);
public static IEntity createEntity(EntityType entityType, GraphicsContext gameScene, InputHandler inputHandler) {
public static IEntity createEntity(EntityType entityType, GraphicsContext gameScene, InputHandler inputHandler, EntityClass entityClass) {
if (entityType == EntityType.PLAYER) {
log.debug("Entity " + entityType + " created");
return new Player(gameScene, inputHandler);
return new Player(gameScene, inputHandler, entityClass);
} else if (entityType == EntityType.ENEMY_PLAYER) {
log.debug("Entity " + entityType + " created");
return new EnemyHandler();
......
......@@ -24,4 +24,6 @@ public interface IEntity {
int getEntitySpeed();
int gotHit(int damageDone);
}
\ No newline at end of file
......@@ -37,6 +37,8 @@ class Player implements IEntity {
swordLeft,
swordRight;
private final EntityClass entityClass;
private int spriteCounter = 0;
private int spriteNumber = 1;
......@@ -48,9 +50,13 @@ class Player implements IEntity {
private int playerSpeed;
private EntityDirection playerDirection;
public Player(GraphicsContext gameScene, InputHandler inputHandler) {
private int health = 10;
private int damage = 1;
public Player(GraphicsContext gameScene, InputHandler inputHandler, EntityClass entityClass) {
this.gameScene = gameScene;
this.inputHandler = inputHandler;
this.entityClass = entityClass;
initializeEntity();
loadEntitySprites();
......@@ -68,23 +74,75 @@ class Player implements IEntity {
@Override
public void loadEntitySprites() {
try {
directionDownOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/downOne.png")));
directionDownTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/downTwo.png")));
directionUpOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upOne.png")));
directionUpTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upTwo.png")));
directionLeftOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftOne.png")));
directionLeftTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftTwo.png")));
directionRightOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightOne.png")));
directionRightTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightTwo.png")));
swordUp = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordUp.png")));
swordDown = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordDown.png")));
swordLeft = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordLeft.png")));
swordRight = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordRight.png")));
if (entityClass == EntityClass.HUMAN) {
loadHumanSprites();
loadWeaponSprites();
} else if (entityClass == EntityClass.HIGH_BORN) {
loadHighBornSprites();
loadWeaponSprites();
} else if (entityClass == EntityClass.LOW_BORN) {
loadLowBornSprites();
loadWeaponSprites();
} else {
loadSentinelsSprites();
loadWeaponSprites();
}
} catch (Exception e) {
log.error(e);
}
}
private void loadHumanSprites() {
directionDownOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown01.png")));
directionDownTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown02.png")));
directionUpOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upOne.png")));
directionUpTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upTwo.png")));
directionLeftOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftOne.png")));
directionLeftTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftTwo.png")));
directionRightOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightOne.png")));
directionRightTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightTwo.png")));
}
private void loadHighBornSprites() {
directionDownOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown01.png")));
directionDownTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown02.png")));
directionUpOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upOne.png")));
directionUpTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upTwo.png")));
directionLeftOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftOne.png")));
directionLeftTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftTwo.png")));
directionRightOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightOne.png")));
directionRightTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightTwo.png")));
}
private void loadLowBornSprites() {
directionDownOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown01.png")));
directionDownTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown02.png")));
directionUpOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upOne.png")));
directionUpTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upTwo.png")));
directionLeftOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftOne.png")));
directionLeftTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftTwo.png")));
directionRightOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightOne.png")));
directionRightTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightTwo.png")));
}
private void loadSentinelsSprites() {
directionDownOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown01.png")));
directionDownTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/HumanDown02.png")));
directionUpOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upOne.png")));
directionUpTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/upTwo.png")));
directionLeftOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftOne.png")));
directionLeftTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/leftTwo.png")));
directionRightOne = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightOne.png")));
directionRightTwo = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/player/rightTwo.png")));
}
private void loadWeaponSprites() {
swordUp = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordUp.png")));
swordDown = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordDown.png")));
swordLeft = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordLeft.png")));
swordRight = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/weapons/SwordRight.png")));
}
@Override
public void updateEntityMovement(GameSceneController gameScene) {
if (inputHandler.isMoveUp() || inputHandler.isMoveDown() || inputHandler.isMoveLeft() || inputHandler.isMoveRight()) {
......@@ -144,6 +202,9 @@ class Player implements IEntity {
@Override
public void attack(IEntity entity, GraphicsContext graphicsContext) {
BoundingBox hitBox;
//Added and subtracted numbers from variables are the pixel insets of the player sprite
int attackRange = 30;
int attackWidth = 10;
......@@ -153,7 +214,7 @@ class Player implements IEntity {
graphicsContext.strokeRect(mapPosX+playerWidth, mapPosY-10, attackWidth, attackRange);
graphicsContext.drawImage(swordUp, mapPosX+8, mapPosY-10, 32, 32);
if (hitBox.intersects(entity.getBoxCollider())) {
//todo: implement health
entity.gotHit(damage);
graphicsContext.strokeText("Hit", 10, 10);
}
} else if (playerDirection == EntityDirection.DOWN) {
......@@ -161,7 +222,7 @@ class Player implements IEntity {
graphicsContext.strokeRect(mapPosX+playerWidth, mapPosY+playerHeight, attackWidth, attackRange);
graphicsContext.drawImage(swordDown, mapPosX+8, mapPosY+playerHeight, 32, 32);
if (hitBox.intersects(entity.getBoxCollider())) {
//todo: implement health
entity.gotHit(damage);
graphicsContext.strokeText("Hit", 10, 10);
}
} else if (playerDirection == EntityDirection.LEFT) {
......@@ -171,7 +232,7 @@ class Player implements IEntity {
attackRange, attackWidth);
graphicsContext.drawImage(swordLeft, mapPosX-8, mapPosY+8, 32, 32);
if (hitBox.intersects(entity.getBoxCollider())) {
//todo: implement health
entity.gotHit(damage);
graphicsContext.strokeText("Hit", 10, 10);
}
} else {
......@@ -181,7 +242,7 @@ class Player implements IEntity {
attackRange, attackWidth);
graphicsContext.drawImage(swordRight, mapPosX+playerWidth+8, mapPosY+8, 32, 32);
if (hitBox.intersects(entity.getBoxCollider())) {
//todo: implement health
entity.gotHit(damage);
graphicsContext.strokeText("Hit", 10, 10);
}
}
......@@ -262,6 +323,11 @@ class Player implements IEntity {
return playerSpeed;
}
@Override
public int gotHit(int damageDone) {
return health -= damageDone;
}
public int getMapPosX() {
return mapPosX;
}
......
src/main/resources/textures/player/HumanDown01.png

1.82 KiB

src/main/resources/textures/player/HumanDown02.png

1.87 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment