| Geschrieben um 12:27 am 17.07.2003 | Zitat | Editieren | Löschen | |
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 | |
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 | |
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 | |
Mitglied Master Gumby Beiträge: 126 | <td valign="top"><div class="post"><p><strong>Satori:</strong></p> <blockquote> <p>Nun das währe für mich schon eine Hilfe. Da ich bisher noch vergeblich herumstochere :-)</p> </blockquote> <p>Na, dann kommt hier noch was zum Stochern. Gewarnt habe ich dich ja…</p> <p>“`Object AmandaZWinStyle</p> <p>class ZWinStyle,</p> <p>with </p> <p> Init [splitl sidebarX mainY statusY statusX;</p> <p> !—StatusWin: die Statuszeile—</p> <p> splitl = StatusWin.GetCharHeight() + StatusWin.GetCharHeight()/4;</p> <p> @split_window splitl;</p> <p> StatusWin.SetColours(C<em>WHITE, C</em>BLACK); </p> <p> StatusWin.SetFontStyle(ST_FIXED); ! Im StatusWin keine Proportionalschrift</p> <p> ! ein paar Hilfsvariablen für die Ausmaße der folgenden Fenster</p> <p> sideBarX = StatusWin.GetCharWidth() * 23;</p> <p> mainY = MainWin.GetYSize();</p> <p> statusY = StatusWin.GetYSize(); statusX = StatusWin.GetXSize();</p> <p> !—Zwin2: die Seitenleiste—</p> <p> @window_style 2 $$1001 0;</p> <p> Zwin2.SetColours(C<em>BLACK,C</em>WHITE); ! Vordergrund-, Hintergrundfarbe</p> <p> Zwin2.SetLoc(statusY+1, 1); ! linke obere Ecke: 1 Einheit unterhalb StatusWin</p> <p> Zwin2.SetSize(mainY, sideBarX); ! Nota bene: immer (Y,X)-Paare, nicht umgekehrt</p> <p> Zwin2.Activate(); Zwin2.Erase();</p> <p> </p> <p> !—Zwin3: eine simple vertikale Trennlinie—</p> <p> Zwin3.SetColours(C<em>BLACK,C</em>BLACK);</p> <p> Zwin3.SetLoc(statusY+1, sideBarX+1); ! linke obere Ecke 1 Einheit unterhalb StatusWin…</p> <p> ! …und 1 rechts der Seitenleiste (Zwin2)</p> <p> Zwin3.SetSize(mainY, 2); ! so hoch wie MainWin, 2 Einheiten breit</p> <p> Zwin3.Activate(); Zwin3.Erase();</p> <p> </p> <p> !—MainWin: das “normale” Ausgabefenster—</p> <p> MainWin.SetColours(C<em>BLACK, C</em>GREY); MainWin.SetFontStyle(ST_ROMAN);</p> <p> MainWin.SetLoc(statusY+1, sideBarX+3); ! wieder 1 unterhalb StatusWin, und drei rechts…</p> <p> ! …von Zwin2 (Zwin3 liegt ja dazwischen)</p> <p> MainWin.SetSize(mainY, statusX-sideBarX-2); ! statusX ist die Bildschirmbreite,…</p> <p> ! …abzüglich Zwin2- & Zwin3-Breite ergibt…</p> <p> ! …das das, was fürs MainWin übrig bleibt</p> <p> MainWin.Activate(); ! initialise macht im MainWin weiter</p> <p> ],</p> <p> Update[charY charX statusXChars prev;</p> <p> </p> <p> prev=ActiveZWindow; ! aktives Fenster merken, damit wir nach Update da weitermachen können</p> <p> !—Statusleiste updaten</p> <p> StatusWin.Activate(); StatusWin.Erase();</p> <p> </p> <p> ! Hilfsvariablen für die Positionen der Statuszeilenbestandteile</p> <p> charY = StatusWin.GetCharHeight(); charX = StatusWin.GetCharWidth();</p> <p> statusXChars = (StatusWin.GetXSize() / charX);</p> <p> ! Location-Namen ausgeben</p> <p> StatusWin.SetCursor ((1 + (charY/8)), 0);</p> <p> print (name) location;</p> <p> ! ganz rechts mal den Beyond-Zork-Font testen…</p> <p> StatusWin.SetCursor( (1 + (charY/8)), (statusXChars - 10) * charX);</p> <p> StatusWin.SetFont(FN_GRAPHIC);</p> <p> print”OPQRSTUVW”;</p> <p> StatusWin.SetFont(FN_NORMAL);</p> <p> ! und etwas links davon (Score/Turns) ausgeben</p> <p> StatusWin.SetCursor ((1 + (charY/8)), (statusXChars - 20) * charX);</p> <p> print ” (” , sline1 , “/” , sline2 , “)”;</p> <p> !—Seitenleiste updaten</p> <p> ZWin2.Activate(); ZWin2.Erase();</p> <p> Zwin2.SetFontStyle(ST_ROMAN);</p> <p> location.description();</p> <p> new_line;</p> <p> <Inv>;</p> <p> !new_line;</p> <p> !drawMap(location);</p> <p> </p> <p> prev.Activate(); ! anfangs gemerktes Fenster wieder aktivieren</p> <p> ]</p> <p>;“`</p> <p>…mitlesende Inform-atikerInnen mögen mir verzeihn….</p> </div></td> |
| Geschrieben um 21:07 am 17.07.2003 | Zitat | Editieren | Löschen | |
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 | |
Mitglied Baby Gumby Beiträge: 3 | nun ersteinmal danke für den code der hat schonmal Licht ins dunkel gebracht. Zitat:
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: |