From e5b86cd7783dd9450e8b0cbbd5a69cbc9bcb84a2 Mon Sep 17 00:00:00 2001 From: "Maurice L." Date: Mon, 23 Mar 2026 23:11:08 +0100 Subject: [PATCH] implement dialogue progression and text display for NPC interactions --- src/de/miaurizius/jgame2d/core/UI.java | 11 +++++++++++ src/de/miaurizius/jgame2d/entity/npc/OldManNPC.java | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/src/de/miaurizius/jgame2d/core/UI.java b/src/de/miaurizius/jgame2d/core/UI.java index 9fdfd19..2b1d581 100644 --- a/src/de/miaurizius/jgame2d/core/UI.java +++ b/src/de/miaurizius/jgame2d/core/UI.java @@ -28,6 +28,8 @@ public class UI { public int npcSlotCol, npcSlotRow; private int transCount; private int sleepCount; + private int charIndex; + private String combinedText; // SUB-STATES public TradeState tradeState = TradeState.SELECT; @@ -296,7 +298,16 @@ public class UI { if(tradingNPC.dialogue[tradingNPC.dialogueSet][tradingNPC.dialogueIndex] != null) { currentDialogue = tradingNPC.dialogue[tradingNPC.dialogueSet][tradingNPC.dialogueIndex]; + char[] characters = tradingNPC.dialogue[tradingNPC.dialogueSet][tradingNPC.dialogueIndex].toCharArray(); + if(charIndex < characters.length) { + String s = String.valueOf(characters[charIndex]); + combinedText = combinedText + s; + currentDialogue = combinedText; + charIndex++; + } if(panel.keyH.spacePressed) { + charIndex = 0; + combinedText = ""; if(panel.gameState == GameState.DIALOGUE) { tradingNPC.dialogueIndex++; panel.keyH.spacePressed = false; diff --git a/src/de/miaurizius/jgame2d/entity/npc/OldManNPC.java b/src/de/miaurizius/jgame2d/entity/npc/OldManNPC.java index 1cdea02..1e4f8c1 100644 --- a/src/de/miaurizius/jgame2d/entity/npc/OldManNPC.java +++ b/src/de/miaurizius/jgame2d/entity/npc/OldManNPC.java @@ -20,6 +20,8 @@ public class OldManNPC extends Entity { getImage(); setDialogue(); + dialogueSet = -1; + solidArea.x = 8; solidArea.y = 16; solidAreaDefaultX = solidArea.x; @@ -50,6 +52,8 @@ public class OldManNPC extends Entity { public void speak() { super.facePlayer(); super.startDialogue(this,super.dialogueSet); + dialogueSet++; + if(dialogue[dialogueSet][0] == null) dialogueSet = 0; // super.onPath = true; }