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 IU primero.

Principios básicos

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

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

  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 necesario para la 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: empezar desde rectángulos

Usa cut para el diseño

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

Autoescalado y rectángulos no escalados

Las funciones de rectángulo se escalan por UI.get_current_scale_factor() (basado en 1080p).

Si necesitas valores exactos de píxeles, 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, push 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

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

Mejores prácticas

  • Usa defer para cada par push/pop.

  • Push IDs para elementos repetidos.

  • Usa funciones no escaladas con dimensiones calculadas.

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

  • Siempre comprueba is_local_or_server() antes de dibujar IU interactiva.

Última actualización