Confirmedusers
261
edits
(Move CSS to the top of the page) |
(Move existing examples to the end of the page) |
||
Line 85: | Line 85: | ||
<!--T:17--> | <!--T:17--> | ||
This is the component that builds and manages your GUI elements for you. You can create a composer via the client api: <code>capi.Gui.CreateCompo(dialogName, bounds)</code>. You have to supply it with a unique identifier and the overall dialog bounds. Once you have a GUIComposer instance you can chain-add elements. | This is the component that builds and manages your GUI elements for you. You can create a composer via the client api: <code>capi.Gui.CreateCompo(dialogName, bounds)</code>. You have to supply it with a unique identifier and the overall dialog bounds. Once you have a GUIComposer instance you can chain-add elements. | ||
</translate> | </translate> | ||
====Dialog / Graphics==== | |||
* <code>.AddShadedDialogBG</code>: Draws a pretty background and dialog border | |||
* <code>.AddDialogTitleBar</code>: Draws a title bar with a close button and a button to move around the dialog | |||
* <code>.AddInset</code>: Adds a darkened section with a inset border around it | |||
====Text==== | |||
* <code>.AddStaticText</code>: Add a static snippet of text | |||
* <code>.AddDynamicText</code>: Add a snippet of text that can be set to other texts without the need to redraw the whole dialog | |||
* <code>.AddRichtext</code>: Same as <code>.AddDynamicText</code> but allows use of [[VTML]] - a minimalist version of HTML code | |||
* <code>.AddHoverText</code>: When the mouse cursor moves over the element boundaries, will show supplied text as a tooltip | |||
====UI Control/Input==== | |||
* <code>.AddButton</code>: Adds a clickable button | |||
* <code>.AddDropDown</code>: Adds a drop down element | |||
* <code>.AddHorizontalTabs</code>: Adds horizontally aligned tabs, like the ingame chat window has | |||
* <code>.AddVerticalScrollbar</code>: Adds a vertical scrollbar | |||
* <code>.AddTextInput</code>: Adds an single line editable text field | |||
* <code>.AddNumberInput</code>: Adds an editable text field built for entering numbers | |||
* <code>.AddTextArea</code>: Adds multiple line editable text field | |||
====Tables/Grids/Inventory==== | |||
* <code>.AddItemSlotGrid</code>: Create a grid displaying the contents of supplied inventory (example: [https://github.com/anegostudios/vsessentialsmod/blob/master/Gui/GuiDialogCarcassContents.cs GuiDialogCarcassContents]) | |||
* <code>.AddSkillItemGrid</code>: Create a grid of custom elements (example: [https://github.com/anegostudios/vssurvivalmod/blob/master/Gui/GuiDialogBlockEntityRecipeSelector.cs GuiDialogBlockEntityRecipeSelector]) | |||
====Other==== | |||
* <code>.AddIf</code>/<code>.EndIf</code>: Can be used to conditionally add certain elements (but you can also just split up your creation code for more fine grained control) | |||
* <code>.BeginClip</code>/<code>.EndClip</code>: Used in combination with a scrollbar to cut away oversized content, such as in the creative inventory | |||
* <code>.AddStaticCustomDraw</code>: Lets you define your own drawing code to be added to the GUI | |||
== Example == | |||
=== First iteration: basic static text === | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
private void SetupDialog() | private void SetupDialog() | ||
Line 109: | Line 143: | ||
* <code>SingleComposer</code>: This property is defined in the <code>GuiDialog</code> class. Its a getter/setter to the <code>Composers</code> dictionary. It contains all the "windows" of this dialog which are then rendered / handled by this GuiDialog instance | * <code>SingleComposer</code>: This property is defined in the <code>GuiDialog</code> class. Its a getter/setter to the <code>Composers</code> dictionary. It contains all the "windows" of this dialog which are then rendered / handled by this GuiDialog instance | ||
== | === Second iteration: add title bar === | ||
This is of course the absolute minimum example that will only show some text. Let's add a title bar and a dialog background: | This is of course the absolute minimum example that will only show some text. Let's add a title bar and a dialog background: | ||
Line 140: | Line 174: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Final iteration: connect to hot key === | |||
=== | |||
A simple standard dialog, triggered by the keyboard key 'U' | A simple standard dialog, triggered by the keyboard key 'U' | ||
Line 244: | Line 245: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Navbox/modding|Vintage Story}} | {{Navbox/modding|Vintage Story}} |