bookReferencia de UI

Notas de referencia y patrones para el dibujo de UI en CSL.

Esta página recopila reglas, patrones y ejemplos de IU que son útiles una vez que conoces lo básico.

Leer Fundamentos de la IU primero.

Principios básicos

  1. Y crece hacia arriba. Las coordenadas de la pantalla usan (0, 0) en la esquina inferior izquierda.

  2. Empieza desde rectángulos de pantalla. Usa UI.get_safe_screen_rect() o UI.get_screen_rect(), luego deriva todo a partir de esos rects.

  3. Patrón push/pop. Usa defer para cada push para evitar filtrar el estado de la IU.

  4. Primero móvil. Evita interacciones solo por hover.

  5. Solo ASCII. No emoji ni Unicode en el texto de la IU.

  6. La IU debe renderizar en ao_late_update. Esto es requerido para una interacción correcta.

Inicio rápido: un botón HUD simple

Player :: class : Player_Base {
    ao_late_update :: method(dt: float) {
        if this->is_local_or_server() {
            draw_my_hud(this);
        }
    }
}

draw_my_hud :: proc(player: Player) {
    rect := UI.get_safe_screen_rect()
        ->bottom_right_rect()
        ->grow(40, 150, 40, 150)
        ->offset(-50, 50);

    bs := UI.default_button_settings();
    ts := UI.default_text_settings();

    if UI.button(rect, bs, ts, "Action").clicked {
        do_action(player);
    }
}

Dibujo básico

Cuadriláteros e imágenes

Texto

Maquetación: empieza desde rects

Usa cut para la maquetación

Las funciones cut deben usarse para la maquetación al colocar múltiples elementos de IU:

Autoescalado y rects no escalados

Las funciones de Rect se escalan por UI.get_current_scale_factor() (basado en 1080p).

Si necesitas valores de píxeles exactos, usa el _unscaled variantes:

Botones

Reglas de sprite para botones

Debes usar uno de estos sprites al dibujar botones:

  • "$AO/new/modal/buttons_2/button_1.png" (Naranja)

  • "$AO/new/modal/buttons_2/button_2.png" (Verde)

  • "$AO/new/modal/buttons_2/button_3.png" (Rojo)

  • "$AO/new/modal/buttons_2/button_5.png" (Azul)

  • "$AO/new/modal/buttons_2/button_7.png" (Rosa)

  • "$AO/new/modal/buttons_2/button_8.png" (Gris)

  • "$AO/new/modal/buttons_2/button_9.png" (Blanco)

Gestión del estado de la IU

Usa defer para cada par push/pop:

IDs para elementos repetidos

Al dibujar listas o elementos repetidos, haz push de IDs únicos:

Tamaños comunes

Algunos tamaños que se sabe que lucen bien en varios dispositivos:

  • Texto: Título 52, Cuerpo 36, Texto en espacio mundial 0.30

  • Rects: Diálogo simple 600x400, Botón estándar 210x74, Botón de salida 65x65

Mejores prácticas

  • Usa defer para cada par push/pop.

  • Haz push de IDs para elementos repetidos.

  • Usa funciones no escaladas con dimensiones calculadas.

  • Ajusta las proporciones de aspecto del icono con rect->fit_aspect(texture->get_aspect()).

  • Revisa siempre is_local_or_server() antes de dibujar IU interactiva.

Última actualización