Geschrieben um 11:19 am 21.05.2003 | Zitat | Editieren | Löschen | |
Gast | Ich habe zum "Rumprobieren" (bin gerade schwer am Inform-Lernen) eine eigene Library geschrieben, die menugestützte Konversationen mit NPCs ermöglicht (gibt es zwar schon zuhauf im Netz, aber wie gesagt, zum Rumprobieren). Nun stosse ich auf folgendes Problem: in dieser Lib sind sowohl Klassendefinitionen wie auch Verbdefinitionen enthalten. Wenn ich sie in meinem Story-File nun aber nach GermanG einbinde, dann meckert der Compiler, dass die Klassen, die ich natürlich in meiner Story verwenden muss, nicht definiert seien. Logisch - der "Include"-Befehl steht dann ziemlich am Ende der Story-Datei. Wenn ich sie aber am Anfang (vor den Objekten meines Spiels) einbinde, dann beschwert sich das Ding über die Verbdefinition innerhalb der Lib, weil eben GermanG noch nicht eingebunden ist und somit der "Extend"-Befehl in der Lib keinen Sinn macht. Ich könnte natürlich GermanG auch am Anfang der Story einbinden, ich habe aber Befürchtungen, damit früher oder später auf Bugs zu stoßen, weil eben JEDER GermanG erst nach den Spielobjekten einbindet. Ich könnte auch die Verbdefinition in das Story-File selbst einbinden, müsste dann aber bei jedem neuen Spiel daran "denken". Außerdem habe ich schon Libs gesehen, bei denen das mit beidem einwandfrei funktioniert. Lange Rede (schnauf, atem-hol), kurzer Sinn - habt ihr die Lösung für das Problem?? Vielen Dank schon mal... |
Geschrieben um 23:50 am 21.05.2003 | Zitat | Editieren | Löschen | |
Mitglied Dr Gumby Beiträge: 275 | Mmh, ich würd die selbstgeschriebene Library einfach in zwei Dateien aufteilen und eine davon am Anfang der Spieldatei, die andere nach GermanG einbinden. In die Erste packst du dann die Klassen-, in die Zweite die Verbdefinitionen. Kennt jemand noch eine bessere Variante? |
Geschrieben um 23:01 am 22.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Dr Gumby Beiträge: 181 | Wenn es noch interressiert: Man kann mit Ifdef/Ifndef arbeiten (DM4 §38 Controlling compilation from within) Ifndef [name]; .... 1Teil der Extension Endif Ifdef [name]; .... 2Teil der Extentson Endif Der erste Teil wird berücksichtigt, wenn [name] noch nicht deklariert wurde (Ifndef = WennNichtDefiniert) (z.B. ein Variable oder Konstante), Teil zwei wenn sie deklariert wurde (Ifdef = WennDefiniert). Das File.h muss also zweimal inkludiert werden, dazwischen irgendwo muss eben diese Variable deklariert worden sein: Anfang.... Include Extention.h .... Constant name; .... Include Extention.h ... Wenn das nicht so verständlich war, einfach mal im DM4 § 38 nachschauen ;-) Grüße Kris |
Geschrieben um 00:30 am 23.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Dr Gumby Beiträge: 275 | Die Konstante könntest du auch im ifndef-Block setzen (die Abfrage hat ja dann schon stattgefunden), dann müsste das der Autor nicht in der Spieldatei machen, sondern bräuchte wirklich nur zweimal die Datei einzubinden. |
Geschrieben um 09:45 am 23.06.2004 | Zitat | Editieren | Löschen | |
Mitglied Dr Gumby Beiträge: 181 | Stimmt! Darauf bin ich noch gar nicht gekommen. Das machts dann für den Anwender noch einfacher. Es lohnt sich also, auch auf einen über ein Jahr alten Beitrag zu antworten ;-) |