diff --git a/src/main/java/Dialog.java b/src/main/java/Dialog.java new file mode 100644 index 0000000..6c1e5ad --- /dev/null +++ b/src/main/java/Dialog.java @@ -0,0 +1,60 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class Dialog { + private String text; + private int textLength; + private Timer timer; + private JPanel dialogBar; + private int charNumber; + + Dialog(String text, JPanel dialogBar) { + this.text = text; + textLength = text.length() + 1; + this.dialogBar = dialogBar; + charNumber = 0; + } + + private JLabel prepareDialogBar(String string) { + Font f1 = new Font("Times New Roman", Font.PLAIN, 20); + + JLabel text = new JLabel(); + text.setFont(f1); + text.setForeground(Color.red); + text.setVisible(true); + text.setText(string); + Dimension size = text.getPreferredSize(); + text.setBounds(20, 20, size.width, size.height); + + return text; + } + + private void showByChar() { + String string = text.substring(0, charNumber); + JLabel textToShow = prepareDialogBar(string); + if (dialogBar.getComponentCount() != 0) + dialogBar.remove(0); + dialogBar.add(textToShow); + charNumber++; + if (charNumber == textLength) { + timer.stop(); + } + } + + public void showText() { + charNumber = 0; + dialogBar.setVisible(true); + timer = new Timer(17, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + showByChar(); + dialogBar.repaint(); + } + }); + timer.start(); + } + +} + diff --git a/src/main/java/InteractionCell.java b/src/main/java/InteractionCell.java index d53054d..62c8396 100644 --- a/src/main/java/InteractionCell.java +++ b/src/main/java/InteractionCell.java @@ -2,6 +2,7 @@ import java.awt.*; public class InteractionCell extends Cell { private String message; + private Dialog dialog; InteractionCell(){ super(-1,-1, WindowOfFreeMove.CELL_SIZE, Color.ORANGE); @@ -12,8 +13,16 @@ public class InteractionCell extends Cell { this.message = message; } + InteractionCell(int x, int y, Dialog dialog) { + super(x, y, WindowOfFreeMove.CELL_SIZE, Color.ORANGE); + this.dialog = dialog; + } + public void startEvent() { - System.out.println(message); + if (message != null) + System.out.println(message); + if (dialog != null) + dialog.showText(); } @Override diff --git a/src/main/java/WindowOfFreeMove.java b/src/main/java/WindowOfFreeMove.java index e144c63..6ae27e5 100644 --- a/src/main/java/WindowOfFreeMove.java +++ b/src/main/java/WindowOfFreeMove.java @@ -71,6 +71,7 @@ public class WindowOfFreeMove extends JFrame { dialogBar.setBounds(0, WindowOfFreeMove.CELL_SIZE * WindowOfFreeMove.CANVAS_HEIGHT * 3 / 4, WindowOfFreeMove.CELL_SIZE * WindowOfFreeMove.CANVAS_WIDTH, WindowOfFreeMove.CELL_SIZE * WindowOfFreeMove.CANVAS_HEIGHT / 4); dialogBar.setBackground(Color.BLACK); dialogBar.setVisible(false); + dialogBar.setLayout(null); inputTimer = new Timer(10, new ActionListener() { @Override @@ -150,7 +151,7 @@ public class WindowOfFreeMove extends JFrame { m1.addMoveToEvent(new EventMoveToCell(1, 1, 8, 8, m2, this)); m1.addMoveToEvent(new EventMoveToCell(4, 3, 8, 1, m4, this)); - m1.addInteractionEvent(new InteractionCell(3, 5, "první zpráva")); + m1.addInteractionEvent(new InteractionCell(3, 5, new Dialog("Prvni zprava", dialogBar))); m1.addInteractionEvent(new InteractionCell(5, 5, "druhá zpráva")); m2.addMoveToEvent(new EventMoveToCell(2, 1, 8, 8, m3, this));