- Der Dialog schreitet jeweils eine Zeile weiter, wenn die „Enter“-Taste gedrückt wird.
- Sobald alle Dialogzeilen angezeigt wurden, kehrt das Spiel zum normalen Spielzustand zurück.
NPC-Klasse: Jeder NPC verfügt über ein Dialog-Array mit Dialogzeilen und einen DialogIndex, um die aktuelle Zeile zu verfolgen.
Spielstatus: Das Spiel hat verschiedene Zustände wie playState (normales Gameplay) und dialogState (im Dialog).
KeyHandler-Klasse: Diese verarbeitet Benutzereingaben, einschließlich des Fortschreitens des Dialogs durch Drücken der Eingabetaste.
Ich habe das Tutorial von RyiSnow auf YouTube verfolgt und den Code aufgepeppt der Weg. Ich bin kürzlich auf ein Problem mit der Ausführung von Dialogen gestoßen, die nichts mit NPCs zu tun haben. Ich konnte das mit if(npcIndex != 999) lösen, da 999 der Standardwert von npcIndex ist, wenn keine Kollision zwischen dem Spieler und einem NPC erkannt wird. Ich möchte dies wiederverwendbar machen, aber es fällt mir schwer, Ideen zu entwickeln, da meine KeyHandler-Klasse die „Enter“-Eingabe verarbeitet.
Aktuelle Implementierung:
Code: Select all
else if(gp.gameState == gp.dialogueState) {
if(code == KeyEvent.VK_ENTER) {
int npcIndex = gp.cChecker.checkEntity(gp.player, gp.npc);
if(npcIndex != 999) {
if (gp.npc[npcIndex].dialogues[gp.npc[npcIndex].dialogueIndex] != null){
gp.npc[npcIndex].speak();
}
} else{
gp.gameState = gp.playState;
}
}
Wie kann ich die Dialogfortschrittslogik verallgemeinern, damit sie für alle Dialogquellen funktioniert ( NPCs, Schilder usw.)? Konkret:
Ist dies ein guter Ansatz für den Umgang mit Dialogen aus mehreren Quellen? Gibt es bessere Entwurfsmuster für diesen Anwendungsfall?
Wie kann ich sicherstellen, dass dieses System skalierbar ist, wenn das Spiel wächst (z. B. mit mehr Dialog auslösenden Entitäten)?