refactor dialogue handling for various game entities

This commit is contained in:
2026-03-23 22:58:22 +01:00
parent 04c5192e0e
commit 8961dd0e1b
11 changed files with 98 additions and 49 deletions

View File

@@ -5,6 +5,7 @@ import de.miaurizius.jgame2d.core.enums.Direction;
import de.miaurizius.jgame2d.core.GamePanel;
import de.miaurizius.jgame2d.core.Utility;
import de.miaurizius.jgame2d.core.enums.EntityType;
import de.miaurizius.jgame2d.core.enums.GameState;
import de.miaurizius.jgame2d.entity.particle.Particle;
import de.miaurizius.jgame2d.entity.projectile.Projectile;
@@ -30,13 +31,14 @@ public class Entity {
public Entity attacker;
public int solidAreaDefaultX, solidAreaDefaultY;
public boolean collision;
protected String[] dialogue = new String[20];
public String[][] dialogue = new String[20][20];
// STATE
public int worldX, worldY;
public Direction direction = Direction.DOWN;
public int spriteNum = 1;
int dialogueIndex;
public int dialogueSet;
public int dialogueIndex;
public boolean collisionOn;
public boolean invincible;
public boolean transparent;
@@ -267,10 +269,9 @@ public class Entity {
panel.player.invincible = true;
}
public void speak() {
if(dialogue[dialogueIndex] == null) dialogueIndex = 0;
panel.ui.currentDialogue = dialogue[dialogueIndex];
dialogueIndex++;
}
public void facePlayer() {
switch(panel.player.direction) {
case UP -> direction = Direction.DOWN;
case DOWN -> direction = Direction.UP;
@@ -278,6 +279,11 @@ public class Entity {
case RIGHT -> direction = Direction.LEFT;
}
}
public void startDialogue(Entity entity, int setNum) {
panel.gameState = GameState.DIALOGUE;
panel.ui.tradingNPC = entity;
dialogueSet = setNum;
}
public void dyingAnimation(Graphics2D graphics2d) {
dyingCount++;
int incr = 5;