Для целей этой документации мы используем термины CSL и окружение выполнения/платформу взаимозаменяемо
Эта страница — сторона CSL, посвящённая «моделированию данных»: примитивы, struct/классы и шаблоны, которые вы будете использовать для чистого представления состояния игры.
Если вы совсем новичок, начните с Начало работы с CSL. Эта страница предполагает, что вы уже умеете объявлять переменные и писать proc/method.
Примитивные типы
Числа и булевы значения
Знаковые целые: s8, s16, s32, s64 (псевдоним: int == s64)
Перечисления отлично подходят для читаемых полей «режим/состояние»:
Значения перечислений часто ссылаются с сокращением .VALUE когда компилятор может вывести тип перечисления.
Structs (значимые типы)
Используйте struct для «простых данных», которые вы хотите копировать дешево (конфиги, небольшие фрагменты состояния, дескрипторы).
Когда использовать struct
Объект-дескриптор/конфигурация (*_Desc)
Небольшое, самостоятельное состояние, которое вы хотите копировать по значению
Данные, которые вы хотите вложить внутрь другого типа
Когда не следует использовать struct
Большое изменяемое состояние, разделяемое между несколькими системами (используйте класс)
Объекты «идентичности» (игроки, предметы, долгоживущие объекты) (используйте класс)
Классы (ссылочные типы)
Классы — это ссылочные типы. Создавайте экземпляры с помощью new(...).
Наследование
Вы можете наследоваться от других struct/классов:
Используйте наследование, когда есть реальное отношение «является-как». Для большинства игровых данных композиция (поля) проще и легче в сопровождении.
Массивы, срезы и динамические массивы
Вы увидите три распространённых формы:
Фиксированные массивы: [N]T (размер во время компиляции)