JirkaDellOro / FUDGE

Furtwangen University Didactic Game Editor
https://jirkadelloro.github.io/FUDGE
MIT License
33 stars 27 forks source link

Figure out how to best send Events between Views #96

Closed JirkaDellOro closed 5 years ago

JirkaDellOro commented 5 years ago

Schildert hier bitte kurz eure Ansätze, so dass ich etwas mithirnen kann. Auch an @AkikoOsaka

Plagiatus commented 5 years ago

Es gab zunächst zwei Ideen:

Dies schien aber ineffektiv und umständlich, darum haben wir uns nochmal zusammengesetzt und einen anderen, deutlich einfacheren Ansatz zum testen gewählt:

Das Panel bildet am Ende des Tages auch nur ein GL Container, der entweder als column, row oder stack eingestellt ist. Dieser wird durch ein HTML Div Element im DOM dargestellt. Außerdem müssen ja nur die Elemente innerhalb dieser Gruppe das Event mitbekommen.
Darum ist jetzt die Idee, dass ein Panel ein unveränderliches HTMLDiv Element ist, welches sich die view's beim Erzeugen abspeichern um auf diesem ihre Eventlistener anzulegen und dort ggf. auch die für das Panel (und alle seine Kinder) wichtigen Events abzufeuern.

Plagiatus commented 5 years ago

Neues Problem: GL verändert nicht die vorhandenen DOMElemente beim verschieben sondern erstellt konstant neue. Damit fällt der einfache Ansatz leider weg.

Jetzt ist die Idee, dass wir drei interne Klassen bauen (die wir sowieso brauchen) und über diese dann die Events verschicken:

JirkaDellOro commented 5 years ago

Direkt über DOM Events gehen, diese zum GL hochbubbeln lassen und dann an die Kinder verteilen.

Da ich nichts von GLEvents weiß, war eher obenstehendes bei mir im Kopf

GL verändert nicht die vorhandenen DOMElemente beim verschieben sondern erstellt konstant neue.

das ist erstaunlich

Klassen finde ich klasse, View und Panel hatte ich ja bereits vorgesehen. Wir sollten die GL-Funktionalität in den Klassen kapseln, so dass wir, sofern das irgendwann sinnvoll oder erforderlich scheint, relativ leicht GL durch etwas anderes ersetzen können. Das bedeutet jetzt nicht, dass ihr die Struktur um diese Anforderung herum bauen müsst, die Idee aber im Hinterkopf behalten solltet.

Plagiatus commented 5 years ago

Wir sollten die GL-Funktionalität in den Klassen kapseln

Das ist der plan. Es soll soweit es geht im Panel Manager bleiben, aber Panel und View werden auch Configs brauchen.

JirkaDellOro commented 5 years ago

Klar. Es geht mehr darum, dass, sofern einfach und intuitiv möglich, man nicht von einem Objekt zu einem anderen über explizite aufzusuchende GL-Instanzen kommuniziert, sondern diese Instanzen nur innerhalb der Objekte bekannt sind und benutzt werden. Also statt

myObject.itsGLInstance.sendMessage(....)

soll es heißen

myObject.sendMessage(....)

und das Objekt kümmert sich selbst darum, über welche anderen Strukturen es die Kommunikation bewerkstelligt. Das sind aber alles schlichte CleanCode- und BestPractice-Regeln, die ihr schon verinnerlicht habt.