IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Demos Sourcen für LibV6
AntwortenNeues ThemaNeue Umfrage

Demos Sourcen für LibV6

Geschrieben um 12:27 am 17.07.2003 | Zitat | Editieren | Löschen
Satori
Mitglied
Baby Gumby
Beiträge: 3

Gibt es irgendwo ein paar demo Source für den Umgang mit der LibV6. Also Fensteraufteilung etc.. ?

Geschrieben um 18:41 am 17.07.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

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

Geschrieben um 19:30 am 17.07.2003 | Zitat | Editieren | Löschen
Satori
Mitglied
Baby Gumby
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 :-)

Geschrieben um 20:08 am 17.07.2003 | Zitat | Editieren | Löschen
Ally
Mitglied
Master Gumby
Beiträge: 126

Satori:

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...



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....
Geschrieben um 21:07 am 17.07.2003 | Zitat | Editieren | Löschen
kairo
Mitglied
Dr Gumby
Beiträge: 284

Warum weichst du nicht gleich auf Glulx aus? Das ist sehr viel komfortabler in meinen Augen.

Geschrieben um 23:50 am 17.07.2003 | Zitat | Editieren | Löschen
Satori
Mitglied
Baby Gumby
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:

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz