From 5cae1b9bfae1d3ce8f545c197efaa676632ceb14 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Tue, 22 Dec 2020 11:39:55 +0100 Subject: [PATCH] Parser for dialogues --- core/assets/dialogues/test.txt | 11 +++++ core/src/com/trs/main/Dialogue.java | 6 +++ core/src/com/trs/main/DialogueParser.java | 51 +++++++++++++++++++++++ core/src/com/trs/main/MapContainer.java | 2 +- core/src/com/trs/main/MovingNpc.java | 3 ++ 5 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 core/assets/dialogues/test.txt create mode 100644 core/src/com/trs/main/Dialogue.java create mode 100644 core/src/com/trs/main/DialogueParser.java diff --git a/core/assets/dialogues/test.txt b/core/assets/dialogues/test.txt new file mode 100644 index 0000000..430d944 --- /dev/null +++ b/core/assets/dialogues/test.txt @@ -0,0 +1,11 @@ +Ultra geile ultra Frage +Antwort 2#5 +Antwort 7#9 + +Frage von Antwort 2 +Nice#-1 +Nice2#-1 + +Frage von Antwort 7 +lolol#-1 +lolol#-1 diff --git a/core/src/com/trs/main/Dialogue.java b/core/src/com/trs/main/Dialogue.java new file mode 100644 index 0000000..4d00fae --- /dev/null +++ b/core/src/com/trs/main/Dialogue.java @@ -0,0 +1,6 @@ +package com.trs.main; + +public class Dialogue { + String question; + String[] ans; +} diff --git a/core/src/com/trs/main/DialogueParser.java b/core/src/com/trs/main/DialogueParser.java new file mode 100644 index 0000000..4f58bf3 --- /dev/null +++ b/core/src/com/trs/main/DialogueParser.java @@ -0,0 +1,51 @@ +package com.trs.main; + +import java.util.ArrayList; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; + +public class DialogueParser { + private int line; + private String[] file; + + public DialogueParser(String filename) { + line = 0; + FileHandle fileHandle = Gdx.files.internal(filename); + String text = fileHandle.readString(); + file = text.split("\\r?\\n"); + } + + public DialogueParser(String filename, int line) { + this.line = line - 1; + FileHandle fileHandle = Gdx.files.internal(filename); + String text = fileHandle.readString(); + file = text.split("\\r?\\n"); + } + + public Dialogue nextDialog(int selectedAns) { + Dialogue result = new Dialogue(); + String s = file[line + selectedAns]; + String[] newLine = s.split("#"); + line = Integer.parseInt(newLine[1]); + + if(line == -1) { + return null; + } + + result.question = file[line]; + ArrayList ans = new ArrayList<>(); + for(int i = line + 1; i < file.length; i++) { + String tempAns = file[i]; + if(tempAns.equals("")) { + break; + } + else { + ans.add(tempAns); + } + } + result.ans = (String[]) ans.toArray(); + + return result; + } +} diff --git a/core/src/com/trs/main/MapContainer.java b/core/src/com/trs/main/MapContainer.java index bfea1b2..2b959eb 100644 --- a/core/src/com/trs/main/MapContainer.java +++ b/core/src/com/trs/main/MapContainer.java @@ -91,7 +91,7 @@ public class MapContainer { p.movementX = 0; p.movementY = 0; - + stage.addActor(p); } diff --git a/core/src/com/trs/main/MovingNpc.java b/core/src/com/trs/main/MovingNpc.java index 8a6e741..4112bf4 100644 --- a/core/src/com/trs/main/MovingNpc.java +++ b/core/src/com/trs/main/MovingNpc.java @@ -30,11 +30,14 @@ public class MovingNpc extends Actor{ float movementX; float movementY; + DialogueParser parser; + Vector2 POI; public MovingNpc(Rectangle area, float xPos, float yPos){ setName("npc"); Texture t = new Texture(Gdx.files.internal("player.png")); + parser = new DialogueParser("dialogues/test.txt"); animatedSprite = new AnimatedSprite(t, 64, 64); animatedSprite.setRow(0); collisionRect = new Rectangle(xPos + 16, yPos, 32, 48);