added dialogues from external file

This commit is contained in:
musilto9 2020-03-12 20:25:56 +01:00
parent 8641d78c7e
commit 8f1a12e6e3
6 changed files with 70 additions and 11 deletions

View File

@ -26,8 +26,13 @@ public class Dialog {
charNumber = 0; charNumber = 0;
} }
Dialog(DialogBar dialogBar) {
this.dialogBar = dialogBar;
charNumber = 0;
}
private JLabel prepareDialogBar(String string) {
public JLabel prepareDialogBar(String string) {
Font f1 = new Font("Times New Roman", Font.PLAIN, 20); Font f1 = new Font("Times New Roman", Font.PLAIN, 20);
JLabel text = new JLabel(); JLabel text = new JLabel();
@ -79,5 +84,13 @@ public class Dialog {
dialogBar.repaint(); dialogBar.repaint();
} }
public void setText(String text) {
this.text = text;
this.textLength = text.length() + 1;
}
public void setImageDialog(ImageDialog imageDialog) {
this.imageDialog = imageDialog;
}
} }

View File

@ -1,16 +1,21 @@
import java.awt.*; import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class InteractionCell extends Cell { public class InteractionCell extends Cell {
private String message; private String message;
private Dialog dialog; private Dialog dialog;
private Scanner scanner;
InteractionCell(){ InteractionCell(){
super(-1,-1, WindowOfFreeMove.CELL_SIZE, Color.ORANGE); super(-1,-1, WindowOfFreeMove.CELL_SIZE, Color.ORANGE);
} }
InteractionCell(int x, int y, String message) { InteractionCell(int x, int y, String message, Dialog dialog) {
super(x, y, WindowOfFreeMove.CELL_SIZE, Color.ORANGE); super(x, y, WindowOfFreeMove.CELL_SIZE, Color.ORANGE);
this.message = message; this.message = message;
this.dialog = dialog;
} }
InteractionCell(int x, int y, Dialog dialog) { InteractionCell(int x, int y, Dialog dialog) {
@ -21,9 +26,36 @@ public class InteractionCell extends Cell {
public void startEvent() { public void startEvent() {
WindowOfFreeMove.setCanPersonMove(false); WindowOfFreeMove.setCanPersonMove(false);
if (message != null) if (message != null)
System.out.println(message); readDialogFile(message);
if (dialog != null) { }
dialog.showText();
public void readDialogFile(String name) {
try {
File dialogFile = new File("src/main/resources/" + name + ".txt");
scanner = new Scanner(dialogFile);
readNextLine();
} catch (FileNotFoundException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
public void readNextLine() {
if (scanner.hasNextLine()) {
String data = scanner.nextLine();
if (data.equals("<end>"))
endEvent();
else if (data.contains("<image>")) {
String[] imageName = data.split(" ");
dialog.setImageDialog(new ImageDialog(imageName[1]));
readNextLine();
}
else {
dialog.hideText();
dialog.setText(data);
dialog.showText();
dialog.prepareDialogBar(data);
}
} }
} }
@ -31,6 +63,7 @@ public class InteractionCell extends Cell {
if (dialog != null) if (dialog != null)
dialog.hideText(); dialog.hideText();
WindowOfFreeMove.setCanPersonMove(true); WindowOfFreeMove.setCanPersonMove(true);
Person.setInEvent(false);
} }
@Override @Override

View File

@ -8,7 +8,7 @@ public class Person extends Cell {
private int directionSight; private int directionSight;
private int directionMoveLast; private int directionMoveLast;
private boolean isMoving; private boolean isMoving;
private boolean isInEvent; private static boolean isInEvent;
private int size; private int size;
public void setDirectionMoveLast(int directionMoveLast) { public void setDirectionMoveLast(int directionMoveLast) {
@ -25,7 +25,6 @@ public class Person extends Cell {
this.map = map; this.map = map;
this.directionSight = 3; this.directionSight = 3;
this.isMoving = false; this.isMoving = false;
this.isInEvent = false;
this.size = WindowOfFreeMove.CELL_SIZE; this.size = WindowOfFreeMove.CELL_SIZE;
} }
@ -82,8 +81,7 @@ public class Person extends Cell {
map.findInteractionByXY(x, y, directionSight).startEvent(); map.findInteractionByXY(x, y, directionSight).startEvent();
} }
else if (isEventInFront(x,y,directionSight) && isInEvent) { else if (isEventInFront(x,y,directionSight) && isInEvent) {
map.findInteractionByXY(x, y, directionSight).endEvent(); map.findInteractionByXY(x, y, directionSight).readNextLine();
isInEvent = false;
} }
break; break;
} }
@ -219,4 +217,8 @@ public class Person extends Cell {
public void setSize(int size) { public void setSize(int size) {
this.size = size; this.size = size;
} }
public static void setInEvent(boolean isInEvent) {
Person.isInEvent = isInEvent;
}
} }

View File

@ -143,8 +143,8 @@ public class WindowOfFreeMove extends JFrame {
m1.addMoveToEvent(new EventMoveToCell(1, 1, 8, 8, m2, this)); m1.addMoveToEvent(new EventMoveToCell(1, 1, 8, 8, m2, this));
m1.addMoveToEvent(new EventMoveToCell(4, 3, 8, 1, m4, this)); m1.addMoveToEvent(new EventMoveToCell(4, 3, 8, 1, m4, this));
m1.addInteractionEvent(new InteractionCell(3, 5, new Dialog("First line", dialogBar))); m1.addInteractionEvent(new InteractionCell(3,5,"first-dialog", new Dialog(dialogBar)));
m1.addInteractionEvent(new InteractionCell(5, 5, new Dialog("Second line", dialogBar, new ImageDialog("BaetoriceFace.png")))); m1.addInteractionEvent(new InteractionCell(5,5,"dialog-test", new Dialog(dialogBar)));
m2.addMoveToEvent(new EventMoveToCell(2, 1, 8, 8, m3, this)); m2.addMoveToEvent(new EventMoveToCell(2, 1, 8, 8, m3, this));
m2.addMoveToEvent(new EventMoveToCell(1, 3, 8, 1, m1, this)); m2.addMoveToEvent(new EventMoveToCell(1, 3, 8, 1, m1, this));

View File

@ -0,0 +1,4 @@
<image> BaetoriceFace.png
Wow
to je úžasné
<end>

View File

@ -0,0 +1,7 @@
Tento
dialog
je
na
několik
řádků
<end>