Para los propósitos de esta documentación, nos referimos a CSL y al entorno de ejecución/plataforma que lo rodea de manera intercambiable.
Esta página es el lado de “modelado de datos” de CSL: primitivas, structs/clases y los patrones que usarás para representar el estado del juego de forma limpia.
Si eres totalmente nuevo, comienza con Comenzando con CSL. Esta página asume que ya sabes declarar variables y escribir proc/method.
Tipos primitivos
Números y booleanos
Enteros con signo: s8, s16, s32, s64 (alias: int == s64)
string se usa constantemente para identificadores, nombres y formateo.
item_id:="sword";log_info("picked up %",{item_id});
Vectores
v2, v3, v4 son tipos matemáticos/de datos incorporados:
Enumeraciones
Las enumeraciones son geniales para campos legibles de “modo/estado”:
Los valores de enum se referencian comúnmente con la abreviatura .VALUE cuando el compilador puede inferir el tipo de la enumeración.
Structs (tipos por valor)
Usa structs para “datos simples” que quieras copiar de forma barata (configuración, pequeños fragmentos de estado, descriptores).
Cuándo usar un struct
Un objeto descriptor/de configuración (*_Desc)
Estado pequeño y autocontenido que quieras copiar por valor
Datos que quieras incrustar dentro de otro tipo
Cuándo no usar un struct
Estado grande y mutable compartido entre múltiples sistemas (usa una clase)
Objetos de “identidad” (jugadores, ítems, objetos de larga duración) (usa una clase)
Clases (tipos por referencia)
Las clases son tipos por referencia. Crea instancias con new(...).
Herencia
Puedes heredar de otros structs/clases:
Usa la herencia cuando exista una verdadera relación de “es-un”. Para la mayoría de datos de jugabilidad, la composición (campos) es más simple y fácil de mantener.
Arrays, slices y arrays dinámicos
Verás tres formas comunes:
Arrays fijos: [N]T (tamaño en tiempo de compilación)
Slices / arrays gestionados: []T (una vista de un array)