package de.miaurizius.jgame2d.entity; import de.miaurizius.jgame2d.core.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; public class Player extends Entity { KeyHandler keyH; public final int screenX; public final int screenY; public Player(GamePanel panel, KeyHandler keyH) { super(panel); this.keyH = keyH; screenX = panel.screenWidth/2 - panel.tileSize/2; screenY = panel.screenHeight/2 - panel.tileSize/2; solidArea = new Rectangle(); solidArea.x = 12; solidArea.y = 20; solidAreaDefaultX = solidArea.x; solidAreaDefaultY = solidArea.y; solidArea.width = 24; solidArea.height = 24; setDefaultValues(); getPlayerImage(); } public void setDefaultValues() { worldX = panel.tileSize * 23; worldY = panel.tileSize * 21; speed = 4; direction = Direction.DOWN; } public void getPlayerImage() { up1 = initEntitySprites("player/boy_up_1"); up2 = initEntitySprites("player/boy_up_2"); down1 = initEntitySprites("player/boy_down_1"); down2 = initEntitySprites("player/boy_down_2"); left1 = initEntitySprites("player/boy_left_1"); left2 = initEntitySprites("player/boy_left_2"); right1 = initEntitySprites("player/boy_right_1"); right2 = initEntitySprites("player/boy_right_2"); } public void update() { //Move player if(keyH.upPressed || keyH.downPressed || keyH.leftPressed || keyH.rightPressed) { if(keyH.upPressed) direction = Direction.UP; else if(keyH.downPressed) direction = Direction.DOWN; else if(keyH.leftPressed) direction = Direction.LEFT; else if(keyH.rightPressed) direction = Direction.RIGHT; // CHECK TILE COLLISION collisionOn = false; panel.collisionH.checkTile(this); int objIndex = panel.collisionH.checkObject(this, true); pickObject(objIndex); if(!collisionOn) { switch (direction) { case UP -> worldY -= speed; case DOWN -> worldY += speed; case LEFT ->worldX -= speed; case RIGHT -> worldX += speed; } } spriteCounter++; if(spriteCounter > 12) { if(spriteNum == 1) spriteNum = 2; else if(spriteNum == 2) spriteNum = 1; else spriteNum = 0; } } } public void pickObject(int index) { if(index == 999) return; } public void draw(Graphics2D graphics2d) { BufferedImage image = switch (direction) { case UP -> (spriteNum == 1) ? up1 : up2; case DOWN -> (spriteNum == 1) ? down1 : down2; case LEFT -> (spriteNum == 1) ? left1 : left2; case RIGHT -> (spriteNum == 1) ? right1 : right2; }; graphics2d.drawImage(image, screenX, screenY, null); } }