Heyo,
I tried to incorporate a Dialogue screen into a game of mine. After each level there will be small box where text will be written with a typewriter effect. Currently I try to get the program to change to the next dialogue text by clicking on the box. For that I am using an integer which I use as the index for a list with the dialogue. When I click on the box the integer will increase by one. Currently I have the problem that I can increase the integer, yet, somehow the next text doesn't get displayed, even after implementing a method which resets the variables for the text.
Down below I will include all necessary code. I hope that someone can make out where the mistake lies and help me implementing a functioning dialogue and dialogue box.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) import java.util.*; public class DialogueScreen extends World { private int level; private DialogueText dialoguetext; private DialogueBox dialoguebox; private int dialogueTextNumber = 0; private List<String> dialogue = new ArrayList<String>(); public DialogueScreen(int leveldb) { super(600, 800, 1); prepare(); level = leveldb; if(leveldb == 0) { dialogue.add("Test1"); dialogue.add("Test2"); dialogue.add("Test3"); } else if(leveldb == 1) { } else if(leveldb == 2) { } else if(leveldb == 3) { } } public void act() { textausgeben(dialogue.get(dialogueTextNumber)); if(dialoguebox.getMouseClickedBox()) { dialogueTextNumber = dialogueTextNumber + 1; dialoguebox.setMouseClickedBox(); dialoguetext.resetVariables(); } } private void prepare() { setBackground(blackBackground()); prepareBox(); } private void prepareBox() { DialogueBox db = new DialogueBox("dialogueBox.png"); addObject(db, 300, 700); dialoguebox = db; DialogueText dt = new DialogueText(); addObject(dt, 250, 700); dialoguetext = dt; magier wi = new magier(); addObject(wi,130, 700); } private GreenfootImage blackBackground() { GreenfootImage img = new GreenfootImage(getWidth(), getHeight()); img.setColor(Color.BLACK); img.fill(); return img; } private void textausgeben(String text) { dialoguetext.textausgeben(text); } public int getDialogueTextNumber() { return dialogueTextNumber; } } public class DialogueText extends Actor { private String text = ""; private int testlength; private int i; /** * Act - tut, was auch immer DialogueText tun will. Diese Methode wird aufgerufen, * sobald der 'Act' oder 'Run' Button in der Umgebung angeklickt werden. */ public DialogueText() { // Ergänzen Sie Ihren Quelltext hier... } public void act() { } public void textausgeben(String test) { Color hintergrund = new greenfoot.Color(0, 0, 0, 0); testlength = test.length(); if(i < testlength) { text = text + test.charAt(i); GreenfootImage textan = new GreenfootImage(text , 50, greenfoot.Color.WHITE, hintergrund); setImage(textan); try { Thread.sleep(200); } catch(Exception ex) { System.out.println("Fehler"); } i = i + 1; } } public void resetVariables() { testlength = 0; text = ""; } } public class DialogueBox extends Actor { private int diaTextNumber; private boolean nextText; public DialogueBox(String bild) { GreenfootImage img = new GreenfootImage(bild); setImage(img); } public void act() { if(Greenfoot.mouseClicked(this)) nextText = Greenfoot.mouseClicked(this); } public boolean getMouseClickedBox() { return nextText; } public void setMouseClickedBox() { nextText = false; } }