diff --git a/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt b/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt new file mode 100644 index 000000000..10f47b69f --- /dev/null +++ b/Server/src/main/java/Server/core/game/content/dialogue/DialogueFile.kt @@ -0,0 +1,56 @@ +package core.game.content.dialogue + +import core.game.component.Component +import core.game.node.entity.npc.NPC +import core.game.node.entity.player.Player + +abstract class DialogueFile { + var player: Player? = null + var npc: NPC? = null + var interpreter: DialogueInterpreter? = null + var stage = 0 + abstract fun handle(componentID: Int, buttonID: Int) + fun load(player: Player, npc: NPC, interpreter: DialogueInterpreter): DialogueFile{ + val newFile = this::class.java.newInstance() + newFile.player = player + newFile.npc = npc + newFile.interpreter = interpreter + return newFile + } + + open fun npc(vararg messages: String?): Component? { + return if (npc == null) { + interpreter!!.sendDialogues( + npc!!.id, + if (npc!!.id > 8591) FacialExpression.OLD_NORMAL else FacialExpression.FRIENDLY, + *messages + ) + } else interpreter!!.sendDialogues( + npc, + if (npc!!.id > 8591) FacialExpression.OLD_NORMAL else FacialExpression.FRIENDLY, + *messages + ) + } + + open fun npc(id: Int, vararg messages: String?): Component? { + return interpreter!!.sendDialogues(id, FacialExpression.FRIENDLY, *messages) + } + + open fun npc(expression: FacialExpression?, vararg messages: String?): Component? { + return if (npc == null) { + interpreter!!.sendDialogues(0, expression, *messages) + } else interpreter!!.sendDialogues(npc, expression, *messages) + } + + open fun player(vararg messages: String?): Component? { + return interpreter!!.sendDialogues(player, null, *messages) + } + + open fun player(expression: FacialExpression?, vararg messages: String?): Component? { + return interpreter!!.sendDialogues(player, expression, *messages) + } + + fun end(){ + if(interpreter != null) interpreter!!.close() + } +} \ No newline at end of file diff --git a/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java b/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java index aedde9913..a6845e282 100644 --- a/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java +++ b/Server/src/main/java/Server/core/game/content/dialogue/DialogueInterpreter.java @@ -172,6 +172,10 @@ public final class DialogueInterpreter { return; } player.setAttribute("chatbox-buttonid",buttonId); + if(player.getDialogueInterpreter().getDialogue().file != null){ + player.getDialogueInterpreter().getDialogue().file.handle(componentId,buttonId - 1); + return; + } player.getDialogueInterpreter().getDialogue().handle(componentId, buttonId - 1);//here } diff --git a/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java b/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java index a1e12367e..be18ac9d7 100644 --- a/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java +++ b/Server/src/main/java/Server/core/game/content/dialogue/DialoguePlugin.java @@ -35,6 +35,8 @@ public abstract class DialoguePlugin implements Plugin { */ protected DialogueInterpreter interpreter; + public DialogueFile file; + /** * Two options interface. */ @@ -261,4 +263,9 @@ public abstract class DialoguePlugin implements Plugin { this.stage += 1; } + public void loadFile(DialogueFile file){ + this.file = file.load(player,npc,interpreter); + stage = 0; + } + } \ No newline at end of file