Hallo,
ich plane gerade an einigen Umstrukturierungen um Unitabhängigkeiten zu minimieren - wo es geht möchte ich auf Units wie "Types", "Graphics" etc. verzichten.
Deshalb habe ich mir einige Schritte überlegt.
Um es vorab zu sagen: Das Ganze wird dazu führen, dass "einige" Units mehr eingebunden werden müssen. Es wird nicht bei dem einfachen "AdDraws" und "AdClasses" bleiben:
- TAdCanvas ist in eine extra Unit gewandert
- Keine Abhängigkeit mehr zu "AdDraws"
- Nun muss jedoch die Unit "AdCanvas" extra eingebunden werden, sobald man das Canvas sinvoll verwenden will
- TAdFont wandert in eine extra Unit
- Da "TAdCanvas" "TAdFont" verwenden soll, jedoch keine Abhängigkeit zu "AdDraws" haben soll muss auch "TAdFont" umziehen
- TAdFont kümmert sich nur noch um das darstellen der Fonts, nicht mehr um das Erstellen dieser
- Um keine Abhängigkeit mehr zu "Graphics" und z.T. auch "Windows" zu haben, wandert ein "TAdFontCreator" in eine neue Unit, die Fonts (d.h. die Textur) erstellen kann
- Außerdem wird es möglich sein mehrere "FontCreators" einzubinden
- Um nach wie vor Fonts nur als Metadaten speichern zu können, werden alle "FontCreators" registriert.
- Die Unit "AdFont" und die verwendeten "FontCreators" müssen als Unit eingebunden werden.
- Da ich die Unit "Types" nicht mehr verwenden möchte (ich verwende daraus sowieso nur TPoint und TRect), wird diese durch "AdTypes" ersetzt. Auch diese Unit muss eingebunden werden.
- Es anstatt Funktionen wie "Bounds" oder "Rect" müssen die Funktionen "AdBounds" oder "AdRect" verwendet werden, anstatt "TRect" "TAdRect" etc.
- Da "TAdPerformancecounter" Abhängigkeiten zu "Windows" bzw. "LibC" hat, ist auch dieser in eine Extraklasse gewandert. "AdPerformanceCounter" muss eingebunden werden.
- Der Standard "HAI" und "BMP" Dekoder/Kompressor fliegt wegen Abhängigkeit zu "Graphics" auch erstmal aus "AdDraws" in eine neue Unit, die eingebunden werden muss.
Jetzt stellt sich natürlich die Frage - Wieso das Ganze? Ich möchte später auch die Möglichkeit geben, Non-
VCL-Anwendungen zu erstellen, die dann endlich unter Linux laufen werden - so wie bei Phoenix2D.
Außerdem ist es somit möglich wirklich nur die Module zu kompilieren, die man auch braucht. Wenn jemand nur PNG-Dateien lädt, wieso sollte er dann den BMP-Loader mitkompilieren?
Noch habe ich erst wenige der oben aufgeführten Schritte durchgeführt, wenn also irgendwer Einwände oder Kommentare hat, immer her damit. Ich versuche natürlich, Andorra 2D nach wie vor so unkompliziert wie möglich zu halten - ich möchte schließlich keinen vergraulen. Damit Anfänger keine Units vergessen, werde ich voraussichtlich Includedateien vorgeben, die die wichtigsten Units automatisch einbinden.
Dann reicht zum Beispiel folgendes:
Delphi-Quellcode:
uses
[...],
{$I Andorra}, {$I AdGUI}
Apropos "AdGUI", ich habe gestern auf vielfachen Wunsch ein
Tutorial zum GUI-System geschrieben.
Die nächste veröffentlichte Version wird voraussichtlich Andorra 2D 3.0 BETA sein, ich hoffe, das ich diese Version noch vor Weihnachten fertig bekomme - wer möchte kann es sich ja auf CD brennen und unter den Weihnachtsbaum legen
.
Hier ist meine aktualisierte Roadmap:
Code:
Andorra 2D Roadmap
------------------
This roadmap may change from time to time...
[b]Project Alpha State[/b]
[...]
Version 0.2 (Releases: ALPHA1|ALPHA2)
Plugin side:
- Transform the view matrix to a 3D view [DONE]
- Draw lines [DONE]
- Viewports [DONE]
Application side:
- Canvas [DONE]
-
GUI [DONE]
Version 0.3 (Releases: STABLE)
- Rewrite Canvas [85%]
- Extended Spriteengine [75%; Zoom works, but rotation doesn't]
- Restructure [15%]
Version 0.4 (Releases: BETA|STABLE)
Application side:
- Load 3D objects [50%]
- TGA etc. texture loader and compressor
- Expand Newton-
Unit
[b]Project Beta State[/b]
Version 0.5
Plugin side:
- Textures as rendertarget
- Shader
Version 0.6
- Animated 3D-Models
[b]Project Stable state[/b]
Version 1.0
- Everything is done
Dann mal her mit der Kritik
,
Andreas