Commit Graph

161 Commits

Author SHA1 Message Date
ngb 0a72b97d56 Gradle initialisiert 2022-07-10 22:46:27 +02:00
ngb 54762cb3e6 enabelGlobalDebugging verbessert 2022-07-09 21:01:56 +02:00
ngb 2e5d5d7e83 Debug Nachricht beim shutdown 2022-07-09 21:01:39 +02:00
ngb 43c5b9f28e Fehler beim erstellen eines AudioStreams behoben 2022-07-09 21:01:01 +02:00
ngb 62f221e18e BlueJ Testprojekt entfernt 2022-07-09 21:00:11 +02:00
ngb b3ff1a507e Tests auf Junit5 angepasst 2022-07-08 16:36:33 +02:00
ngb 3030445dcf Changelog 2022-07-07 09:21:39 +02:00
ngb b6b8263e5e Reference auf TextBox entfernt 2022-07-07 09:20:36 +02:00
ngb 49ad98fd82 Namen der Threads gesetzt, für leichteres Debugging 2022-07-07 09:20:01 +02:00
ngb 1e552d6bc2 Changelog 2022-07-07 08:08:36 +02:00
ngb 4e147586e4 Audio Interface ud Mixer Klasse 2022-07-07 08:08:28 +02:00
ngb 5213dbb7e9 Formatierung 2022-07-06 22:18:00 +02:00
ngb ed2c14a143 Dokumentation 2022-07-06 22:17:50 +02:00
ngb f9f1cfed24 LineChart auf ChartValue interface umgestellt 2022-07-06 22:17:42 +02:00
ngb e78ec53a53 Merge branch 'main' into charts 2022-07-06 21:29:58 +02:00
ngb c5dd889406 Refactoring der Package-Struktur 2022-07-06 21:27:52 +02:00
ngb a94194daf1 Beispielprojekte zur ZM entfernt
Die Projekte werden in einem eigenen Repository (zeichenmaschine-examples) neu veröffentlicht.
2022-07-06 21:23:44 +02:00
ngb 4ad24fc523 Changelog angepasst 2022-07-06 21:15:47 +02:00
ngb e42b02763a width / height umbenannt, damit Constants nicht überschrieben werden
Dies ist ein generelles Problem. Wenn in Objekten die von Constants erben width und height als Objektvariablen genutzt werden sollen, ist die Größe der Zeichenleinwand nicht mehr direkt abrufbar.

Ggf. sollten die Variablen in Constants spezifischer benannt werden (z.B. `zmwidth` oder `canvaWidth`).
2022-07-06 21:15:23 +02:00
ngb df335c8ff2 Weitere Methoden zum hinzufügen und entfernen von Shapes 2022-07-06 21:13:18 +02:00
ngb 28d996859a Versionsnummer angepasst 2022-07-06 21:12:57 +02:00
ngb a400829594 updateGame als globale update Methode der Spielemaschine 2022-07-06 21:12:41 +02:00
ngb b5faf202b8 Klassen Sound und Music zur Audiowiedergabe
Sound spielt kurze Clips (z.B. Soundeffekte) ab.
Music für längere Hintergrundmusik.

MP3s werden nur über die Einbindung der externen Abhängigkeiten jlayer, tritonus-share und mp3spi ermöglicht.
2022-07-06 20:46:49 +02:00
ngb 950098110f Eine TaskQueue in der Tasks geplant werden können
Es können Tasks (Runnables) für die geplante Ausführung (z.B. in 100 ms) übergeben werden. Die Tasks werden dann jeweils am Ende eines Frames abgearbeitet. Bei Bedarf auch parallel mit dem TaskRunner.

Das System sollte noch einmal Refactored werden. (Und ggf. auch auf seine Sinnhaftigkeit geprüft werden.)
2022-07-06 20:41:34 +02:00
ngb 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
ngb 81624e3a7a Setter für FPS verhindert das setzen auf weniger als 0 frames 2022-07-06 20:36:27 +02:00
ngb 1a26afb1ae Fehlende Imports in der Zeichenmaschine gefixt 2022-07-06 20:33:57 +02:00
ngb 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
ngb bb330c81b8 Reafactoring des ImageLoader
ImageLoader nutz nun den ResourceStreamProvider und die Logging API
2022-07-06 20:29:50 +02:00
ngb 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
ngb fb2580eb2c Logging API erstellt, um einheitliches Logging zu vereinfachen 2022-07-06 20:18:25 +02:00
ngb 49063c9581 Klasse Validator eingefügt 2022-07-06 20:16:37 +02:00
ngb 62dc4190a1 Spelling 2022-07-01 13:05:52 +02:00
ngb 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
ngb 0f0b03d8fe Verwendung eigener Schriftarten 2022-07-01 13:00:53 +02:00
ngb 57c396c2e4 Verwendung der neuen FontLoader KLasse 2022-07-01 13:00:39 +02:00
ngb bd71bb6619 Hilfsklasse um Schrifarten aus Dateien zu laden 2022-07-01 13:00:09 +02:00
ngb fb88f8a17f Spielemaschine auf neue Standardebenen angepasst 2022-06-30 21:29:38 +02:00
ngb 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
ngb 3e94f42ed3 Zeichenleinwand wird nur noch mit ColorLayer initialisiert 2022-06-30 21:25:05 +02:00
ngb 1b5f46c771 Boids Beispiel angepasst und Bug bei Null-Entfernung behoben 2022-06-30 21:24:10 +02:00
ngb 445bc29480 Vector wirft nun eine Exception, wenn durch 0 geteilt wird 2022-06-30 21:22:12 +02:00
ngb 62e9f5d0f2 Allgemeiner GraphicsLayer hinzugefügt
Vor allem für Testst hilfreich
2022-06-29 22:35:57 +02:00
ngb 4f1bd25ad7 Hehomon Beispiel implementiert
Noch Bugs bei Verwendung des Vollbildmodus vorhanden
2022-06-29 22:35:24 +02:00
ngb ff56e689f8 Test für Formen 2022-06-29 22:34:48 +02:00
ngb a01878286b Klassenmethode zur Berechnung beliebiger Ankerpunkte 2022-06-29 22:34:31 +02:00
ngb 010a37fc0e Breite / Höhe von Gruppen darf nicht manuell geändert werden 2022-06-29 22:30:39 +02:00
ngb 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
ngb 67610963f2 Spielemaschine als UNterbau für Spiele mit der ZM 2022-06-29 22:29:42 +02:00
ngb 57afc4683f Dokumentaiton verbessert 2022-06-29 22:29:23 +02:00