Smeagle / dungeongame

Inspired by "Spar Wars"
2 stars 1 forks source link

Schnittstelle Frontend <=> Player-Agent #22

Open Smeagle opened 8 years ago

Smeagle commented 8 years ago

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.

Smeagle commented 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.

Smeagle commented 8 years ago

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...

murchandamus commented 8 years ago

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.