Autor |
Nachricht |
< Demos Sourcen für LibV6 |
|
Verfasst am:
Do, 17 Jul 2003 - 11:27
|
|
|
Neuling
Anmeldungsdatum: 17.07.2003
Beiträge: 3
|
|
Gibt es irgendwo ein paar demo Source für den Umgang mit der LibV6. Also Fensteraufteilung etc.. ? |
|
|
|
|
|
Verfasst am:
Do, 17 Jul 2003 - 17:41
|
|
|
Kompassleser
Anmeldungsdatum: 25.08.2002
Beiträge: 142
|
|
Nicht, daß ich wüßte (aber viel weiß ich nicht, ist mal wieder alles etwas länger her).
Die Datei V6.h enthält ja schon ein das übliche V5-Verhalten emulierendes ZWinStyle-Objekt (namentlich DefaultZWinStyle), das dann einfach am Anfang der initialise-Routine an V6Init() übergeben wird und dessen Init- und Update-Methoden das Aufbauen und Updaten der einzelnen Fenster erledigen.
Ich könnte _notfalls_ meine Privatversion davon posten, die (u.a.) insgesamt 4 Fenster aufbaut, von denen eines als permanente Look/Inventory-Leiste fungiert. Ist aber nichts Kompliziertes, und sicherlich schlecht "programmiert" (== herumprobiert, bis es geklappt hat; ich kenn mich mit Inform/der Z-Machine beim besten Willen nicht aus).
Viel Glück |
|
|
|
|
|
Verfasst am:
Do, 17 Jul 2003 - 18:30
|
|
|
Neuling
Anmeldungsdatum: 17.07.2003
Beiträge: 3
|
|
Ich glaube ich werde m ir mal die V6 lib Code etwas genauer anschauen vleiecht kommt ich ja hinter die "Fenster Mysterien"
Nun das währe für mich schon eine Hilfe. Da ich bisher noch vergeblich herumstochere :-) |
|
|
|
|
|
Verfasst am:
Do, 17 Jul 2003 - 19:08
|
|
|
Kompassleser
Anmeldungsdatum: 25.08.2002
Beiträge: 142
|
|
Satori hat folgendes geschrieben: | Nun das währe für mich schon eine Hilfe. Da ich bisher noch vergeblich herumstochere :-) |
Na, dann kommt hier noch was zum Stochern. Gewarnt habe ich dich ja...
Code: | Object AmandaZWinStyle
class ZWinStyle,
with
Init [splitl sidebarX mainY statusY statusX;
!--StatusWin: die Statuszeile--
splitl = StatusWin.GetCharHeight() + StatusWin.GetCharHeight()/4;
@split_window splitl;
StatusWin.SetColours(C_WHITE, C_BLACK);
StatusWin.SetFontStyle(ST_FIXED); ! Im StatusWin keine Proportionalschrift
! ein paar Hilfsvariablen für die Ausmaße der folgenden Fenster
sideBarX = StatusWin.GetCharWidth() * 23;
mainY = MainWin.GetYSize();
statusY = StatusWin.GetYSize(); statusX = StatusWin.GetXSize();
!--Zwin2: die Seitenleiste--
@window_style 2 $$1001 0;
Zwin2.SetColours(C_BLACK,C_WHITE); ! Vordergrund-, Hintergrundfarbe
Zwin2.SetLoc(statusY+1, 1); ! linke obere Ecke: 1 Einheit unterhalb StatusWin
Zwin2.SetSize(mainY, sideBarX); ! Nota bene: immer (Y,X)-Paare, nicht umgekehrt
Zwin2.Activate(); Zwin2.Erase();
!--Zwin3: eine simple vertikale Trennlinie--
Zwin3.SetColours(C_BLACK,C_BLACK);
Zwin3.SetLoc(statusY+1, sideBarX+1); ! linke obere Ecke 1 Einheit unterhalb StatusWin...
! ...und 1 rechts der Seitenleiste (Zwin2)
Zwin3.SetSize(mainY, 2); ! so hoch wie MainWin, 2 Einheiten breit
Zwin3.Activate(); Zwin3.Erase();
!--MainWin: das "normale" Ausgabefenster--
MainWin.SetColours(C_BLACK, C_GREY); MainWin.SetFontStyle(ST_ROMAN);
MainWin.SetLoc(statusY+1, sideBarX+3); ! wieder 1 unterhalb StatusWin, und drei rechts...
! ...von Zwin2 (Zwin3 liegt ja dazwischen)
MainWin.SetSize(mainY, statusX-sideBarX-2); ! statusX ist die Bildschirmbreite,...
! ...abzüglich Zwin2- & Zwin3-Breite ergibt...
! ...das das, was fürs MainWin übrig bleibt
MainWin.Activate(); ! initialise macht im MainWin weiter
],
Update[charY charX statusXChars prev;
prev=ActiveZWindow; ! aktives Fenster merken, damit wir nach Update da weitermachen können
!--Statusleiste updaten
StatusWin.Activate(); StatusWin.Erase();
! Hilfsvariablen für die Positionen der Statuszeilenbestandteile
charY = StatusWin.GetCharHeight(); charX = StatusWin.GetCharWidth();
statusXChars = (StatusWin.GetXSize() / charX);
! Location-Namen ausgeben
StatusWin.SetCursor ((1 + (charY/8)), 0);
print (name) location;
! ganz rechts mal den Beyond-Zork-Font testen...
StatusWin.SetCursor( (1 + (charY/8)), (statusXChars - 10) * charX);
StatusWin.SetFont(FN_GRAPHIC);
print"OPQRSTUVW";
StatusWin.SetFont(FN_NORMAL);
! und etwas links davon (Score/Turns) ausgeben
StatusWin.SetCursor ((1 + (charY/8)), (statusXChars - 20) * charX);
print " (" , sline1 , "/" , sline2 , ")";
!--Seitenleiste updaten
ZWin2.Activate(); ZWin2.Erase();
Zwin2.SetFontStyle(ST_ROMAN);
location.description();
new_line;
<Inv>;
!new_line;
!drawMap(location);
prev.Activate(); ! anfangs gemerktes Fenster wieder aktivieren
]
; |
...mitlesende Inform-atikerInnen mögen mir verzeihn.... |
|
|
|
|
|
Verfasst am:
Do, 17 Jul 2003 - 20:07
|
|
|
Abenteurer
Anmeldungsdatum: 25.08.2002
Beiträge: 298
|
|
Warum weichst du nicht gleich auf Glulx aus? Das ist sehr viel komfortabler in meinen Augen. |
|
|
|
|
|
Verfasst am:
Do, 17 Jul 2003 - 22:50
|
|
|
Neuling
Anmeldungsdatum: 17.07.2003
Beiträge: 3
|
|
nun ersteinmal danke für den code der hat schonmal Licht ins dunkel gebracht.
Zitat: | Warum weichst du nicht gleich auf Glulx aus? Das ist sehr viel komfortabler in meinen Augen. |
Ich bin noch nicht geschafft Aufgrund ein paar Library Problemen das Teil unter Linux zu kompilieren. Aber der Hauptgrund ist eigentlich das ich mich erstmal ausreichend mit Inform und z-machine auskennen möchste bevor ich mich an den glulx ranwage. :lol: :twisted: |
|
|
|
|
|