Commit Graph

337 Commits

Author SHA1 Message Date
ffe9bef5fd Synchronisierte EventQueue für InputEvents
Eingaben der Swing Componente werden nun in eine interen EventQueue einsortiert, die einmal pro Frame abgearbeitet wird. Das verhindert Probleme bei der Synchronisierung der ZM mit dem EDT von Swing.

Im Moment werden die Originalen InputEvent gespeichert und verarbeitet. In Zukunft könnte eine eigene Event-Klasse sinnvoll sein, die die Events für die Nutzer vereinfacht (siehe Processing).
2022-07-06 20:39:34 +02:00
81624e3a7a Setter für FPS verhindert das setzen auf weniger als 0 frames 2022-07-06 20:36:27 +02:00
1a26afb1ae Fehlende Imports in der Zeichenmaschine gefixt 2022-07-06 20:33:57 +02:00
264552c8b7 Neue Klasse TaskRunner
TaskRunner ist eine statische Klasse, die einen ThreadPool verwaltet und es anderen KLassen ermöglicht, Parallele Prozesse auszuführen. Die ZM ist grundsätzlich erstmal nicht auf Parallelität ausgelegt, da alle im „GameLoop“ (Zeichenmaschine$Zeichenthread) pro Frame synchron läuft. Einige Aufgaben erfordern aber eigene Therad (z.B. das Abspielen von Musikdateien oder zukünftige Animationen).

