Cleanups.
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
Size and anchors
|
# Size and anchors
|
||||||
================
|
|
||||||
|
|
||||||
If a game was always going to be run on the same device and at the same
|
If a game was always going to be run on the same device and at the same
|
||||||
resolution, positioning controls would be a simple matter of setting the
|
resolution, positioning controls would be a simple matter of setting the
|
||||||
@ -38,8 +37,7 @@ it, leaving a 20 pixel margin:
|
|||||||
|
|
||||||
![](img/marginaround.png)
|
![](img/marginaround.png)
|
||||||
|
|
||||||
Centering a control
|
## Centering a control
|
||||||
-------------------
|
|
||||||
|
|
||||||
To center a control in its parent, set its anchors to 0.5 and each margin
|
To center a control in its parent, set its anchors to 0.5 and each margin
|
||||||
to half of its relevant dimension. For example, the code below shows how
|
to half of its relevant dimension. For example, the code below shows how
|
||||||
@ -64,8 +62,7 @@ Setting each anchor to 0.5 moves the reference point for the margins to
|
|||||||
the center of its parent. From there, we set negative margins so that
|
the center of its parent. From there, we set negative margins so that
|
||||||
the control gets its natural size.
|
the control gets its natural size.
|
||||||
|
|
||||||
Layout Presets
|
## Layout Presets
|
||||||
--------------
|
|
||||||
|
|
||||||
Instead of manually adjusting the margin and anchor values, you can use the
|
Instead of manually adjusting the margin and anchor values, you can use the
|
||||||
toolbar's Layout menu, above the viewport. Besides centering, it gives you many
|
toolbar's Layout menu, above the viewport. Besides centering, it gives you many
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
Using Containers
|
# Using Containers
|
||||||
================
|
|
||||||
|
|
||||||
`Anchors doc_size_and_anchors )` are an efficient way to handle
|
`Anchors doc_size_and_anchors )` are an efficient way to handle
|
||||||
different aspect ratios for basic multiple resolution handling in GUIs,
|
different aspect ratios for basic multiple resolution handling in GUIs,
|
||||||
@ -14,8 +13,7 @@ common case where more advanced layout features may be required is in-game tools
|
|||||||
All these situations require a more capable OS-like user interface, with advanced layout and formatting.
|
All these situations require a more capable OS-like user interface, with advanced layout and formatting.
|
||||||
For that, `Containers` are more useful.
|
For that, `Containers` are more useful.
|
||||||
|
|
||||||
Container layout
|
## Container layout
|
||||||
----------------
|
|
||||||
|
|
||||||
Containers provide a huge amount of layout power (as an example, the Pandemonium editor user interface is entirely done using them):
|
Containers provide a huge amount of layout power (as an example, the Pandemonium editor user interface is entirely done using them):
|
||||||
|
|
||||||
@ -34,8 +32,7 @@ Example of *HBoxContainer* resizing children buttons.
|
|||||||
|
|
||||||
The real strength of containers is that they can be nested (as nodes), allowing the creation of very complex layouts that resize effortlessly.
|
The real strength of containers is that they can be nested (as nodes), allowing the creation of very complex layouts that resize effortlessly.
|
||||||
|
|
||||||
Size flags
|
## Size flags
|
||||||
----------
|
|
||||||
|
|
||||||
When adding a node to a container, the way the container treats each child depends mainly on their *size flags*. These flags
|
When adding a node to a container, the way the container treats each child depends mainly on their *size flags*. These flags
|
||||||
can be found by inspecting any control that is a child of a *Container*.
|
can be found by inspecting any control that is a child of a *Container*.
|
||||||
@ -56,13 +53,11 @@ Size flags are independent for vertical and horizontal sizing and not all contai
|
|||||||
|
|
||||||
Experimenting with these flags and different containers is recommended to get a better grasp on how they work.
|
Experimenting with these flags and different containers is recommended to get a better grasp on how they work.
|
||||||
|
|
||||||
Container types
|
## Container types
|
||||||
---------------
|
|
||||||
|
|
||||||
Pandemonium provides several container types out of the box as they serve different purposes:
|
Pandemonium provides several container types out of the box as they serve different purposes:
|
||||||
|
|
||||||
Box Containers
|
### Box Containers
|
||||||
^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Arranges child controls vertically or horizontally (via `HBoxContainer` and
|
Arranges child controls vertically or horizontally (via `HBoxContainer` and
|
||||||
`VBoxContainer`). In the opposite of the designated direction
|
`VBoxContainer`). In the opposite of the designated direction
|
||||||
@ -72,16 +67,14 @@ Arranges child controls vertically or horizontally (via `HBoxContainer` and
|
|||||||
|
|
||||||
These containers make use of the *Ratio* property for children with the *Expand* flag set.
|
These containers make use of the *Ratio* property for children with the *Expand* flag set.
|
||||||
|
|
||||||
Grid Container
|
### Grid Container
|
||||||
^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Arranges child controls in a grid layout (via `GridContainer`, amount
|
Arranges child controls in a grid layout (via `GridContainer`, amount
|
||||||
of columns must be specified). Uses both the vertical and horizontal expand flags.
|
of columns must be specified). Uses both the vertical and horizontal expand flags.
|
||||||
|
|
||||||
![](img/containers_grid.png)
|
![](img/containers_grid.png)
|
||||||
|
|
||||||
Margin Container
|
### Margin Container
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Child controls are expanded towards the bounds of this control (via
|
Child controls are expanded towards the bounds of this control (via
|
||||||
`MarginContainer`). Padding will be added on the margins
|
`MarginContainer`). Padding will be added on the margins
|
||||||
@ -94,8 +87,7 @@ constants overrides section of each control:
|
|||||||
|
|
||||||
![](img/containers_margin_constants.png)
|
![](img/containers_margin_constants.png)
|
||||||
|
|
||||||
Tab Container
|
### Tab Container
|
||||||
^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Allows you to place several child controls stacked on top of each other (via
|
Allows you to place several child controls stacked on top of each other (via
|
||||||
`TabContainer`), with only the *current* one visible.
|
`TabContainer`), with only the *current* one visible.
|
||||||
@ -110,8 +102,7 @@ The titles are generated from the node names by default (although they can be ov
|
|||||||
|
|
||||||
Settings such as tab placement and *StyleBox* can be modified in the *TabContainer* theme overrides.
|
Settings such as tab placement and *StyleBox* can be modified in the *TabContainer* theme overrides.
|
||||||
|
|
||||||
Split Container
|
### Split Container
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Accepts only one or two children controls, then places them side to side with a divisor
|
Accepts only one or two children controls, then places them side to side with a divisor
|
||||||
(via `HSplitContainer`).
|
(via `HSplitContainer`).
|
||||||
@ -124,8 +115,7 @@ The divisor can be dragged around to change the size relation between both child
|
|||||||
![](img/containers_split_drag.gif)
|
![](img/containers_split_drag.gif)
|
||||||
|
|
||||||
|
|
||||||
PanelContainer
|
### PanelContainer
|
||||||
^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Simple container that draws a *StyleBox*, then expands children to cover its whole area
|
Simple container that draws a *StyleBox*, then expands children to cover its whole area
|
||||||
(via `PanelContainer`, respecting the *StyleBox* margins).
|
(via `PanelContainer`, respecting the *StyleBox* margins).
|
||||||
@ -135,8 +125,7 @@ It respects both the horizontal and vertical size flags.
|
|||||||
|
|
||||||
This container is useful as top-level, or just to add custom backgrounds to sections of a layout.
|
This container is useful as top-level, or just to add custom backgrounds to sections of a layout.
|
||||||
|
|
||||||
ScrollContainer
|
### ScrollContainer
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Accepts a single child node. If this node is bigger than the container, scrollbars will be added
|
Accepts a single child node. If this node is bigger than the container, scrollbars will be added
|
||||||
to allow panning the node around (via `ScrollContainer`). Both
|
to allow panning the node around (via `ScrollContainer`). Both
|
||||||
@ -152,14 +141,12 @@ Mouse wheel and touch drag (when touch is available) are also valid ways to pan
|
|||||||
As in the example above, one of the most common ways to use this container is together with a *VBoxContainer* as child.
|
As in the example above, one of the most common ways to use this container is together with a *VBoxContainer* as child.
|
||||||
|
|
||||||
|
|
||||||
ViewportContainer
|
### ViewportContainer
|
||||||
^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
This is a special control that will only accept a single *Viewport* node as child, and it will display
|
This is a special control that will only accept a single *Viewport* node as child, and it will display
|
||||||
it as if it was an image (via `ViewportContainer`).
|
it as if it was an image (via `ViewportContainer`).
|
||||||
|
|
||||||
Creating custom Containers
|
## Creating custom Containers
|
||||||
--------------------------
|
|
||||||
|
|
||||||
It is possible to easily create a custom container using script. Here is an example of a simple container that fits children
|
It is possible to easily create a custom container using script. Here is an example of a simple container that fits children
|
||||||
to its rect size:
|
to its rect size:
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
Custom GUI controls
|
# Custom GUI controls
|
||||||
===================
|
|
||||||
|
|
||||||
So many controls...
|
## So many controls...
|
||||||
-------------------
|
|
||||||
|
|
||||||
Yet there are never enough. Creating your own custom controls that act
|
Yet there are never enough. Creating your own custom controls that act
|
||||||
just the way you want them to is an obsession of almost every GUI
|
just the way you want them to is an obsession of almost every GUI
|
||||||
@ -13,15 +11,13 @@ the way you want. Before contacting the developers with a pull-request
|
|||||||
to support diagonal scrollbars, at least it will be good to know how to
|
to support diagonal scrollbars, at least it will be good to know how to
|
||||||
create these controls easily from script.
|
create these controls easily from script.
|
||||||
|
|
||||||
Drawing
|
## Drawing
|
||||||
-------
|
|
||||||
|
|
||||||
For drawing, it is recommended to check the `doc_custom_drawing_in_2d` tutorial.
|
For drawing, it is recommended to check the `doc_custom_drawing_in_2d` tutorial.
|
||||||
The same applies. Some functions are worth mentioning due to their
|
The same applies. Some functions are worth mentioning due to their
|
||||||
usefulness when drawing, so they will be detailed next:
|
usefulness when drawing, so they will be detailed next:
|
||||||
|
|
||||||
Checking control size
|
### Checking control size
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Unlike 2D nodes, "size" is important with controls, as it helps to
|
Unlike 2D nodes, "size" is important with controls, as it helps to
|
||||||
organize them in proper layouts. For this, the
|
organize them in proper layouts. For this, the
|
||||||
@ -29,8 +25,7 @@ organize them in proper layouts. For this, the
|
|||||||
property is provided. Checking it during `draw()` is vital to ensure
|
property is provided. Checking it during `draw()` is vital to ensure
|
||||||
everything is kept in-bounds.
|
everything is kept in-bounds.
|
||||||
|
|
||||||
Checking focus
|
### Checking focus
|
||||||
~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Some controls (such as buttons or text editors) might provide input
|
Some controls (such as buttons or text editors) might provide input
|
||||||
focus for keyboard or joypad input. Examples of this are entering text
|
focus for keyboard or joypad input. Examples of this are entering text
|
||||||
@ -52,8 +47,7 @@ gdscript GDScript
|
|||||||
draw_normal()
|
draw_normal()
|
||||||
```
|
```
|
||||||
|
|
||||||
Sizing
|
## Sizing
|
||||||
------
|
|
||||||
|
|
||||||
As mentioned before, size is important to controls. This allows
|
As mentioned before, size is important to controls. This allows
|
||||||
them to lay out properly, when set into grids, containers, or anchored.
|
them to lay out properly, when set into grids, containers, or anchored.
|
||||||
@ -83,14 +77,12 @@ gdscript GDScript
|
|||||||
set_custom_minimum_size(Vector2(30, 30))
|
set_custom_minimum_size(Vector2(30, 30))
|
||||||
```
|
```
|
||||||
|
|
||||||
Input
|
## Input
|
||||||
-----
|
|
||||||
|
|
||||||
Controls provide a few helpers to make managing input events much easier
|
Controls provide a few helpers to make managing input events much easier
|
||||||
than regular nodes.
|
than regular nodes.
|
||||||
|
|
||||||
Input events
|
### Input events
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
There are a few tutorials about input before this one, but it's worth
|
There are a few tutorials about input before this one, but it's worth
|
||||||
mentioning that controls have a special input method that only works
|
mentioning that controls have a special input method that only works
|
||||||
@ -119,8 +111,7 @@ gdscript GDScript
|
|||||||
For more information about events themselves, check the `doc_inputevent`
|
For more information about events themselves, check the `doc_inputevent`
|
||||||
tutorial.
|
tutorial.
|
||||||
|
|
||||||
Notifications
|
### Notifications
|
||||||
~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Controls also have many useful notifications for which no dedicated callback
|
Controls also have many useful notifications for which no dedicated callback
|
||||||
exists, but which can be checked with the _notification callback:
|
exists, but which can be checked with the _notification callback:
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
|
# Keyboard/Controller Navigation and Focus
|
||||||
Keyboard/Controller Navigation and Focus
|
|
||||||
========================================
|
|
||||||
|
|
||||||
It is a common requirement for a user interface to have full keyboard
|
It is a common requirement for a user interface to have full keyboard
|
||||||
and controller support for navigation and interaction. There are two main
|
and controller support for navigation and interaction. There are two main
|
||||||
@ -23,8 +21,7 @@ Warning:
|
|||||||
Because these actions are used for focus they should not be used for any
|
Because these actions are used for focus they should not be used for any
|
||||||
gameplay code.
|
gameplay code.
|
||||||
|
|
||||||
Node settings
|
## Node settings
|
||||||
-------------
|
|
||||||
|
|
||||||
In addition to the built-in logic, you can define what is known as focus neighbors
|
In addition to the built-in logic, you can define what is known as focus neighbors
|
||||||
for each individual control node. This allows to finely tune the path the UI focus
|
for each individual control node. This allows to finely tune the path the UI focus
|
||||||
@ -57,8 +54,7 @@ no focus neighbor configured, the engine will try to guess the next control auto
|
|||||||
This may result in unintended behavior, especially in a complex user interface that doesn't
|
This may result in unintended behavior, especially in a complex user interface that doesn't
|
||||||
have well-defined vertical or horizontal navigation flow.
|
have well-defined vertical or horizontal navigation flow.
|
||||||
|
|
||||||
Necessary code
|
## Necessary code
|
||||||
--------------
|
|
||||||
|
|
||||||
For keyboard and controller navigation to work correctly, any node must be focused on
|
For keyboard and controller navigation to work correctly, any node must be focused on
|
||||||
using code when the scene starts. Without doing this, pressing buttons or keys won't
|
using code when the scene starts. Without doing this, pressing buttons or keys won't
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
Control node gallery
|
|
||||||
====================
|
# Control node gallery
|
||||||
|
|
||||||
Here is a list of common Control nodes with their name next to them:
|
Here is a list of common Control nodes with their name next to them:
|
||||||
|
|
||||||
![](/img/control_gallery.png)
|
![](img/control_gallery.png)
|
||||||
|
|
||||||
The Control Gallery demo pictured above can be found
|
The Control Gallery demo pictured above can be found
|
||||||
`on GitHub ( https://github.com/Relintai/pandemonium_engine-demo-projects/tree/master/gui/control_gallery )`.
|
`on GitHub ( https://github.com/Relintai/pandemonium_engine-demo-projects/tree/master/gui/control_gallery )`.
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
BBCode in RichTextLabel
|
# BBCode in RichTextLabel
|
||||||
=======================
|
|
||||||
|
|
||||||
Introduction
|
## Introduction
|
||||||
------------
|
|
||||||
|
|
||||||
Label nodes are great for displaying basic text, but they have limits. If you want
|
Label nodes are great for displaying basic text, but they have limits. If you want
|
||||||
to change the color of the text, or its alignment, that change affects all of the
|
to change the color of the text, or its alignment, that change affects all of the
|
||||||
@ -18,8 +16,7 @@ It has a built-in API for generating the markup, but can also parse a BBCode.
|
|||||||
Note that the BBCode tags can also be used, to some extent, in the
|
Note that the BBCode tags can also be used, to some extent, in the
|
||||||
`XML source of the class reference ( doc_updating_the_class_reference )`.
|
`XML source of the class reference ( doc_updating_the_class_reference )`.
|
||||||
|
|
||||||
Using BBCode
|
## Using BBCode
|
||||||
------------
|
|
||||||
|
|
||||||
For uniformly formatted text you can write in the "Text" property, but if you want
|
For uniformly formatted text you can write in the "Text" property, but if you want
|
||||||
to use BBCode markup you should use the "Text" property in the "Bb Code" section
|
to use BBCode markup you should use the "Text" property in the "Bb Code" section
|
||||||
@ -47,55 +44,36 @@ Note:
|
|||||||
|
|
||||||
There are no BBCode tags to control vertical centering of text yet.
|
There are no BBCode tags to control vertical centering of text yet.
|
||||||
|
|
||||||
Reference
|
## Reference
|
||||||
---------
|
|
||||||
|
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| Command | Tag | Description |
|
| Command | Tag | Description |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|-----------------------|---------------------------------------------------------|--------------------------------------------------------------------------|
|
||||||
| **bold** | `[b]{text}[/b]` | Makes {text} bold. |
|
| **bold** | `[b]{text}[/b]` | Makes {text} bold. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **italics** | `[i]{text}[/i]` | Makes {text} italics. |
|
| **italics** | `[i]{text}[/i]` | Makes {text} italics. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **underline** | `[u]{text}[/u]` | Makes {text} underline. |
|
| **underline** | `[u]{text}[/u]` | Makes {text} underline. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **strikethrough** | `[s]{text}[/s]` | Makes {text} strikethrough. |
|
| **strikethrough** | `[s]{text}[/s]` | Makes {text} strikethrough. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **code** | `[code]{text}[/code]` | Makes {text} use the code font (which is typically monospace). |
|
| **code** | `[code]{text}[/code]` | Makes {text} use the code font (which is typically monospace). |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **center** | `[center]{text}[/center]` | Makes {text} horizontally centered. |
|
| **center** | `[center]{text}[/center]` | Makes {text} horizontally centered. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **right** | `[right]{text}[/right]` | Makes {text} horizontally right-aligned. |
|
| **right** | `[right]{text}[/right]` | Makes {text} horizontally right-aligned. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **fill** | `[fill]{text}[/fill]` | Makes {text} fill the RichTextLabel's width. |
|
| **fill** | `[fill]{text}[/fill]` | Makes {text} fill the RichTextLabel's width. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **indent** | `[indent]{text}[/indent]` | Increase the indentation level of {text}. |
|
| **indent** | `[indent]{text}[/indent]` | Increase the indentation level of {text}. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **url** | `[url]{url}[/url]` | Show {url} as such, underline it and make it clickable. |
|
| **url** | `[url]{url}[/url]` | Show {url} as such, underline it and make it clickable. |
|
||||||
| | | **Must be handled with the "meta_clicked" signal to have an effect.** |
|
| | | **Must be handled with the "meta_clicked" signal to have an effect.** |
|
||||||
| | | See `doc_bbcode_in_richtextlabel_handling_url_tag_clicks`. |
|
| | | See `doc_bbcode_in_richtextlabel_handling_url_tag_clicks`. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **url (ref)** | `[url=<url>]{text}[/url]` | Makes {text} reference <url> (underlined and clickable). |
|
| **url (ref)** | `[url=<url>]{text}[/url]` | Makes {text} reference <url> (underlined and clickable). |
|
||||||
| | | **Must be handled with the "meta_clicked" signal to have an effect.** |
|
| | | **Must be handled with the "meta_clicked" signal to have an effect.** |
|
||||||
| | | See `doc_bbcode_in_richtextlabel_handling_url_tag_clicks`. |
|
| | | See `doc_bbcode_in_richtextlabel_handling_url_tag_clicks`. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **image** | `[img]{path}[/img]` | Insert image at resource {path}. |
|
| **image** | `[img]{path}[/img]` | Insert image at resource {path}. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **resized image** | `[img=<width>]{path}[/img]` | Insert image at resource {path} using <width> (keeps ratio). |
|
| **resized image** | `[img=<width>]{path}[/img]` | Insert image at resource {path} using <width> (keeps ratio). |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **resized image** | `[img=<width>x<height>]{path}[/img]` | Insert image at resource {path} using <width>×<height>. |
|
| **resized image** | `[img=<width>x<height>]{path}[/img]` | Insert image at resource {path} using <width>×<height>. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **font** | `[font=<path>]{text}[/font]` | Use custom font at <path> for {text}. |
|
| **font** | `[font=<path>]{text}[/font]` | Use custom font at <path> for {text}. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **color** | `[color=<code/name>]{text}[/color]` | Change {text} color; use name or # format, such as `#ff00ff`. |
|
| **color** | `[color=<code/name>]{text}[/color]` | Change {text} color; use name or # format, such as `#ff00ff`. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **table** | `[table=<number>]{cells}[/table]` | Creates a table with <number> of columns. |
|
| **table** | `[table=<number>]{cells}[/table]` | Creates a table with <number> of columns. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
| **cell** | `[cell]{text}[/cell]` | Adds cells with the {text} to the table. |
|
| **cell** | `[cell]{text}[/cell]` | Adds cells with the {text} to the table. |
|
||||||
+-----------------------+-----------------------------------------------------------+--------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
Built-in color names
|
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
### Built-in color names
|
||||||
|
|
||||||
List of valid color names for the [color=<name>] tag:
|
List of valid color names for the [color=<name>] tag:
|
||||||
|
|
||||||
@ -115,8 +93,7 @@ List of valid color names for the [color=<name>] tag:
|
|||||||
- white
|
- white
|
||||||
- yellow
|
- yellow
|
||||||
|
|
||||||
Hexadecimal color codes
|
### Hexadecimal color codes
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
For opaque RGB colors, any valid 6-digit hexadecimal code is supported, e.g. `[color=#ffffff]white[/color]`.
|
For opaque RGB colors, any valid 6-digit hexadecimal code is supported, e.g. `[color=#ffffff]white[/color]`.
|
||||||
Short RGB color codes such as `#6f2` (equivalent to `#66ff22`) are also supported.
|
Short RGB color codes such as `#6f2` (equivalent to `#66ff22`) are also supported.
|
||||||
@ -125,10 +102,7 @@ For transparent RGB colors, any 8-digit hexadecimal code can be used, e.g. `[col
|
|||||||
In this case, note that the alpha channel is the **first** component of the color code, not the last one.
|
In this case, note that the alpha channel is the **first** component of the color code, not the last one.
|
||||||
Short RGBA color codes such as `#86f2` (equivalent to `#8866ff22`) are also supported.
|
Short RGBA color codes such as `#86f2` (equivalent to `#8866ff22`) are also supported.
|
||||||
|
|
||||||
|
### Handling `[url]` tag clicks
|
||||||
|
|
||||||
Handling `[url]` tag clicks
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
By default, `[url]` tags do nothing when clicked. This is to allow flexible use
|
By default, `[url]` tags do nothing when clicked. This is to allow flexible use
|
||||||
of `[url]` tags rather than limiting them to opening URLs in a web browser.
|
of `[url]` tags rather than limiting them to opening URLs in a web browser.
|
||||||
@ -152,8 +126,7 @@ For more advanced use cases, it's also possible to store JSON in an `[url]`
|
|||||||
tag's option and parse it in the function that handles the `meta_clicked` signal.
|
tag's option and parse it in the function that handles the `meta_clicked` signal.
|
||||||
For example: `[url={"example": "value"}]JSON[/url]`
|
For example: `[url={"example": "value"}]JSON[/url]`
|
||||||
|
|
||||||
Image vertical offset
|
### Image vertical offset
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
You use a custom font for your image in order to align it vertically.
|
You use a custom font for your image in order to align it vertically.
|
||||||
|
|
||||||
@ -161,14 +134,12 @@ You use a custom font for your image in order to align it vertically.
|
|||||||
2. Set this bitmap font with a positive value for the `ascent` property, that's your height offset
|
2. Set this bitmap font with a positive value for the `ascent` property, that's your height offset
|
||||||
3. Set the BBCode tag this way: `[font=<font-path>][img]{image-path}[/img][/font]`
|
3. Set the BBCode tag this way: `[font=<font-path>][img]{image-path}[/img][/font]`
|
||||||
|
|
||||||
Animation effects
|
## Animation effects
|
||||||
-----------------
|
|
||||||
|
|
||||||
BBCode can also be used to create different text animation effects. Five customizable
|
BBCode can also be used to create different text animation effects. Five customizable
|
||||||
effects are provided out of the box, and you can easily create your own.
|
effects are provided out of the box, and you can easily create your own.
|
||||||
|
|
||||||
Wave
|
### Wave
|
||||||
~~~~
|
|
||||||
|
|
||||||
![](img/wave.png)
|
![](img/wave.png)
|
||||||
|
|
||||||
@ -176,8 +147,7 @@ Wave makes the text go up and down. Its tag format is `[wave amp=50 freq=2][/wav
|
|||||||
`amp` controls how high and low the effect goes, and `freq` controls how fast the
|
`amp` controls how high and low the effect goes, and `freq` controls how fast the
|
||||||
text goes up and down.
|
text goes up and down.
|
||||||
|
|
||||||
Tornado
|
### Tornado
|
||||||
~~~~~~~
|
|
||||||
|
|
||||||
![](img/tornado.png)
|
![](img/tornado.png)
|
||||||
|
|
||||||
@ -186,8 +156,7 @@ Tornao makes the text move around in a circle. Its tag format is
|
|||||||
`radius` is the radius of the circle that controls the offset, `freq` is how
|
`radius` is the radius of the circle that controls the offset, `freq` is how
|
||||||
fast the text moves in a circle.
|
fast the text moves in a circle.
|
||||||
|
|
||||||
Shake
|
### Shake
|
||||||
~~~~~
|
|
||||||
|
|
||||||
![](img/shake.png)
|
![](img/shake.png)
|
||||||
|
|
||||||
@ -195,8 +164,7 @@ Shake makes the text shake. Its tag format is `[shake rate=5 level=10][/shake]`.
|
|||||||
`rate` controls how fast the text shakes, `level` controls how far the text is
|
`rate` controls how fast the text shakes, `level` controls how far the text is
|
||||||
offset from the origin.
|
offset from the origin.
|
||||||
|
|
||||||
Fade
|
### Fade
|
||||||
~~~~
|
|
||||||
|
|
||||||
![](img/fade.png)
|
![](img/fade.png)
|
||||||
|
|
||||||
@ -206,8 +174,7 @@ Fade creates a fade effect over the text that is not animated. Its tag format is
|
|||||||
command is inserted, `length` controls over how many characters should the fade
|
command is inserted, `length` controls over how many characters should the fade
|
||||||
out take place.
|
out take place.
|
||||||
|
|
||||||
Rainbow
|
### Rainbow
|
||||||
~~~~~~~
|
|
||||||
|
|
||||||
![](img/rainbow.png)
|
![](img/rainbow.png)
|
||||||
|
|
||||||
@ -216,8 +183,7 @@ Rainbow gives the text a rainbow color that changes over time. Its tag format is
|
|||||||
`freq` is the number of full rainbow cycles per second, `sat` is the saturation
|
`freq` is the number of full rainbow cycles per second, `sat` is the saturation
|
||||||
of the rainbow, `val` is the value of the rainbow.
|
of the rainbow, `val` is the value of the rainbow.
|
||||||
|
|
||||||
Custom BBCode tags and text effects
|
## Custom BBCode tags and text effects
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
You can extend the `RichTextEffect` resource type to create your own custom
|
You can extend the `RichTextEffect` resource type to create your own custom
|
||||||
BBCode tags. You begin by extending the `RichTextEffect` resource type. Add
|
BBCode tags. You begin by extending the `RichTextEffect` resource type. Add
|
||||||
@ -238,8 +204,7 @@ Optionally, you can also provide a custom BBCode identifier simply by adding a m
|
|||||||
name `bbcode`. The code will check the `bbcode` property automatically or will
|
name `bbcode`. The code will check the `bbcode` property automatically or will
|
||||||
use the name of the file to determine what the BBCode tag should be.
|
use the name of the file to determine what the BBCode tag should be.
|
||||||
|
|
||||||
`process_custom_fx`
|
### `process_custom_fx`
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
This is where the logic of each effect takes place and is called once per character
|
This is where the logic of each effect takes place and is called once per character
|
||||||
during the draw phase of text rendering. This passes in a `CharFXTransform`
|
during the draw phase of text rendering. This passes in a `CharFXTransform`
|
||||||
@ -269,8 +234,7 @@ the user fixes whatever error cropped up in their custom effect logic.
|
|||||||
|
|
||||||
Here are some examples of custom effects:
|
Here are some examples of custom effects:
|
||||||
|
|
||||||
Ghost
|
### Ghost
|
||||||
~~~~~
|
|
||||||
|
|
||||||
```
|
```
|
||||||
tool
|
tool
|
||||||
@ -292,8 +256,7 @@ Ghost
|
|||||||
return true
|
return true
|
||||||
```
|
```
|
||||||
|
|
||||||
Pulse
|
### Pulse
|
||||||
~~~~~
|
|
||||||
|
|
||||||
```
|
```
|
||||||
tool
|
tool
|
||||||
@ -319,8 +282,7 @@ Pulse
|
|||||||
return true
|
return true
|
||||||
```
|
```
|
||||||
|
|
||||||
Matrix
|
### Matrix
|
||||||
~~~~~~
|
|
||||||
|
|
||||||
```
|
```
|
||||||
tool
|
tool
|
||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |