Open Smeagle opened 8 years ago
In der aktuellen Version kann man jetzt Listener am GameState registieren, die bei Änderung der Feld-Selektion informiert werden. Damit könnte man die Spielfigur schon bewegen, wenn diese einen entsprechenden Listener registriert. Der Listener muss in seinem Callback natürlich prüfen, ob die Spielfigur überhaupt an der Reihe ist, nur zur Sicherheit... wie gesagt: das Event-System wird sich noch ändern / erweitern.
Ich habe im letzten Commit Aktionen (Klasse Action) und ein Menü (Klasse Menu) hinzugefügt. Man kann nun mit Menu.setActions(Action... actions) Aktionen "registrieren". Diese werden in der GUI angezeigt und bei Klick auf den Knopf wird die in der Aktion hinterlegte Logik (execute-Methde) ausgeführt.
Beispiel:
Menu.setActions(new Action("Beispiel") { public void execute() throws GameException { /* das hier passiert bei Knopfdruck... */ } });
Das Wachenbild habe ich nur nochmal wegen eventuellen Lizenzproblemen geändert. Darauf sollten wir auch achten. Ist ja hier alles Open-Source...
Okay. Ich werde bei Gelegenheit den Sprint, das Spicken, und die verschiedenen Moves als Aktionen implementieren, so dass die als Aktionen eben an die GUI übergeben werden.
Irgendwie muss der Player-Agent dem Frontend (GUI) sagen können, was die möglichen Aktionen sind, damit das Frontend diese Anzeigen und vom Benutzer abfragen kann. Das Frontend muss seinerseits dann die Eingaben zurück an den Player-Agenten geben.
Ich würde Vorschlagen, dass schon in der ersten Version der Player eine Liste von Aktionen an das Frontend gibt (jeweils mit Bezeichnungen und "Callbacks"). Das Frontend zeichnet daraus ein Aktions-Menü. Die Knöpfe rufen dann die jeweiligen Callback-Methoden auf.
Das Issue betrifft den Aufbau des "Frameworks" und erste Umsetzungen für z.B. die Bewegung der Spielfigur.