Okay, klappt super, ich hänge jetzt seit Tagen fest. Irgendwie funktioniert this.setWaitMode('message'); nicht so wie es sollte (oder ich verwende es nicht so wie ich sollte
). Der Code sieht so aus:
- $gameMessage._texts.push($dataQuiz.QUESTION[args[0]][herehere].question) ; //Frage stellen
- $gameMessage.setChoices($dataQuiz.QUESTION[args[0]][herehere].answer,0,-2); //Antworten anzeigen
- $gameMessage.setChoiceCallback(function(n) {this._branch[this._indent] = n}.bind(this)); //Eingabe erhalten
- ans= this._branch[this._indent];
- //-----react to answer-----
- $gameMessage.newPage();
- //Neue Text Box öffnen
- if(ans==$dataQuiz.QUESTION[args[0]][herehere].correct){ //richtige Antwort
- $gameMessage._texts.push("YAY");
- }else{ //Falsche Antwort
- $gameMessage._texts.push("Falsch, die Antwort wäre "+$dataQuiz.QUESTION[args[0]][herehere].answer[$dataQuiz.QUESTION[args[0]][herehere].correct]);
- };
Das Ergebnis ist, dass die Frage angezeigt wird, dann öffnet sich ein neues Text Fenster mit dem Text "Falsch, die Antwort wäre [richtige Antwort]" zusammen mit den Antwortmöglichkeiten.
Die Antwort wird auch abgespeichert, dann aber beim nächsten Quiz als ans in der if-Abfrage verwendet.
Offenbar wird also alles gleichzeitig, statt nacheinander ausgeführt.
Ich habe versucht this.setWaitMode('message'); and verschiedene Stellen zu setzen und die Reihenfloge zu ändern, habe es auch mit $gameMap._interpreter.setWaitMode('message'); , $gameTroop._interpreter.setWaitMode('message'); und this.index++ versucht. Andere Wartemodi scheinen auch nichts zu bringen. Wenn ich abfrage $gameMessage.isBusy(); , bevor die Reaktion kommt, hält der Code zwar an, (sodass man dann direkt zur Frage die Antortmöglichkeiten bekommt), allerdings führt er die Reaktion dann nicht aus. Ähnliches gilt für $gameMessage.isChoice(); . Mit while($gameMessage.isBusy()){}; habe ich dann noch erfolgreich alles aufgehängt (in der Schleife hängen geblieben).