A los efectos de esta documentación, nos referimos a CSL y al runtime/plataforma en torno a él de forma indistinta
Esta página es la parte de “modelado de datos” de CSL: primitivas, structs/clases y los patrones que usarás para representar el estado del juego con claridad.
Si eres totalmente nuevo, empieza con Primeros pasos con CSL. Esta página asume que ya sabes declarar variables y escribir proc/method.
Tipos primitivos
Números y bools
Enteros con signo: s8, s16, s32, s64 (alias: int == s64)
v2, v3, v4 son tipos integrados de matemáticas/datos:
Enums
Los enums son ideales para campos de “modo/estado” legibles:
Los valores de enum suelen referenciarse con la forma abreviada .VALUE cuando el compilador puede inferir el tipo de enum.
Structs (tipos por valor)
Usa structs para “datos simples” que quieras copiar de forma barata (configuración, pequeños bloques de estado, descriptores).
Cuándo usar un struct
Un objeto descriptor/configuración (*_Desc)
Estado pequeño e independiente que quieras copiar por valor
Datos que quieras incrustar dentro de otro tipo
Cuándo no usar un struct
Estado mutable grande compartido entre varios sistemas (usa una clase)
Objetos de “identidad” (jugadores, objetos, objetos de larga vida) (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 herencia cuando exista una relación real de “es-un”. Para la mayoría de los datos de gameplay, la composición (campos) es más simple y más 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)