From eaca079fe23528014a55a4d7784f0baf7f3ff130 Mon Sep 17 00:00:00 2001 From: Gonk Date: Sun, 1 Nov 2020 18:17:33 +0100 Subject: [PATCH] Made proceedToPhrase non recursive too allow longer chains of dialogues --- .../controller/ConversationController.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java index 55c3322c2..02ef764ab 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java @@ -393,18 +393,24 @@ public final class ConversationController { } public void proceedToPhrase(final Resources res, String phraseID, boolean applyScriptEffects, boolean displayPhraseMessage) { + while (phraseID != null) { + phraseID = proceedToPhraseInternal(res, phraseID, applyScriptEffects, displayPhraseMessage); + } + } + + private String proceedToPhraseInternal(final Resources res, String phraseID, boolean applyScriptEffects, boolean displayPhraseMessage) { if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_CLOSE)) { listener.onConversationEnded(); - return; + return null; } else if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_SHOP)) { listener.onConversationEndedWithShop(npc); - return; + return null; } else if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_ATTACK)) { endConversationWithCombat(); - return; + return null; } else if (phraseID.equalsIgnoreCase(ConversationCollection.PHRASE_REMOVE)) { endConversationWithRemovingNPC(); - return; + return null; } setCurrentPhrase(res, phraseID); @@ -420,8 +426,7 @@ public final class ConversationController { for (Reply r : currentPhrase.replies) { if (!canSelectReply(world, r)) continue; applyReplyEffect(world, r, controllers); - proceedToPhrase(res, r.nextPhrase, applyScriptEffects, displayPhraseMessage); - return; + return r.nextPhrase; } } else if (displayPhraseMessage) { String message = getDisplayMessage(currentPhrase, player); @@ -430,13 +435,14 @@ public final class ConversationController { if (hasOnlyOneNextReply()) { listener.onConversationCanProceedWithNext(); - return; + return null; } for (Reply r : currentPhrase.replies) { if (!canSelectReply(world, r)) continue; listener.onConversationHasReply(r, getDisplayMessage(r, player)); } + return null; } private void endConversationWithRemovingNPC() {