finished dialogue system

This commit is contained in:
2025-11-28 20:05:19 +01:00
parent dada9e4f2f
commit 4a9eefa416
6 changed files with 32 additions and 21 deletions

View File

@@ -37,7 +37,7 @@ public class GamePanel extends JPanel implements Runnable {
// SYSTEM // SYSTEM
public TileManager tileM = new TileManager(this); public TileManager tileM = new TileManager(this);
KeyHandler keyH = new KeyHandler(this); public KeyHandler keyH = new KeyHandler(this);
Sound se = new Sound(); Sound se = new Sound();
Sound music = new Sound(); Sound music = new Sound();
public CollisionHandler collisionH = new CollisionHandler(this); public CollisionHandler collisionH = new CollisionHandler(this);

View File

@@ -51,10 +51,14 @@ public class UI {
int height = panel.tileSize*4; int height = panel.tileSize*4;
drawSubWindow(x, y, width, height); drawSubWindow(x, y, width, height);
graphics2d.setFont(graphics2d.getFont().deriveFont(Font.PLAIN, 23)); graphics2d.setFont(graphics2d.getFont().deriveFont(Font.PLAIN, 28F));
x += panel.tileSize; x += panel.tileSize;
y += panel.tileSize; y += panel.tileSize;
graphics2d.drawString(currentDialogue, x, y);
for(String line : currentDialogue.split("\n")) {
graphics2d.drawString(line, x, y);
y += 40;
}
} }
public void drawSubWindow(int x, int y, int width, int height) { public void drawSubWindow(int x, int y, int width, int height) {

View File

@@ -8,7 +8,7 @@ import java.awt.event.KeyListener;
public class KeyHandler implements KeyListener { public class KeyHandler implements KeyListener {
public boolean upPressed, downPressed, leftPressed, rightPressed; public boolean upPressed, downPressed, leftPressed, rightPressed, spacePressed;
public GamePanel panel; public GamePanel panel;
// DEBUG // DEBUG
public boolean checkDrawTime = false; public boolean checkDrawTime = false;
@@ -31,6 +31,7 @@ public class KeyHandler implements KeyListener {
case KeyEvent.VK_S, KeyEvent.VK_DOWN -> downPressed = true; case KeyEvent.VK_S, KeyEvent.VK_DOWN -> downPressed = true;
case KeyEvent.VK_A, KeyEvent.VK_LEFT -> leftPressed = true; case KeyEvent.VK_A, KeyEvent.VK_LEFT -> leftPressed = true;
case KeyEvent.VK_D, KeyEvent.VK_RIGHT -> rightPressed = true; case KeyEvent.VK_D, KeyEvent.VK_RIGHT -> rightPressed = true;
case KeyEvent.VK_SPACE -> spacePressed = true;
// DEBUG OPTIONS // DEBUG OPTIONS
case KeyEvent.VK_T -> checkDrawTime = !checkDrawTime; case KeyEvent.VK_T -> checkDrawTime = !checkDrawTime;

View File

@@ -33,7 +33,20 @@ public class Entity {
} }
public void setAction() {} public void setAction() {}
public void speak() {}
public void speak() {
if(dialogue[dialogueIndex] == null) dialogueIndex = 0;
panel.ui.currentDialogue = dialogue[dialogueIndex];
dialogueIndex++;
switch(panel.player.direction) {
case UP -> direction = Direction.DOWN;
case DOWN -> direction = Direction.UP;
case LEFT -> direction = Direction.RIGHT;
case RIGHT -> direction = Direction.LEFT;
}
}
public void update() { public void update() {
setAction(); setAction();
collisionOn = false; collisionOn = false;

View File

@@ -29,8 +29,8 @@ public class OldManNPC extends Entity {
public void setDialogue() { public void setDialogue() {
dialogue[0] = "Hello, lad."; dialogue[0] = "Hello, lad.";
dialogue[1] = "So you've come to this island to find the treasure?"; dialogue[1] = "So you've come to this island to \nfind the treasure?";
dialogue[2] = "I used to be a great wizard but now... I'm a bit too old for taking an adventure"; dialogue[2] = "I used to be a great wizard but now... \nI'm a bit too old for taking an \nadventure";
dialogue[3] = "Well, good luck on you."; dialogue[3] = "Well, good luck on you.";
} }
@@ -45,18 +45,4 @@ public class OldManNPC extends Entity {
if(i > 75) direction = Direction.RIGHT; if(i > 75) direction = Direction.RIGHT;
actionLock = 0; actionLock = 0;
} }
public void speak() {
if(dialogue[dialogueIndex] == null) dialogueIndex = 0;
panel.ui.currentDialogue = dialogue[dialogueIndex];
dialogueIndex++;
switch(panel.player.direction) {
case UP -> direction = Direction.DOWN;
case DOWN -> direction = Direction.UP;
case LEFT -> direction = Direction.RIGHT;
case RIGHT -> direction = Direction.LEFT;
}
}
} }

View File

@@ -95,12 +95,19 @@ public class Player extends Entity {
public void interactNPC(int index) { public void interactNPC(int index) {
if(index == 999) return; if(index == 999) return;
//if(!panel.keyH.spacePressed) return; //Only uncomment if text should only appear if player hits space
panel.gameState = GameState.DIALOGUE; panel.gameState = GameState.DIALOGUE;
panel.npc[index].speak(); panel.npc[index].speak();
panel.keyH.spacePressed = false;
} }
public void draw(Graphics2D graphics2d) { public void draw(Graphics2D graphics2d) {
graphics2d.drawImage(parseSprite(), screenX, screenY, null); graphics2d.drawImage(parseSprite(), screenX, screenY, null);
} }
public void speak() {
//This method only exists for character specific things later...
super.speak();
}
} }