<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - Zombie - Immediate Mode GUI</title>
		<link>https://www.blitzforum.de/worklogs/264/</link>
		<description>Worklog von ComNik</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Mon, 31 May 2010 20:02:39 +0200</pubDate>
		<lastBuildDate>Mon, 31 May 2010 20:02:39 +0200</lastBuildDate>

		<item>
			<title>20. Neues Konzept - &quot;Immediate Mode GUI&quot;</title>
			<link>https://www.blitzforum.de/worklogs/264/#2453</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2453</guid>
			<author>ComNik</author>
			<description>Huhu (:&lt;br /&gt;&lt;br /&gt;Also, kurze Vorgeschichte:&lt;br /&gt;&lt;br /&gt;Nachdem ich die Zombie GUI weitgehend nutzbar gekriegt hatte, wollte ich sie nat&amp;uuml;rlich auch nutzen.&lt;br /&gt;Also fing ich mit meinen lang geplanten Projekten an : Dem Map Editor f&amp;uuml;r The Vorx und dem Entity Editor f&amp;uuml;r Vorx&amp;sup3;Physics.&lt;br /&gt;&lt;br /&gt;Doch da entwickelten sich schon bald die ersten Unanehmlichkeiten (keine Fehler, nur eben Unannehmlichkeiten &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;).&lt;br /&gt;&lt;br /&gt;Denn um die GUI f&amp;uuml;r den Entity Editor auf den Schirm zu bringen musste ich soviel Code schreiben, dass ich das ganze der &amp;uuml;bersichtlichkeithalber in ein eigenes Include ausgelagert hatte.&lt;br /&gt;Als erste Vereinfachung hab ich dann wie im letzten Eintrag beschrieben die Men&amp;uuml; Strukturen eingef&amp;uuml;hrt die das wohl h&amp;auml;ufigste Gadget in einem Editor schnell erstellen k&amp;ouml;nnen.&lt;br /&gt;&lt;br /&gt;Trotzdem war der &amp;quot;Creation Pass&amp;quot; immer noch ziemlich umfangreich.&lt;br /&gt;&lt;br /&gt;Dann fand ich folgendes: &lt;b&gt;Immediate Mode GUI Systems&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Dieser Eintrag soll dazu dienen, diese (fantastische) Methode der GUI Implementation zu beschreiben und dann nat&amp;uuml;rlich den Weg in die Zombie GUI erl&amp;auml;utern.&lt;br /&gt;&lt;br /&gt;Also los gehts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Der alte Weg:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 1.) Creation Pass&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 2.) Init Pass&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 3.) Action/Update Pass&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 4.) Render Pass&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;mal vornehm ausgedr&amp;uuml;ckt &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Und nun die neue Methode:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 1.) Action/Update Pass&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 2.) Render Pass&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Wobei 1.) und 2.) meistens zusammengefasst werden. Nur noch 1 Pass also &amp;quot;Immediate&amp;quot;.&lt;br /&gt;&lt;br /&gt;Jetzt die &lt;b&gt;Vorteile dieser Methode:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;span style=&quot;color: #00FF00; font-size: 1.1em;&quot;&gt;&amp;Uuml;berhaupt kein Creation Pass - keinerlei Overhead im &amp;quot;Header&amp;quot; &lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;color: #00FF00; font-size: 1.1em;&quot;&gt;Keine GUI interne Speicherlast! (erkl&amp;auml;r ich weiter unten)&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;color: #00FF00; font-size: 1.1em;&quot;&gt;Super einfach zu bedienen (immer nur eine Funktion pro Gadget)&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;color: #00FF00; font-size: 1.1em;&quot;&gt;Keinerlei Synchronization zwischen Gadgets (siehe unten...)&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;und die &lt;b&gt;Nachteile:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;span style=&quot;color: #FF0000; font-size: 1.1em;&quot;&gt;Eventuell ein paar wirklich komplexe M&amp;ouml;glichkeiten weniger&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;color: #FF0000; font-size: 1.1em;&quot;&gt;Viel Code in der Hauptschleife (einfach Funktions Zeiger nutzen...)&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;color: #FF0000; font-size: 1.1em;&quot;&gt;Kein einzelner Draw()/Update() Aufruf mehr&lt;/span&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Das Konzept ist folgendes:&lt;br /&gt;&lt;br /&gt;Warum muss jedes kleine Gadget st&amp;auml;ndig alle Daten speichern, die es brauchen w&amp;uuml;rde, w&amp;uuml;rde es gerade benutzt werden. Also angenommen wir haben zwei TextBoxen. Nat&amp;uuml;rlich kann immer nur &lt;b&gt;eine&lt;/b&gt; gleichzeitig genutzt werden. Die zweite speichert aber trotzdem alles was sie brauchen w&amp;uuml;rde (Mausposition, Maximale Buchstabenzahl etc...). Das ansich w&amp;auml;re kein gro&amp;szlig;er Nachteil (selbst gro&amp;szlig;e GUI Anwendungen sind noch recht performant). Aber das Problem f&amp;auml;ngt an, wenn man z.B den Text aus der Textbox braucht. SpielerName = TextBox.GetText(). W&amp;auml;re es nicht viel besser wenn alle Daten, die man sowieso braucht, von der Anwendung verwaltet werden?&lt;br /&gt;&lt;br /&gt;Retained (der alte Weg):&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;&lt;br /&gt;Global spielerName&amp;#58;TTextBox = CreateTextBox&amp;#40;...&amp;#41;&lt;br /&gt;spielerName.Init&amp;#40;...&amp;#41;&lt;br /&gt;&lt;br /&gt;'//im Spiel dann&lt;br /&gt;Player.name = spielerName.GetText&amp;#40;&amp;#41;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Immediate:&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('1')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('1')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox1&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('1');&quot;&gt;&amp;nbsp;&lt;br /&gt;'//im Spiel&lt;br /&gt;Player.name = DoTextbox&amp;#40;x,y,w,h,maxChar,etc...&amp;#41;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Darin liegt auch schon der ganze Gag.&lt;br /&gt;&lt;br /&gt;Die Implementation ist ziemlich einfach (also logisch gesehen):&lt;br /&gt;&lt;br /&gt;Wir brauchen zwei (oder mehr, mindestens zwei) Variablen die eine beliebige Identifikation von Gadgets speichern k&amp;ouml;nnen. Im einfachsten Fall Integers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox2&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('2')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox2&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('2')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox2&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('2');&quot;&gt;&lt;br /&gt;Global GUI_HOVER&amp;#58;Int &lt;br /&gt;Global GUI_ACTIVE&amp;#58;Int&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In Hover ist nun immer die ID (einfach eine Zahl die beim Funktionsaufruf mit &amp;uuml;bergeben wird) des Gadgets,&lt;br /&gt;&amp;uuml;ber dem z.B der Mauszeiger schwebt. Also das Gadget mit dem der User evtl. gleich interagieren will.&lt;br /&gt;Sollte man &amp;uuml;brigens wollen, dass mehrere Gadgets &amp;quot;gehovert&amp;quot; werden, wenn eins gehovert wird, muss man ihnen einfach die gleiche id geben.&lt;br /&gt;&lt;br /&gt;Und Active ist das, mit dem er es gerade tut. Die Beiden m&amp;uuml;ssen logischerweise nicht die gleichen sein.&lt;br /&gt;&lt;br /&gt;Die unterschiedlichen Do&amp;lt;GadgetName&amp;gt;() Funktionen machen ihr Ding und updaten GUI_HOVER und GUI_ACTIVE.&lt;br /&gt;&lt;br /&gt;Das wars auch schon.&lt;br /&gt;&lt;br /&gt;Im Moment werden nur Buttons unterst&amp;uuml;tzt. Aber da ich nur die Update() Funktionen aus der alten Zombie GUI ein wenig umbauen muss, werden das bestimmt bald mehr &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Ich hoffe ich konnte euch einen Einblick in diesen eleganten Weg zur GUI Programmierung geben.&lt;br /&gt;Mal sehen wie sich das entwickelt.&lt;br /&gt;lg&lt;br /&gt;ComNik&lt;br /&gt;&lt;br /&gt;</description>
			<pubDate>Mon, 31 May 2010 20:02:39 +0200</pubDate>
		</item>

		<item>
			<title>19. Menus</title>
			<link>https://www.blitzforum.de/worklogs/264/#2437</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2437</guid>
			<author>ComNik</author>
			<description>Guten Morgen,&lt;br /&gt;&lt;br /&gt;da ich in letzter Zeit viel mit der GUI mache (Map Editor, Entity Editor etc...) ist mir aufgefallen, dass&lt;br /&gt;einfache Menus doch ziemlichen Aufwand ben&amp;ouml;tigen.&lt;br /&gt;&lt;br /&gt;Erstmal, was wollte ich erreichen:&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=8641&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eben so ein Dropdown Menu.&lt;br /&gt;&lt;br /&gt;Der Codeaufwand sah in etwa so aus:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]&lt;br /&gt;'//Grafiken laden&lt;br /&gt;Global buttonImg:TImage = LoadAnimImage(&amp;quot;data/gfx/button.png&amp;quot;,100,20,0,2,MASKEDIMAGE)&lt;br /&gt;&lt;br /&gt;'//Hier der Button, der das ganze &amp;quot;aufklappt&amp;quot;&lt;br /&gt;Global _map:TButton = TButton.CreateButton(2,2,100,20,buttonImg)&lt;br /&gt;_map.InitButton(&amp;quot;Map&amp;quot;,0,TYP_TABBER) 'Der Button ist ein Tabber, das erspart ne extra &amp;quot;aufklapp&amp;quot; Funktion &lt;br /&gt;&lt;br /&gt;'//Und das eigentliche Menu (in der alten Version eben noch ein TWindow)&lt;br /&gt;Global _mapMenu:TWindow = TWindow.CreateMenu(2,22,100,0)&lt;br /&gt;_mapMenu.InitWindow(&amp;quot;&amp;quot;)&lt;br /&gt;&lt;br /&gt;        '//Und jetzt jeden Button einzeln zum Fenster hinzuf&amp;uuml;gen...&lt;br /&gt;        Local _newMap:TButton = TButton.CreateButton( 'Position,etc... muss hier nich alles nochmal rein)&lt;br /&gt;        _newMap.Init()&lt;br /&gt;        _mapMenu.AddGadget(_newMap)&lt;br /&gt;&lt;br /&gt;       '//Das war der Aufwand f&amp;uuml;r einen Button&lt;br /&gt;&lt;br /&gt;       Local _saveMap:TButton = TButton.CreateButton()&lt;br /&gt;       _saveMap.Init()&lt;br /&gt;       _mapMenu.AddGadget(_saveMap)&lt;br /&gt;&lt;br /&gt;      Local _loadMap:TButton = TButton.CreateButton()&lt;br /&gt;      _loadMap.Init()&lt;br /&gt;     _mapMenu.AddGadget(_loadMap)&lt;br /&gt;&lt;br /&gt;'//Und schlussendlich dem Tabber sagen, was er aufklappen soll&lt;br /&gt;_map.SetChild(_mapMenu)&lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, ziemlich umst&amp;auml;ndlich, wenn man Bedenkt: Mehr als ein Men&amp;uuml;... , mehr als drei Buttons und eventuell f&amp;uuml;r jeden Button noch ne Zeile, die ihm eine OnClick Funktion zuweist.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also habe ich endlich die Menus eingebaut, die nur daf&amp;uuml;r dienen sollen, eine Anzahl Buttons schnell und einfach aufzulisten...&lt;br /&gt;&lt;br /&gt;Kurzer Sinn, der Code f&amp;uuml;r das gleiche Ergebnis, sieht nun so aus:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]&lt;br /&gt;Global _map:TButton = TButton.CreateButton(2,2,100,20,buttonImg)&lt;br /&gt;_map.InitButton(&amp;quot;Map&amp;quot;,0,TYP_TABBER)&lt;br /&gt;&lt;br /&gt;Global _mapMenu:TMenu = TMenu.CreateMenu(2,22,100,0)&lt;br /&gt;_mapMenu.InitMenu(buttonImg,20,2,0)&lt;br /&gt;_mapMenu.AddButton(&amp;quot;New Map&amp;quot;)&lt;br /&gt;_mapMenu.AddButton(&amp;quot;Save Map&amp;quot;,SaveMap) '//SaveMap ist in diesem Fall der Name der OnClick Funktion&lt;br /&gt;_mapMenu.AddButton(&amp;quot;Load Map&amp;quot;,LoadMap)&lt;br /&gt;_map.SetChild(_mapMenu)&lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;Wie gesagt, gleiches Ergebnis, viel weniger Aufwand.&lt;br /&gt;Ein Menu wird wie jedes andere Gadget erstellt, aber wird mit einer Grafik f&amp;uuml;r die Buttons, dem Abstand zwischen diesen und einem kleinen Flag ob der hover Effekt dargestellt werden soll initialisiert.&lt;br /&gt;&lt;br /&gt;Danach k&amp;ouml;nnen Buttons ganz einfach mir AddButton(text,OnClick Pointer, OnSwitch Pointer)&lt;br /&gt;hinzugef&amp;uuml;gt werden.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Das wars.&lt;br /&gt;lg&lt;br /&gt;ComNik</description>
			<pubDate>Sat, 29 May 2010 10:03:43 +0200</pubDate>
		</item>

		<item>
			<title>18. Alpha Release 0.0.9</title>
			<link>https://www.blitzforum.de/worklogs/264/#2359</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2359</guid>
			<author>ComNik</author>
			<description>Moin,&lt;br /&gt;&lt;br /&gt;Wie man dem Titel schon entnehmen kann, kommt heute mal ein erstes Release. 0.0.9 steht einfach nur f&amp;uuml;r RC.Beta.Alpha, daher heute Alpha 0.9 - Grundfunktionalit&amp;auml;t.&lt;br /&gt;&lt;br /&gt;Dieses Release enth&amp;auml;lt:&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  Vorkompiliertes Modul&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  Modul Doku&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  Noch keinen Code&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  Windows&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  Buttons&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  Text Input&lt;br /&gt;&lt;br /&gt;Wer lust hat kann ja mal ein paar Tests machen und am besten r&amp;uuml;ckmeldung &amp;uuml;ber die Bedienbarkeit geben. Das w&amp;auml;re sehr nett &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Hier erstmal der Download:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=8491&quot; target=&quot;_blank&quot;&gt;Zombie GUI - Alpha 0.0.9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;und hier nochmal eine .exe mit Grafiken, wenn man nur bisschen klicken will:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=8493&quot; target=&quot;_blank&quot;&gt;Zombie GUI Executable + Gfx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wegen einem kleinen Missverst&amp;auml;ndnis mit SVN kann es sein, dass ich eventuell einen falschen Download hochgeladen habe. Ich bin mir aber ziemlich sicher &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So und hier nochmal ein Beispiel:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]&lt;br /&gt;SuperStrict &lt;br /&gt;&lt;br /&gt;'//Modul laden&lt;br /&gt;Import ComNik.Zombie &lt;br /&gt;&lt;br /&gt;Graphics(800,600,0,60) &lt;br /&gt;SetMaskColor(255,0,255) &lt;br /&gt;&lt;br /&gt;'//Die ganzen Grafiken laden &lt;br /&gt;Global mouse:TImage = LoadImage(&amp;quot;data/gfx/cursor.png&amp;quot;)&lt;br /&gt;Global button:TImage = LoadAnimImage(&amp;quot;data/gfx/buttons/button2.png&amp;quot;,100,20,0,3)&lt;br /&gt;Global checkBox:TImage = LoadAnimImage(&amp;quot;data/gfx/buttons/switch.png&amp;quot;,13,13,0,3)&lt;br /&gt;Global radioImg:TImage = LoadAnimImage(&amp;quot;data/gfx/buttons/radio.png&amp;quot;,13,13,0,3)&lt;br /&gt;Global sliderbar:TImage = LoadImage(&amp;quot;data/gfx/buttons/slider.png&amp;quot;)&lt;br /&gt;Global inputImage:TImage = LoadImage(&amp;quot;data/gfx/input.png&amp;quot;)&lt;br /&gt;Global sliderImg:TImage = LoadImage(&amp;quot;data/gfx/buttons/sliderButton.png&amp;quot;) &lt;br /&gt;&lt;br /&gt;Global font:TImageFont = LoadImageFont(&amp;quot;data/gfx/fonts/visitor.ttf&amp;quot;,15)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'..........................................&lt;br /&gt;' Gadgets erstellen&lt;br /&gt;'&lt;br /&gt;&lt;br /&gt;'// Zuerst einmal ein Window, was alle anderen Gadgets beinhaltet&lt;br /&gt;Global demoWin:TWindow = TWindow.CreateWindow(100,100,400,400)&lt;br /&gt;demoWin.InitWindow(&amp;quot;Window 1&amp;quot;) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'//Ein stinknormaler click Button&lt;br /&gt;Global click:TButton = TButton.CreateButton(350,250,100,50,button)&lt;br /&gt;click.font = font&lt;br /&gt;click.InitButton(&amp;quot;Click&amp;quot;,True,TYP_CLICK) ' &amp;lt;-- Da ist er genau spezifiziert&lt;br /&gt;click.OnClick = ClickAction ' Funktion wird bei einem Klick aufgerufen&lt;br /&gt;click.OnSwitch = SwitchAction ' Funktion wird alle zwei Klicks aufgerufen&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'// Eine CheckBox, auch nur ein Button aber mit anderen Settings&lt;br /&gt;Global check:TButton = TButton.CreateButton(460,250,50,50,checkBox,click)&lt;br /&gt;check.InitButton(&amp;quot;&amp;quot;,True,TYP_SWITCH) ' &amp;lt;-- see?&lt;br /&gt;check.switch = 1 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'// Und ein Radio Button, der allerdings als Tabber fungiert&lt;br /&gt;Global radio:TButton = TButton.CreateButton(350,310,13,13,radioImg,click)&lt;br /&gt;radio.InitButton(&amp;quot;&amp;quot;,True,TYP_TABBER) ' &amp;lt;-- ...&lt;br /&gt;radio.switch = 1&lt;br /&gt;radio.SetChild(click) '&amp;lt;-- Dieses Gadget wird &amp;quot;getabbt&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'// Und eine Text Box&lt;br /&gt;Global text:TInput = TInput.CreateInput(350,330,200,200,inputImage)&lt;br /&gt;text.InitInput(1000,100)&lt;br /&gt;'text.SetFont(font)&lt;br /&gt;&lt;br /&gt;'// Alle Gadgets zum Window hinzuf&amp;uuml;gen&lt;br /&gt;demoWin.AddGadget(click)&lt;br /&gt;demoWin.AddGadget(check)&lt;br /&gt;demoWin.AddGadget(radio) &lt;br /&gt;demoWin.AddGadget(text)&lt;br /&gt;&lt;br /&gt;demoWin.OnClick = WinAction ' Sollte man das Window klicken&lt;br /&gt;  &lt;br /&gt;Global mh:Int &lt;br /&gt;&lt;br /&gt;HideMouse()&lt;br /&gt;SetClsColor(100,200,100)&lt;br /&gt;&lt;br /&gt;While Not (KeyDown(KEY_ESCAPE) Or AppTerminate())&lt;br /&gt;	Cls	&lt;br /&gt;		mh = MouseHit(1) &lt;br /&gt;		&lt;br /&gt;		demoWin.Update(mh) ' &amp;lt;-- MouseHit &amp;uuml;bergeben&lt;br /&gt;		demoWin.Draw()  &lt;br /&gt;&lt;br /&gt;		DrawImageRect(mouse,MouseX(),MouseY(),32,32)		&lt;br /&gt;	Flip&lt;br /&gt;Wend&lt;br /&gt;End &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'// Und hier ein paar &amp;quot;Actions&amp;quot; f&amp;uuml;r die click und switch Pointer&lt;br /&gt;Function ClickAction(gadget:TGadget)&lt;br /&gt;	DrawText(&amp;quot;clicked&amp;quot;,0,0) &lt;br /&gt;End Function &lt;br /&gt;&lt;br /&gt;Function SwitchAction(gadget:TGadget)&lt;br /&gt;	DrawText(&amp;quot;switched&amp;quot;,0,10)&lt;br /&gt;End Function &lt;br /&gt;&lt;br /&gt;Function WinAction(gadget:TGadget)&lt;br /&gt;	DrawText(&amp;quot;window is clicked&amp;quot;,0,60)&lt;br /&gt;End Function &lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT: Hier ist mal ein etwas umfangreicheres Beispiel.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=8502&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Noch fragen? Einfach in den Kommentaren stellen, ich arbeite aber auch an einer umfassenderen pdf Doku.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Das wars f&amp;uuml;r heute,&lt;br /&gt;lg &lt;br /&gt;ComNik</description>
			<pubDate>Thu, 06 May 2010 19:46:07 +0200</pubDate>
		</item>

		<item>
			<title>17. Input</title>
			<link>https://www.blitzforum.de/worklogs/264/#2356</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2356</guid>
			<author>ComNik</author>
			<description>Guten Abend,&lt;br /&gt;&lt;br /&gt;viel Zeit hab ich nicht (Arbeiten, Schule hach... -.-)&lt;br /&gt;&lt;br /&gt;Wie man dem Titel entnehmen kann, Text Boxen sind auch drin:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=8487&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Das wars auch schon f&amp;uuml;r heute.&lt;br /&gt;Mehr demn&amp;auml;chst.&lt;br /&gt;&lt;br /&gt;lg und gn8&lt;br /&gt;ComNik</description>
			<pubDate>Wed, 05 May 2010 22:50:28 +0200</pubDate>
		</item>

		<item>
			<title>16. Neuer Name, nues Glück</title>
			<link>https://www.blitzforum.de/worklogs/264/#2345</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2345</guid>
			<author>ComNik</author>
			<description>Wie schon im The Vorx Worklog erw&amp;auml;hnt, habe ich in den Ferien die WarpGUI&lt;br /&gt;komplett neu geschrieben. Au&amp;szlig;erdem in einem Anfall von Ideenlosigkeit in Zombie GUI  umbenannt...&lt;br /&gt;&lt;br /&gt;Was ist neu?&lt;br /&gt;&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Es gibt nun auch richtig Windows, mit Status Bar, etc...&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Menus gibts immernoch, sind aber den Windows untergeordnet&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Windows und Menus haben nichtmehr eine Add Methode f&amp;uuml;r jedes Gadget, sondern nur noch eine&lt;br /&gt;allgemeine AddGadget() Methode.&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Buttons k&amp;ouml;nnen nicht nur auf click sondern auch auf switch (also schalter) abgefragt werden:&lt;br /&gt;                    - 1.Click: switch = 1, 2.Click Switch = 0 etc...&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Buttons k&amp;ouml;nnen au&amp;szlig;erdem als Tabber fungieren (mehr dazu irgendwann...)&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Alle Gadgets haben zwei Funktionszeiger &amp;quot;OnClick()&amp;quot; und &amp;quot;OnSwitch()&amp;quot; die automatisch (nat&amp;uuml;rlich nur falls gesetzt) aufgerufen werden.&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Es gibt Slider und Scroller&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Fonts sind nun endlich individuell setzbar.&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Es gibt drei &amp;quot;Beschriftungs aligns&amp;quot; CAPTION_LEFT, CAPTION_CENTER und CAPTION_RIGHT&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Gadgets m&amp;uuml;ssen nichtmehr zwingend in einem Men&amp;uuml; vorkommen&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Buttons k&amp;ouml;nnen gegrouped werden (z.B f&amp;uuml;r eine gruppe radio Buttons)&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Buttons k&amp;ouml;nnen einem von drei Typen angeh&amp;ouml;ren TYP_CLICK, TYP_SWITCH oder TYP_TABBER&lt;br /&gt;  &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Je nach Typ werden die Dinger passend gemalt (mit zus&amp;auml;tzlicher hover variable , um zu definieren ob auch der Hover Effekt als Frame vorhanden ist...)&lt;br /&gt;&lt;br /&gt;Das sind die Neuerungen.&lt;br /&gt;Im Moment gibt es nur Windows, Menus, Buttons und Slider.&lt;br /&gt;&lt;br /&gt;In Arbeit sind:&lt;br /&gt;   &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; nat&amp;uuml;rlich List/Combo Boxen&lt;br /&gt;   &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Textareas&lt;br /&gt;   &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Image Boxen&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem muss ich wieder die DrawTiled() Methode f&amp;uuml;r Gadgets einbauen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hier mal ein kleines Beispiel, wie man die GUI z.B nutzen k&amp;ouml;nnte:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]&lt;br /&gt;Graphics(800,600,0,60) &lt;br /&gt;&lt;br /&gt;SetMaskColor(255,0,255) &lt;br /&gt;&lt;br /&gt;Global mouse:TImage = LoadImage(&amp;quot;data/gfx/cursor.png&amp;quot;)&lt;br /&gt;Global button:TImage = LoadAnimImage(&amp;quot;data/gfx/buttons/button2.png&amp;quot;,100,20,0,3)&lt;br /&gt;Global checkBox:TImage = LoadAnimImage(&amp;quot;data/gfx/buttons/switch.png&amp;quot;,13,13,0,3)&lt;br /&gt;Global radioImg:TImage = LoadAnimImage(&amp;quot;data/gfx/buttons/radio.png&amp;quot;,13,13,0,3)&lt;br /&gt;&lt;br /&gt;Global font:TImageFont = LoadImageFont(&amp;quot;data/gfx/fonts/visitor.ttf&amp;quot;,15)&lt;br /&gt;&lt;br /&gt;Global demoWin:TWindow = TWindow.CreateWindow(100,100,400,400) ' Kein Bild, flag = GUI_DONTDRAW&lt;br /&gt;demoWin.InitWindow(&amp;quot;Window 1&amp;quot;)&lt;br /&gt;&lt;br /&gt;Global click:TButton = TButton.CreateButton(350,250,100,50,button)&lt;br /&gt;click.font = font&lt;br /&gt;click.InitButton(&amp;quot;Click&amp;quot;,True,TYP_CLICK)&lt;br /&gt;click.OnClick = ClickAction&lt;br /&gt;click.OnSwitch = SwitchAction&lt;br /&gt;&lt;br /&gt;Global check:TButton = TButton.CreateButton(460,250,50,50,checkBox,click)&lt;br /&gt;check.InitButton(&amp;quot;&amp;quot;,True,TYP_SWITCH)&lt;br /&gt;check.switch = 1 &lt;br /&gt;&lt;br /&gt;Global radio:TButton = TButton.CreateButton(350,310,13,13,radioImg,click)&lt;br /&gt;radio.InitButton(&amp;quot;&amp;quot;,True,TYP_TABBER)&lt;br /&gt;radio.switch = 1&lt;br /&gt;radio.SetChild(demoWin) &lt;br /&gt;&lt;br /&gt;demoWin.AddGadget(click)&lt;br /&gt;demoWin.AddGadget(check)&lt;br /&gt;demoWin.AddGadget(radio)&lt;br /&gt;&lt;br /&gt;demoWin.OnClick = WinAction&lt;br /&gt;  &lt;br /&gt;Global mh:Int &lt;br /&gt;&lt;br /&gt;HideMouse()&lt;br /&gt;SetClsColor(100,200,100)&lt;br /&gt;&lt;br /&gt;While Not (KeyDown(KEY_ESCAPE) Or AppTerminate())&lt;br /&gt;	Cls	&lt;br /&gt;		mh = MouseHit(1) &lt;br /&gt;		&lt;br /&gt;		demoWin.Update(mh)&lt;br /&gt;		demoWin.Draw()&lt;br /&gt;		&lt;br /&gt;		DrawImageRect(mouse,MouseX(),MouseY(),32,32)		&lt;br /&gt;	Flip&lt;br /&gt;Wend&lt;br /&gt;End &lt;br /&gt;&lt;br /&gt;Function ClickAction(gadget:TGadget)&lt;br /&gt;	Print(&amp;quot;clicked&amp;quot;) &lt;br /&gt;End Function &lt;br /&gt;&lt;br /&gt;Function SwitchAction(gadget:TGadget)&lt;br /&gt;	Print(&amp;quot;switched&amp;quot;)&lt;br /&gt;End Function &lt;br /&gt;&lt;br /&gt;Function WinAction(gadget:TGadget)&lt;br /&gt;	Print(&amp;quot;window is clicked&amp;quot;)&lt;br /&gt;End Function &lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;demoWin ist das Fenster, zu dem alle Gadgets geh&amp;ouml;ren. Somit werden sie automatisch bei demoWin.Update/Draw mit upgedatet/gezeichnet.&lt;br /&gt;&lt;br /&gt;Das ganze s&amp;auml;he z.B so aus:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=8466&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Das Window wird nicht gezeichnet, da ich noch keine passenden Grafiken habe  &lt;img src=&quot;/forum/images/smiles/icon_rolleyes.gif&quot; alt=&quot;Rolling Eyes&quot; /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ja ist wohl leicht zu erkennen, was was sein soll.&lt;br /&gt;Demn&amp;auml;chst kommt hoffentlich mal eine Demo (z.B in Form von einem Entity Editor f&amp;uuml;r The Vorx...)&lt;br /&gt;&lt;br /&gt;Das wars auch schon f&amp;uuml;r heute,&lt;br /&gt;sch&amp;ouml;nen Sonntag noch.&lt;br /&gt;&lt;br /&gt;ComNik&lt;br /&gt; </description>
			<pubDate>Sun, 02 May 2010 17:24:32 +0200</pubDate>
		</item>

		<item>
			<title>15. Kompletter Entwicklungsstopp</title>
			<link>https://www.blitzforum.de/worklogs/264/#2150</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2150</guid>
			<author>ComNik</author>
			<description>Guten Abend,&lt;br /&gt;&lt;br /&gt;eine schnelle Meldung:&lt;br /&gt;&lt;br /&gt;Wie mann sich vielleicht denken kann, arbeite ich im Moment mit voller Kraft an &amp;quot;The Vorx&amp;quot;, da brauche ich die GUI nat&amp;uuml;rlich auch (und nutze sie). Allerdings wird sie jetzt erstmal nicht weiter entwickelt.&lt;br /&gt;Sollte sich nochmal was ma&amp;szlig;geblich tun, kommts hier nat&amp;uuml;rlich rein.&lt;br /&gt;&lt;br /&gt;Ansonsten danke ich f&amp;uuml;r die bisherige Aufmerksamkeit. &lt;br /&gt;lg&lt;br /&gt;ComNik</description>
			<pubDate>Sun, 21 Feb 2010 21:20:35 +0100</pubDate>
		</item>

		<item>
			<title>14. McGUIver</title>
			<link>https://www.blitzforum.de/worklogs/264/#2051</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2051</guid>
			<author>ComNik</author>
			<description>So heute habe ich mithilfe des RC 1 den McGUIver neu geschrieben.&lt;br /&gt;Das Tool System und das Interface stehen f&amp;uuml;rs erste. Buttons f&amp;uuml;rs Speichern oder Laden kommen erst wenn alles andere Funktioniert. Bilder gibts heute auch noch keine, noch kann man zu wenig sehen.&lt;br /&gt;Das ganze geht eigentlich gut voran, leider f&amp;auml;ngt morgen die Schule wieder an, trotzdem hoffe ich sp&amp;auml;testens Samstag (16.01) ein erstes Release zum Download anzubieten. Bis dahin wird eventuell einiges noch in der WarpGUI gemacht. Eben alles was ich beim schreiben vom McGUIver noch brauche. Je nach Stand der Dinge packe ich dann die aktualisierte WarpGUI zusammen mit dem Editor und release beides. Aber das h&amp;auml;ngt auch stark von Schule und Motivation ab. Manche haben eventuell auch bemerkt das ich ein neues Hauptprojekt habe. Daher schreibe ich hier keine detaillierten Neuerungen rein. Immer wenn sich was wesentliches &amp;auml;ndert oder hinzukommt, stell ich hier nen neuen Download rein.&lt;br /&gt;Auch arbeite ich gerade an 3 Tools f&amp;uuml;r mein Spiel, die stelle ich hier dann auch kurz vor.&lt;br /&gt;&lt;br /&gt;Ansonsten danke ich f&amp;uuml;r die Aufmerksamkeit und die (wie ich finde) befriedigende Downloadzahl.&lt;br /&gt;lg und allen einen sch&amp;ouml;nen Schulanfang die Morgen mein Gl&amp;uuml;ck teilen.&lt;br /&gt;ComNik </description>
			<pubDate>Sun, 10 Jan 2010 18:41:32 +0100</pubDate>
		</item>

		<item>
			<title>13. Release 0.9</title>
			<link>https://www.blitzforum.de/worklogs/264/#2034</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2034</guid>
			<author>ComNik</author>
			<description>Moin zusammen,&lt;br /&gt;die WarpGui ist tats&amp;auml;chlich zu einem ersten Pre-Alpha Release gebracht worden.&lt;br /&gt;Zwar nicht ganz 100% wie gestern erhofft (aufgrund von Problemen mit Schlaf und Textareas).&lt;br /&gt;Aber es ist glaube ich ganz gut benutzbar. Au&amp;szlig;erdem habe ich eine kleine Dokumentation geschrieben.&lt;br /&gt;&lt;br /&gt;Erstmal Anmerkungen zum Release:&lt;br /&gt;Textareas sind noch etwas buggy, weil ich die grade noch neu schreiben musste -.- &lt;br /&gt;Da ich zwischendurch auch noch packen musste ist das Interface Gadget leider auch nicht mehr drin. &lt;br /&gt;Es ist einfach noch nicht benutzbar.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Alle Downloads down, nur noch Zombie GUI wird entwickelt.&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Die Demo hat extrem schlechte Grafiken wirklich extrem schlecht. Au&amp;szlig;erdem wird noch die Standardtfont genutzt. Es geht erstmal nur um Funktionalit&amp;auml;t.&lt;br /&gt;&lt;br /&gt;So ich hoffe es testen ein paar Leute. Feedback w&amp;auml;re erw&amp;uuml;nscht, Kritik genauso. Ich kann allerdings erst in einer Woche wieder drauf reagieren. Skifahren...&lt;br /&gt;Trotzdem bitte beachten das es lediglich eine Pre Alpha ist.&lt;br /&gt;&lt;br /&gt;Hier noch ein Beispielcode:&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]&lt;br /&gt;SuperStrict&lt;br /&gt;&lt;br /&gt;Import Warpstudios.Warpgui &lt;br /&gt;&lt;br /&gt;Graphics(800,600,0,60)&lt;br /&gt;&lt;br /&gt;SetMaskColor(255,0,255)&lt;br /&gt;Global IMG_menu:TImage = LoadImage(&amp;quot;Demo/Menu.png&amp;quot;)&lt;br /&gt;Global IMG_button:TImage = LoadAnimImage(&amp;quot;Demo/IMG_button.png&amp;quot;,100,50,0,3)&lt;br /&gt;Global IMG_tabber:TImage = LoadAnimImage(&amp;quot;Demo/IMG_tabber.png&amp;quot;,50,25,0,2) &lt;br /&gt;Global TTipp:TImage = LoadImage(&amp;quot;gfx\TT.png&amp;quot;)&lt;br /&gt;&lt;br /&gt;Global menu1:WP_Menu = WP_CreateMenu(100,100,400,200,IMG_Menu) &lt;br /&gt;Global button1:WP_Button = menu1.AddButton(170,150,100,50,IMG_button)&lt;br /&gt;	button1.SetCaption(&amp;quot;Button...&amp;quot;,20,20)&lt;br /&gt;Global exitButton:WP_Button = menu1.AddButton(480,100,20,20,IMG_button)&lt;br /&gt;	exitButton.SetCaption(&amp;quot;X&amp;quot;,4,2)&lt;br /&gt;	exitButton.SetTooltipp(&amp;quot;Close the Menu&amp;quot;)&lt;br /&gt;Global tabber1:WP_Tabber = menu1.AddTabber(179,135,25,25,button1,IMG_tabber)&lt;br /&gt;Global label1:WP_Label = menu1.AddLabel(300,150,100,50,TTipp)&lt;br /&gt;	label1.SetCaption(&amp;quot; &amp;lt;-- Click!&amp;quot;)&lt;br /&gt;Global list1:WP_ListBox = menu1.AddListBox(150,150,200,50,IMG_button,IMG_tabber)&lt;br /&gt;	list1.trigger.SetTooltipp(&amp;quot;Open Listbox&amp;quot;) &lt;br /&gt;	list1.choice.SetTooltipp(&amp;quot;Your Choice stands here!&amp;quot;)&lt;br /&gt;	list1.AddEntry(&amp;quot;BBP&amp;quot;)&lt;br /&gt;	list1.AddEntry(&amp;quot;Dark GDK&amp;quot;)&lt;br /&gt;	list1.AddEntry(&amp;quot;B+&amp;quot;)&lt;br /&gt;	list1.AddEntry(&amp;quot;C++&amp;quot;)&lt;br /&gt;Global text1:WP_Textarea = menu1.AddTextarea(150,200,200,70,100,4,TTipp)&lt;br /&gt;&lt;br /&gt;While Not (KeyDown(KEY_ESCAPE) Or AppTerminate())&lt;br /&gt;	Cls&lt;br /&gt;		DrawText(text1.switch,0,0) &lt;br /&gt;		If exitButton.state = ST_CLICKED Then menu1.Hide() &lt;br /&gt;		If menu1.state = ST_CLICKED Then TX = MX-menu1.x;TY = MY-menu1.y&lt;br /&gt;		If menu1.drag = ST_DRAGGED&lt;br /&gt;			menu1.x = MX-TX&lt;br /&gt;			menu1.y = MY-TY&lt;br /&gt;		End If &lt;br /&gt;		If KeyHit(KEY_SPACE) Then menu1.Show() &lt;br /&gt;		&lt;br /&gt;		WP_Update()&lt;br /&gt;	Flip&lt;br /&gt;Wend 	&lt;br /&gt;End &lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;Zeigt ein bisschen die Syntax, die ist aber sehr einfach und kann durch lesen der Dokumentation problemlos verstanden werden.&lt;br /&gt;&lt;br /&gt;Ich w&amp;uuml;nsche noch sch&amp;ouml;ne Ferien!&lt;br /&gt;lg&lt;br /&gt;ComNik</description>
			<pubDate>Fri, 01 Jan 2010 17:15:38 +0100</pubDate>
		</item>

		<item>
			<title>12. Ein paar Sachen hier und Da</title>
			<link>https://www.blitzforum.de/worklogs/264/#2031</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2031</guid>
			<author>ComNik</author>
			<description>Einen schnellen Eintrag noch, dann gehts zur Silvester Party.&lt;br /&gt;&lt;br /&gt;Dem Release Morgen (sp&amp;auml;testens Samstag) steht nichts mehr im Wege.&lt;br /&gt;Lediglich ein wenig Feinschliff hier, und ein bisschen Optimierung da.&lt;br /&gt;Au&amp;szlig;erdem ein, zwei simple Gadgets.&lt;br /&gt;&lt;br /&gt;Die komplette Gadget Liste nochmal:&lt;br /&gt;&lt;br /&gt;Ist drinn:&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Menu&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Button&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Textarea&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Tabber&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Label&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Radio Button bzw Check Box&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; ListBox&lt;br /&gt; &lt;br /&gt;F&amp;uuml;r Morgen soll noch rein (ist teilweise schon extern Fertig):&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; ImageBox&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Interface&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; TabGroup&lt;br /&gt;&lt;br /&gt;Es gab noch ein paar kleinere &amp;Auml;nderungen:&lt;br /&gt;Das Field &amp;quot;drag&amp;quot; aus dem letzten Eintrag, heisst nun sinnvoller &amp;quot;switch&amp;quot; und kann durch die States &amp;quot;ST_ACTIVE&amp;quot; und &amp;quot;ST_INACTIVE&amp;quot; gesetzt werden. &amp;quot;drag&amp;quot; ist allerdings immer noch drin. Mit diesem Feld kann man nun abfragen ob der Mauszeiger &amp;uuml;ber dem Gadget gedr&amp;uuml;ckt ist (somit l&amp;auml;sst sich Drag'n'Drop sch&amp;ouml;ner realisieren). &lt;br /&gt;&lt;br /&gt;Morgen Versuche ich noch eine kleine Dokumentation zu erstellen, die die Flags und States und wasweisich noch alles erkl&amp;auml;ren. &lt;br /&gt;&lt;br /&gt;lg und nun zum letzten Mal: Einen guten Rutsch und ein fr&amp;ouml;hliches, gesundes Jahr 2010 &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;&lt;br /&gt;ComNik</description>
			<pubDate>Thu, 31 Dec 2009 17:32:07 +0100</pubDate>
		</item>

		<item>
			<title>11. OOP Update, baldiges Release in Sicht</title>
			<link>https://www.blitzforum.de/worklogs/264/#2025</link>
			<guid>https://www.blitzforum.de/worklogs/264/#2025</guid>
			<author>ComNik</author>
			<description>Guten Abend,&lt;br /&gt;&lt;br /&gt;Nach einem unterhaltsamen &amp;quot;Mini BBP Treff&amp;quot; mit n-halbleiter im gem&amp;uuml;tlichen Dorf Gernsheim bin ich wieder voll an der WarpGUI dran.&lt;br /&gt;&lt;br /&gt;Heute wurde der gesamte Code auf komplett OOP umgestellt, das heisst Konstruktor Funktionen innerhalb der Klasse (danke an halbleiter). Gadgets werden nun durch ein Create - Init Konstrukt erstellt, was dem End User aber herzlich egal sein kann. Er kann Gadgets nun auf zwei Weisen erstellen:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox3&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('3')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox3&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('3')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox3&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('3');&quot;&gt;&lt;br /&gt;WP_CreateMenu&amp;#40;&amp;#41;&lt;br /&gt;WP_AddButton&amp;#40;&amp;#41;&lt;br /&gt;WP_Add xy &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;oder &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox4&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('4')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox4&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('4')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox4&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('4');&quot;&gt;&lt;br /&gt;menu.AddButton&amp;#40;&amp;#41;&lt;br /&gt;menu.Add xy&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;OOP halt...&lt;br /&gt;&lt;br /&gt;Au&amp;szlig;erdem bastel ich gerade wild Gadgets zusammen und gucke was rauskommt (bisher eher M&amp;uuml;ll)...&lt;br /&gt;Ich hoffe aber das ich bevor es in den Ski Urlaub geht, ein erstes Release fertig bekomme.&lt;br /&gt;Dieses wird vermutlich nur Standard Gadgets enthalten also erwartet nicht zuviel. Ich hoffe die (von mir als so empfundene) User - Freundlichkeit tut wof&amp;uuml;r sie erdacht wurde...&lt;br /&gt;Der RC 1 w&amp;auml;re dann die WarpGui Rewrite - V0.9 .&lt;br /&gt;Dieses Modul bietet mir dann hoffentlich gen&amp;uuml;gend Funktionen ein paar der von mir erstelleten Tools f&amp;uuml;r mein kommendes Spieleprojekt zu erstellen. Nach dem Release geht es hier im Worklog verst&amp;auml;rkt um den McGUIver Editor.&lt;br /&gt;&lt;br /&gt;Ich w&amp;uuml;nsche des weiteren allen einen guten Rutsch und ein frohes neues Jahr,&lt;br /&gt;ComNik</description>
			<pubDate>Wed, 30 Dec 2009 17:56:08 +0100</pubDate>
		</item>


	</channel>
</rss>
