Тип, функции и операторы
Тайлсеты TILESET
Повторяющиеся фрагменты карты, декорации, панели и небольшие игровые элементы удобно хранить одним атласом, нарезанным на одинаковые тайлы. Такой атлас описывает тип TILESET; его загружает LOADTILESET, размеры и число тайлов сообщают TILECOUNT, TILEWIDTH и TILEHEIGHT, а выводит выбранный тайл оператор DRAWTILE.
Атлас и его сетка
Значение TILESET содержит загруженное изображение и сетку тайлов внутри него. Все тайлы имеют одинаковые размеры; нумерация начинается с 1 в левом верхнем углу и продолжается слева направо, затем сверху вниз.
Загрузка выполняется функцией LOADTILESET, свойства проверяются функциями размеров, а нужный номер передаётся в DRAWTILE. Загрузка и чтение свойств работают со значением тайлсета без открытия графического холста.
Вывод DRAWTILE требует CANVAS. Координаты задаются в пикселях мира, преобразуются камерой и обрезаются областью VIEWPORT; при нулевой камере они совпадают с координатами холста в выбранной области.
Синтаксис
DIM <имя> AS TILESET
LOADTILESET(<путь>, <ширина тайла>, <высота тайла>)
LOADTILESET(<путь>, <ширина тайла>, <высота тайла>, <отступ>)
LOADTILESET(<путь>, <ширина тайла>, <высота тайла>, <отступ>, <промежуток>)
TILECOUNT(<тайлсет>)
TILEWIDTH(<тайлсет>)
TILEHEIGHT(<тайлсет>)
DRAWTILE <тайлсет>, <номер тайла>, <координата X>, <координата Y>
LOADTILESET загружает изображение с сеткой тайлов и возвращает TILESET. Функция имеет три формы. Пропущенные <отступ> и <промежуток> равны 0.
Функции свойств принимают как загруженный, так и пустой тайлсет.
Оператор DRAWTILE выводит один тайл в натуральном размере. Формы масштабирования и поворота не поддерживаются.
Аргументы
| Аргумент | Описание |
|---|---|
<имя свойства> | Переменная типа TILESET. |
<путь> | Передайте строковый путь к файлу изображения-атласа. |
<ширина тайла>, <высота тайла> | Передайте положительные целые размеры одного тайла в пикселях. Каждый перечисленный аргумент имеет тип LONG. |
<отступ> | Передайте неотрицательный внешний отступ в пикселях между краем атласа и первой линией тайлов. Передаваемое значение имеет тип LONG. |
<промежуток> | Передайте неотрицательный промежуток в пикселях между соседними тайлами внутри атласа. Передаваемое значение имеет тип LONG. |
<тайлсет> | Передайте выражение типа TILESET. |
<номер тайла> | Передайте номер тайла, начиная с 1. Передаваемое значение имеет тип LONG. |
<координата X>, <координата Y> | Передайте пиксельные координаты левого верхнего угла вывода тайла на CANVAS. Каждый перечисленный аргумент имеет тип LONG. |
Что делают оператор и функции
При загрузке проверяется точное соответствие сетки размерам изображения, а результат успешного вызова имеет тип TILESET. Функция TILECOUNT сообщает число тайлов, а TILEWIDTH и TILEHEIGHT — размеры одного тайла в пикселях. Аргумент tileIndex выбирает прямоугольник атласа для вывода на холст.
Пустое значение и соответствие сетки
- Тип
TILESETдопускает пустое значение переменной. Например, послеDIM tiles AS TILESETпеременная уже существует, но ещё не содержит загруженного атласа. - Для пустого значения
TILESETфункцииTILECOUNT,TILEWIDTHиTILEHEIGHTвозвращают0. - Попытка вызвать оператор
DRAWTILEдля пустого значенияTILESETсчитается ошибкой времени выполнения. - Сетка тайлов должна точно совпадать с размерами изображения с учётом
<отступ>и<промежуток>. Частично заполненный последний ряд или последний столбец не допускается. - Отступ
<отступ>применяется с обеих сторон каждой оси. Если после его вычитания не помещается полный тайл, загрузка завершается ошибкойMB3005, даже для очень большого положительного отступа. Промежуток<промежуток>применяется только между соседними тайлами: для атласа из одного тайла допустим большой неотрицательный промежуток, который не меняет число тайлов. После неудачной загрузки прежнее значение переменной тайлсета сохраняется. Проверить оба случая можно в примере числовых границ. - Тайлсеты в текущем срезе работают только как источник одинаковых тайлов. На этой странице не описываются
TILEMAP, слои тайловой карты и загрузка карт Tiled. - Оператор
DRAWTILEрисует тайл в натуральном размереtileWidth x tileHeight. Если нужна произвольная масштабируемая графика, для этого подходятDRAWIMAGEиDRAWSPRITE.
Встроенная функция TILEWIDTH
TILEWIDTH возвращает ширину одного тайла в пикселях. Она читает свойства значения без графического окна, поэтому результат доступен сразу.
Синтаксис
TILEWIDTH(<тайлсет>)Аргумент
Передайте выражение типа TILESET, свойства которого нужно прочитать. Пустая переменная после объявления допустима.
Результат, ограничения и диагностика
Функция возвращает INTEGER. Для пустого значения результат равен 0. Чтение свойства не загружает файл и не вызывает ошибку из-за пустого ресурса. Несовместимый тип или неверное число аргументов отклоняется компилятором.
Пример
DIM atlas AS TILESET
PRINT TILEWIDTH(atlas)Программа печатает 0, поскольку ресурс ещё не загружен. После успешной загрузки функция возвращает фактическое свойство.
См. также
Встроенная функция TILEHEIGHT
TILEHEIGHT возвращает высоту одного тайла в пикселях. Она читает свойства значения без графического окна, поэтому результат доступен сразу.
Синтаксис
TILEHEIGHT(<тайлсет>)Аргумент
Передайте выражение типа TILESET, свойства которого нужно прочитать. Пустая переменная после объявления допустима.
Результат, ограничения и диагностика
Функция возвращает INTEGER. Для пустого значения результат равен 0. Чтение свойства не загружает файл и не вызывает ошибку из-за пустого ресурса. Несовместимый тип или неверное число аргументов отклоняется компилятором.
Пример
DIM atlas AS TILESET
PRINT TILEHEIGHT(atlas)Программа печатает 0, поскольку ресурс ещё не загружен. После успешной загрузки функция возвращает фактическое свойство.
См. также
Встроенная функция TILECOUNT
TILECOUNT возвращает количество тайлов в атласе. Она читает свойства значения без графического окна, поэтому результат доступен сразу.
Синтаксис
TILECOUNT(<тайлсет>)Аргумент
Передайте выражение типа TILESET, свойства которого нужно прочитать. Пустая переменная после объявления допустима.
Результат, ограничения и диагностика
Функция возвращает INTEGER. Для пустого значения результат равен 0. Чтение свойства не загружает файл и не вызывает ошибку из-за пустого ресурса. Несовместимый тип или неверное число аргументов отклоняется компилятором.
Пример
DIM atlas AS TILESET
PRINT TILECOUNT(atlas)Программа печатает 0, поскольку ресурс ещё не загружен. После успешной загрузки функция возвращает фактическое свойство.