Interfaz
Las interfaces se montan en la pestaña de interfaz del editor. En el código, una interfaz y sus elementos se indican por el nombre:
Ui::Element loja = Ui::get("Loja");loja["Moedas"].setText("Moedas: 12");loja["Fechar"].onClick(this, [] { Ui::hide("Loja"); });loja.show();Ui::Element es solo una dirección: es ligera de copiar y de guardar, y cada llamada busca el elemento de nuevo. Un nombre que no existe da un error en la Salida (una vez) y la llamada no hace nada.
Interfaces
Sección titulada «Interfaces»| Función | Qué hace | Ejemplo |
|---|---|---|
Ui::Element Ui::get(std::string_view ui) |
La interfaz con ese nombre. | Ui::Element hud = Ui::get("Hud"); |
void Ui::show(std::string_view ui) |
Muestra la interfaz, por encima de las que ya están en pantalla. | Ui::show("Pausa"); |
void Ui::hide(std::string_view ui) |
Oculta la interfaz. Lo que el código cambió en ella sigue valiendo. | Ui::hide("Pausa"); |
bool Ui::visible(std::string_view ui) |
true si la interfaz está en pantalla. |
if (Ui::visible("Loja")) ... |
void Ui::reset(std::string_view ui) |
Devuelve la interfaz a como está en el editor y quita los onClick. |
Ui::reset("Loja"); |
bool Ui::mouseOver() |
true si el mouse está encima de un botón o de un panel de la interfaz. |
if (!Ui::mouseOver()) atirar = true; |
Elementos
Sección titulada «Elementos»Los métodos de Ui::Element. Los que empiezan con set se pueden encadenar: botao.setText("Comprado").setEnabled(false);
| Función | Qué hace | Ejemplo |
|---|---|---|
Element operator[](std::string_view name) |
Un elemento de dentro, por el nombre: primero los hijos directos, después los de dentro de ellos. | hud["Moedas"] |
bool exists() |
true si la interfaz o el elemento existe. |
if (loja["Item3"].exists()) ... |
setText(std::string_view text) e text() |
El texto de un Texto o de un Botão. | hud["Moedas"].setText("12"); |
setValue(float value) e value() |
Cuánto está llena una Barra, de 0 a 1. | hud["Vida"].setValue(0.5f); |
setVisible(bool visible), show(), hide() e visible() |
Muestra u oculta la interfaz entera o un elemento (con lo que tiene dentro). | hud["Chave"].show(); |
setEnabled(bool enabled) e enabled() |
Botón: desactivado, queda apagado y no responde. | botao.setEnabled(moedas >= 10); |
setSprite(std::string_view sprite, int frame = 0) e setFrame(int frame) |
Cambia el sprite de una Imagem (o el fondo de un Painel o Botão) y el frame. | linha["Icone"].setSprite("espada"); |
setColor(Color color) |
El color principal: el fondo del Painel y del Botão, la parte llena de la Barra, las letras del Texto. | hud["Vida"].setColor(colors::red); |
setTextColor(Color color) e setBorderColor(Color color) |
El color de las letras y el del borde. | botao.setTextColor(colors::yellow); |
setFont(std::string_view font, int size = 0) e setTextSize(int size) |
La fuente (una fuente del proyecto; "" es la integrada) y el tamaño en píxeles. |
titulo.setFont("Titulos", 24); |
setPosition(float x, float y) e setSize(float width, float height) |
La posición (desde el ancla) y el tamaño, en píxeles del juego. | hud["Seta"].setPosition(10, 40); |
Element clone(std::string_view name) |
Copia el elemento (con lo que tiene dentro) al mismo panel, al final de la lista, visible. Con un nombre que ya existe, rehace la copia. | modelo.clone("Item0"); |
void remove() |
Quita el elemento de la interfaz. | loja["Itens"]["Item0"].remove(); |
onClick(const Entity* owner, std::function<void()> callback) |
Ejecuta callback cuando se pulsa el botón. Con owner (pasa this), el registro desaparece cuando la instancia se destruye. |
botao.onClick(this, [this] { restart(); }); |
setScroll(float pixels) y scroll() |
Cuánto está desplazada la lista de un Panel con Rolar (desplazar), en píxeles (0 = al principio). La rueda del mouse ya la desplaza sola. | lista.setScroll(0); |
onMouseEnter(const Entity* owner, std::function<void()> callback) y onMouseLeave(...) |
Ejecuta callback cuando el mouse entra en el elemento y cuando sale de él. |
linha.onMouseEnter(this, [linha] { linha.setColor(colors::yellow); }); |
| Función | Qué hace | Ejemplo |
|---|---|---|
void setPaused(bool paused) |
Pausa o reanuda el juego. En pausa, las instancias no ejecutan temporizadores, onUpdate, movimiento ni colisiones. |
setPaused(true); |
bool paused() |
true si el juego está en pausa. |
if (paused()) ... |
void onPausedUpdate() |
Evento de las instancias: una vez por paso mientras el juego está en pausa, en lugar del onUpdate. |
void onPausedUpdate() override; |
Observaciones
Sección titulada «Observaciones»- Cada interfaz existe una sola vez mientras el juego corre. Ocultar y mostrar no deshace lo que el código cambió; para eso,
Ui::reset. - Las interfaces marcadas en Interfaces, en el Inspector de la room, se abren con ella y se cierran al salir. Las que muestra el código quedan hasta que el código las oculte.
- Con el mouse encima de un botón o de un panel con fondo,
mousePressed,mouseHeldymouseReleaseddevuelvenfalseal juego. - El mouse vale para los botones de todas las interfaces visibles; lo que está delante tapa lo de atrás. El teclado recorre los botones de la interfaz de delante, con las acciones
cima,baixo,esquerda,direitayconfirmar. - Cambiar de room (o reiniciar) quita la pausa.
onClicksinownertambién existe, y vale hasta unUi::reset. Es mejor pasarthis.