Der TaskRunner ist eine erste Verison einer Klasse, die zukünftig in der ZM an Bedeutung gewinnen könnte, wenn Parallelität wichtiger wird (z.B. in der Spielemaschine).
2022-07-06 20:33:10 +02:00
bb330c81b8 Reafactoring des ImageLoader
ImageLoader nutz nun den ResourceStreamProvider und die Logging API
2022-07-06 20:29:50 +02:00
aadec6d973 Refactoring des FontLoader
Das Öffnen von Resourcen Streams wurde in eine eigene Hilfsklasse ausgelagert. FontLoader nutzt nun die neue Logging API.
2022-07-06 20:29:21 +02:00
fb2580eb2c Logging API erstellt, um einheitliches Logging zu vereinfachen 2022-07-06 20:18:25 +02:00
49063c9581 Klasse Validator eingefügt 2022-07-06 20:16:37 +02:00
62dc4190a1 Spelling 2022-07-01 13:05:52 +02:00
a31ec502d4 Möglichkeit beliebige Tasks zu timen
Die ZM kann nun beliebige Runnables mit einem Zeitdelay versehen ausführen. Mitteles `scheduleTask(Runnable, int)` wird das angegebene Runnable nach der angegebene Anzahl Millisekunden ausgeführt.
Tasks werden immer am Ende eines Frames ausgeführt.
2022-07-01 13:05:23 +02:00
0f0b03d8fe Verwendung eigener Schriftarten 2022-07-01 13:00:53 +02:00
57c396c2e4 Verwendung der neuen FontLoader KLasse 2022-07-01 13:00:39 +02:00
bd71bb6619 Hilfsklasse um Schrifarten aus Dateien zu laden 2022-07-01 13:00:09 +02:00
fb88f8a17f Spielemaschine auf neue Standardebenen angepasst 2022-06-30 21:29:38 +02:00
c989e69f9f Behandlung von inputs nun in eigener EventQueue
Tastatur- und Mauseingaben werden nun nicht mehr direkt verarbeitet, sondern in eine interne EventQueue geschoben, die nach dem Aufruf von `draw()` abgearbeitet wird. Die `InputEvent`s werden momentan direkt an die üblichen Listener Methoden weitergegeben. Ggf. ist in Zukunft hier auch ein vereinfachtes Eventsystem (siehe Processing) sinnvoll.
Ist die ZM pausiert, werden Events ohne verzögerung direkt ausgelöst.
2022-06-30 21:29:01 +02:00
3e94f42ed3 Zeichenleinwand wird nur noch mit ColorLayer initialisiert 2022-06-30 21:25:05 +02:00
1b5f46c771 Boids Beispiel angepasst und Bug bei Null-Entfernung behoben 2022-06-30 21:24:10 +02:00
445bc29480 Vector wirft nun eine Exception, wenn durch 0 geteilt wird 2022-06-30 21:22:12 +02:00
62e9f5d0f2 Allgemeiner GraphicsLayer hinzugefügt
Vor allem für Testst hilfreich
2022-06-29 22:35:57 +02:00
4f1bd25ad7 Hehomon Beispiel implementiert
Noch Bugs bei Verwendung des Vollbildmodus vorhanden
2022-06-29 22:35:24 +02:00
ff56e689f8 Test für Formen 2022-06-29 22:34:48 +02:00
a01878286b Klassenmethode zur Berechnung beliebiger Ankerpunkte 2022-06-29 22:34:31 +02:00
010a37fc0e Breite / Höhe von Gruppen darf nicht manuell geändert werden 2022-06-29 22:30:39 +02:00
1a55e11841 Texte haben eine separate fontColor
stroke und fill werden nun auf null gesetzt und als Rahmen bzw Hintergrund gezeichnet, wenn sie gesetzt werden.
2022-06-29 22:30:19 +02:00
67610963f2 Spielemaschine als UNterbau für Spiele mit der ZM 2022-06-29 22:29:42 +02:00
57afc4683f Dokumentaiton verbessert 2022-06-29 22:29:23 +02:00
cb303d2c32 Tastencodes als Konstanten ergänzt 2022-06-29 22:29:12 +02:00
7c0d8458ed Rechtschreibung 2022-06-29 22:28:50 +02:00
9344fc284b Interne Verwendung von Settern
Zur Verbesserung der Überschreibbarkeit.
2022-06-29 22:28:40 +02:00
3bdf0daf79 Änderung der Größe in eigener Methode
Die Größe der Zeichenfläche wird nun in einer eigenen, internen Methode geändert, die von setSize und setFullscreen benutzt wird. Dadurch wird die abhängigkeit der beiden Methoden voneinander aufgehoben.
2022-06-29 22:27:44 +02:00
e411b5025e Dokumentation verbessert 2022-06-29 22:26:18 +02:00
e5c2c0e569 Kleine Änderung 2022-06-21 21:33:39 +02:00
3cbdffaa08 Entfernen von Ebenen von der Leinwand ermöglicht 2022-06-21 21:33:19 +02:00
7293f62a19 Standardverschiebung für Shape#nextTo() 2022-06-21 21:32:56 +02:00
2b20cc0f8e Kleiner Bugfix 2022-06-21 21:32:27 +02:00
83039f0717 Dokumentation 2022-06-21 21:32:20 +02:00
f27fc206af Test für Verschiebungen 2022-06-21 21:32:14 +02:00
7cf8f81d07 Richtungen werden nun als Vektoren ausgedrückt 2022-06-21 21:31:57 +02:00
e2c10ff940 Merge branch 'main' into games 2022-06-20 18:31:44 +02:00
6be5104836 Überschreibare Methode zur Reaktion auf verlassen / aktivieren des Vollbildmodus 2022-06-20 18:31:25 +02:00
b3319e09aa Removed SOund and Fonts 2022-06-20 18:21:37 +02:00
3c46ae4faa Hehomon Beispiel 2022-06-20 18:15:10 +02:00
11cb9f7bff Überflüssige Beispiel entfernt 2022-06-20 17:51:57 +02:00
6be2955936 Changelog erstellt 2022-06-19 22:29:30 +02:00
99fda3c37c Erste Diagrammtypen implementiert 2022-06-19 22:28:09 +02:00
a2d883305a Viele weitere Beispielprojekt für verschiedene Anwendungen 2022-06-19 22:26:01 +02:00
dc6b7ee351 Dokumentation 2022-06-19 22:25:25 +02:00
6bc618a2df Stroke-Objekt wird in Formen zwischengespeichert 2022-06-19 22:25:14 +02:00
1ee03958d2 Konstante ergänzt 2022-06-19 22:24:36 +02:00
de343aab66 Konvertierungsmethoden für Datentypen entfernt 2022-06-19 22:24:29 +02:00