101 lines
3.0 KiB
Java
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);
|
|
}
|
|
|
|
}
|