34public class DialogueScript {
36 private final int[] npcIds;
37 private final List<DialogueAction> actions;
39 public DialogueScript(
int[] npcIds) {
41 this.actions =
new ArrayList<>();
44 public void addAction(DialogueAction action) {
48 public void execute(
Player player,
Npc npc) {
49 if (actions.isEmpty()) {
55 for (DialogueAction action : actions) {
56 action.apply(factory, player, npc);
62 public int[] getNpcIds() {
66 public interface DialogueAction {
70 public static class NpcDialogueAction
implements DialogueAction {
71 private final String[] messages;
74 public NpcDialogueAction(String[] messages,
Expression expression) {
75 this.messages = messages;
76 this.expression = expression;
85 public static class PlayerDialogueAction
implements DialogueAction {
86 private final String[] messages;
89 public PlayerDialogueAction(String[] messages,
Expression expression) {
90 this.messages = messages;
91 this.expression = expression;
100 public static class StatementAction
implements DialogueAction {
101 private final String[] messages;
103 public StatementAction(String[] messages) {
104 this.messages = messages;
113 public static class OptionAction
implements DialogueAction {
114 private final String title;
115 private final String[] options;
116 private final Runnable[] actions;
118 public OptionAction(String title, String[] options, Runnable[] actions) {
120 this.options = options;
121 this.actions = actions;
127 if (options.length >= 2) {
128 factory.
sendOption(options[0], () -> {}, options[1], () -> {});
129 }
else if (options.length == 1) {
130 factory.
sendOption(options[0], () -> {},
"Nevermind", () -> {});
final DialogueFactory sendStatement(String... lines)
final DialogueFactory sendOption(String option1, Runnable action1, String option2, Runnable action2)
final DialogueFactory sendPlayerChat(String... lines)
final DialogueFactory sendNpcChat(int id, String... lines)
final DialogueFactory execute()