Diese Include-Datei bietet Funktionen für die Erstellung von Standard-GUI-Elementen wie Buttons, Windows, Checkboxen, InfoBoxen, Listboxen, Progress Bars, Slider, Scrollbars, Rechtsklick-Menüs, Comboboxen und Editboxes. Alle GUI-Elemente sind aus Panel- und Text-Objekten aufgebaut. Es ist auch möglich, Panels und Text-Objekte auf GUI-Fenster zu setzen. Der Stil und die Bilder sind vollständig anpassbar.
lbgui.h wurde von Lukas Brozio für den Sommer-2010-Wettbewerb geschrieben. Es ist nicht direkt in Gamestudio enthalten, sondern kommt mit dem goodies8.zip Add-On-Paket, das kostenlos zum Download auf der Gamestudio Download-Seite bereitsteht. Öffnen Sie einfach das Paket und kopieren Sie lbgui.h in den Gamestudio include Ordner. Das Paket enthält auch den "grünen" Default-Stil wie im Bild oben, und zwei selbsterklärende Demos - smalldemo.c und demo.c. Das LBGUI Handbuch ist ebenfalls im Paket enthalten. Alle GUI-Funktionen sind im Handbuch ausführlich beschrieben, im Folgenden finden Sie nur eine kurze Übersicht.
#include <acknex.h> #include <default.c> #include <lbgui.h>Stellen Sie sicher, dass die lbgui.h sich im include Ordner befindet. Bevor Sie LBGUI Funktionen nutzen können, öffnen Sie die Bibliothek per LBGUI_open() in Ihrer main Funktion:
function main() { ... LBGUI_open();Dadurch wird die Schleife gestartet, die alle GUI Elemente steuert, und eine weitere Schleife zur Eingabe in Editboxen. Wenn Sie LBGUI nicht mehr benötigen, schließen Sie die Bibliothek per LBGUI_close():
LBGUI_close();Dies löscht alle GUI Elemente und beendet die Schleifen. Zum automatischen Schliessen am Programmende benutzen Sie einfach folgende Zeile:
on_exit = LBGUI_close; // Close LBGUI when the project is closed
Alle LBGUI Elemente sind in Structs gespeichert, genau wie die Engine-Objekte. Die Namen aller Structs und Funktionen in LBGUI beginnen mit "LBG_" (z.B. LBG_BUTTON).
Alle LBGUI Structs beginnen wie folgt:
typedef struct LBG_STRUCTNAME // the name of the GUI element { long ssize; // Size of the struct long stype; // Type of GUI element struct LBG_STRUCTNAME* next; // Next object in the linked list struct LBG_STRUCTNAME* previous; // Previous object in the linked list ...
stype enthält eine Nummer (1-18) mit folgender Bedeutung:
1 - Window
2 - Button
3 - Panel
4 - Text
6 - Checkbox
7 - Infobox
8 - Progress-Bar
9 - Horizontaler Scrollbar
10 - Vertikaler Scrollbar
11 - Slider
13 - Listbox
14 - Listenelement
15 - Rechtsklick Menü
16 - Combobox
17 - Digits
18 - Editbox
Wegen der Ähnlichkeit der Structs können die gleichen Funktionen mit mehreren oder allen GUI-Elementen funktionieren. LBGUI Funktionen, die das tun, verwenden immer LBG_WINDOW als Dummy-Struktur. Wenn Sie eine Funktion für mehr als ein bestimmtes GUI-Element schreiben wollen, können Sie in lbgui.h schauen, ob sie kompatibel sind. Beachten Sie, dass die Reihenfolge, in der Struct-Parameter im LBGUI Handbuch dokumentiert sind, von der Reihenfolge in der Struct-Definition abweichen können. Einige Parameter sind überhaupt nicht dokumentiert, weil sie nur zur internen Verwendung dienen.
Alle Structs sind in einer verketteten Liste enthalten. Dies sind die ersten Instanzen der einzelnen Structs:
LBG_WINDOW* LBG_WINDOW_FIRST = 0; LBG_BUTTON* LBG_BUTTON_FIRST = 0; LBG_PANEL* LBG_PANEL_FIRST = 0; LBG_TEXT* LBG_TEXT_FIRST = 0; LBG_CHECKBOX* LBG_CHECKBOX_FIRST = 0; LBG_INFOBOX* LBG_INFOBOX_FIRST = 0; LBG_PROGRESSBAR* LBG_PROGRESSBAR_FIRST = 0; LBG_HSCROLLBAR* LBG_HSCROLLBAR_FIRST = 0; LBG_VSCROLLBAR* LBG_VSCROLLBAR_FIRST = 0; LBG_SLIDER* LBG_SLIDER_FIRST = 0; LBG_LISTBOX* LBG_LISTBOX_FIRST = 0; LBG_RIGHTCLICK* LBG_RIGHTCLICK_FIRST = 0; LBG_COMBOBOX* LBG_COMBOBOX_FIRST = 0; LBG_DIGITS* LBG_DIGITS_FIRST = 0; LBG_EDITBOX* LBG_EDITBOX_FIRST = 0;
Name: | Default | Beschreibung: |
---|---|---|
LBG_lowest_layer | 10 |
Niedrigster Layer, für Hintergrund-Elemente. |
LBG_highest_layer | 1000 |
Voraussichtlich höchster Layer, verwendet z.B. von Infoboxen. GUI-Elemente können während des Programmlaufs einen höheren Layer-Wert bekommen! |
LBG_winlayer | 10 |
Niedrigster Layer für Window-Elemente relativ zu LBG_lowest_layer. |
LBG_layer_step | 10 |
Layer-Unterschied zwischen zwei Window-Elementen. |
LBG_butlayer_step | 2 |
Layer-Unterschied zwischen Panel-/Text-Objekten eines GUI-Elements. |
FONT* LBG_window_font = "Arial#24b"; FONT* LBG_button_font = "Arial#24b"; FONT* LBG_checkbox_font = "Arial#24b"; FONT* LBG_infobox_font = "Arial#16"; FONT* LBG_progressbar_font = "Arial#24b"; FONT* LBG_listitem_font = "Arial#24b"; FONT* LBG_editbox_font = "Arial#24b"; FONT* LBG_digits_font = "Arial#24b";Sie können die Fonts jederzeit ändern:
ptr_remove(LBG_button_font); // Remove the old font LBG_button_font = font_create("Arial#20bi"); // Create the new oneBitte beachten: LBGUI wurde nicht mit Bitmap-Fonts getestet.
mywindow->Maximize = myfunction; // Execute myfunction when the maximize button of the window is pressed.Wenn ein Event ausgelöst wird, kann auf das GUI-Element, das es ausgelöst hat, per LBG_event_object zugegriffen werden. Es gibt auch Pointer, die spezifisch für das Objekt, das den Event ausgelöst hat, wie folgt definiert sind:
LBG_WINDOW* LBG_event_object; LBG_WINDOW* LBG_event_window; LBG_BUTTON* LBG_event_button; LBG_PANEL* LBG_event_panel; LBG_TEXT* LBG_event_text; LBG_CHECKBOX* LBG_event_checkbox; LBG_INFOBOX* LBG_event_infobox; LBG_PROGRESSBAR* LBG_event_progressbar; LBG_HSCROLLBAR* LBG_event_scrollbar; LBG_HSCROLLBAR* LBG_event_hscrollbar; LBG_VSCROLLBAR* LBG_event_vscrollbar; LBG_SLIDER* LBG_event_slider; LBG_LISTBOX* LBG_event_listbox; LBG_LISTITEM* LBG_event_listitem; LBG_RIGHTCLICK* LBG_event_rightclick; LBG_COMBOBOX* LBG_event_combobox; LBG_DIGITS* LBG_event_digits; LBG_EDITBOX* LBG_event_editbox;
LBGUI, das Handbuch und die Demos wurden von Lukas Brozio geschrieben.
Die Grafiken stammen von Spike. Einige wurden von Lukas Brozio erstellt, zumeist durch Editieren von Spike's Grafiken.
LBGUI ist Open Source. Sie können es für jedes kommerzielle oder andere Projekt verwenden, wenn Sie den Autor in den Credits des Projekts erwähnen.