Files
JGame2D/src/de/miaurizius/jgame2d/entity/Player.java
2025-11-28 16:34:40 +01:00

101 lines
3.0 KiB
Java

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);
}
}