Axiom Справочник языка

Тип, функции и операторы

Тайловые карты TILEMAP

Уровень, подготовленный в редакторе карт, содержит слои, клетки, объекты и свойства, и программе не нужно строить эту сетку вручную. Такую конечную ортогональную карту Tiled описывает тип TILEMAP: раздел охватывает её загрузку, чтение размеров, слоёв, клеток, объектов и свойств, а также рисование и изменение клеток. Точные формы каждой функции и оператора приведены в соответствующих подразделах.

Устройство карты

Значение карты содержит тайловые и объектные слои, размеры сетки и клетки, а также ссылки на тайлсеты. Поддерживаются конечные ортогональные карты Tiled в JSON-файлах .tmj и .json; пользовательские номера слоёв начинаются с 1.

Карту берут в работу, когда уровень уже подготовлен в редакторе Tiled: программа получает готовые слои и данные объектов вместо ручного построения сетки. Загрузка выполняется функцией LOADTILEMAP; функции MAP... читают данные; операторы DRAWTILEMAP и DRAWTILELAYER рисуют карту и отдельный слой; оператор SETMAPTILE меняет клетку.

Где работает карта

Загрузка и чтение данных не требуют графического окна. В IDE относительный path отсчитывается от каталога запускаемой программы.

Рисование карты требует CANVAS. Аргументы x и y задают левый верхний угол карты в мировых пикселях, а результат учитывает камеру и обрезается текущей областью VIEWPORT.

Синтаксис

DIM <имя> AS TILEMAP
LOADTILEMAP(<путь>)
MAPWIDTH(<тайловая карта>)
MAPHEIGHT(<тайловая карта>)
MAPPIXELWIDTH(<тайловая карта>)
MAPPIXELHEIGHT(<тайловая карта>)
MAPTILEWIDTH(<тайловая карта>)
MAPTILEHEIGHT(<тайловая карта>)
MAPLAYERCOUNT(<тайловая карта>)
MAPTILE(<тайловая карта>, <индекс слоя>, <столбец>, <строка>)
MAPTILESET(<тайловая карта>, <индекс слоя>, <столбец>, <строка>)
MAPTILEFLAGS(<тайловая карта>, <индекс слоя>, <столбец>, <строка>)
DRAWTILEMAP <карта>, <координата X>, <координата Y>
DRAWTILELAYER <карта>, <номер слоя>, <координата X>, <координата Y>
SETMAPTILE <тайловая карта>, <индекс слоя>, <столбец>, <строка>, <номер тайлсета>, <номер тайла>⟦, <флаги>⟧

Функция LOADTILEMAP принимает путь типа STRING, читает карту Tiled и возвращает значение типа TILEMAP.

Функции размеров и числа слоёв принимают одно значение карты. Единицы каждого результата указаны ниже.

Функции MAPTILE, MAPTILESET и MAPTILEFLAGS принимают номера слоя, столбца и строки, каждый начиная с 1.

Оператор DRAWTILEMAP выводит все видимые тайловые слои карты.

Оператор DRAWTILELAYER выводит один тайловый слой, выбранный номером layerIndex начиная с 1.

Оператор SETMAPTILE записывает клетку. Для очистки передайте нулевую пару тайлсета и тайла: SETMAPTILE tilemap, layerIndex, column, row, 0, 0.

Параметры

АргументОписание
nameПеременная типа TILEMAP.
<путь>Передайте строковый путь к файлу карты Tiled .tmj или .json. Передаваемое значение имеет тип STRING.
<карта>Передайте выражение типа TILEMAP.
<номер слоя>Передайте целый номер слоя, начиная с 1. Передаваемое значение имеет тип LONG.
<столбец>, <строка>Передайте целые координаты, нумеруемые с 1, клетки внутри тайлового слоя. Каждый перечисленный аргумент имеет тип LONG.
<номер тайлсета>Передайте целый номер, начиная с 1, тайлсета внутри карты. Значение 0 допустимо только вместе с tileIndex = 0 для очистки клетки. Передаваемое значение имеет тип LONG.
<номер тайла>Передайте целый номер, начиная с 1, тайла внутри выбранного тайлсета. Значение 0 допустимо только вместе с tilesetIndex = 0. Передаваемое значение имеет тип LONG.
<флаги>Передайте необязательную битовую маску отражения тайла: 1 — горизонтальное, 2 — вертикальное, 4 — диагональное. Если аргумент опущен, используется 0. Передаваемое значение имеет тип LONG.
<координата X>, <координата Y>Передайте пиксельные координаты левого верхнего угла карты или слоя на CANVAS. Каждый перечисленный аргумент имеет тип LONG.

Что делают операторы и функции

При загрузке читается файл карты вместе со связанными тайлсетами и их изображениями. Значение присваивается только после успешной загрузки.

Загрузчик сохраняет свойства карты, слоёв и тайлов, а также точки и прямоугольные объекты. Имена свойств чувствительны к регистру. Строки остаются буквальными, логические значения представлены как TRUE/FALSE, а числа сохраняют исходную запись JSON без промежуточного DOUBLE. Свойства читают функции MAPPROPERTY, MAPLAYERPROPERTY, MAPTILEPROPERTY и MAPOBJECTPROPERTY; данные объектов — функции MAPOBJECT....

Объект хранит имя, класс, видимость, координаты и размеры в локальных пикселях карты. У точки ширина и высота равны нулю. Загрузчик отклоняет эллипсы, капсулы (capsule), многоугольники, ломаные, объекты-тайлы, текст, шаблоны и повёрнутые объекты. Поля тайлсета wangsets, terrains и поле тайла terrain запрещены даже с пустым массивом; проверка распространяется на встроенные тайлсеты и внешние .tsj. Ошибками также считаются неверная форма properties или objects, повторяющееся имя свойства и недопустимый размер объекта. Размеры карты width/height должны быть неотрицательными целыми INTEGER, размеры клетки tilewidth/tileheight — положительными. Обязательные layers и tilesets должны быть массивами; необязательное infinite — значением BOOLEAN. В IDE отказ сообщает MB3005 с причиной в err.Message, например LOADTILEMAP: Объекты ellipse пока не поддерживаются. Прежнее значение карты сохраняется. После CATCH можно явно загрузить другой файл; автоматической повторной попытки нет.

Сетка тайлсета проверяется по фактическому изображению. Отступ margin вычитается с двух сторон, а spacing действует только между соседними тайлами. Слишком большой отступ отклоняется; большой промежуток допустим, если в соответствующем направлении нет соседнего тайла. Те же правила действуют при загрузке TILESET.

Для слоя поддерживается обычное смешивание: поле mode отсутствует либо равно строке normal. Значения multiply, add, screen и другие режимы вызывают MB3005. Поле tintcolor может отсутствовать либо содержать непрозрачный белый #FFFFFF или #FFFFFFFF. Другие цвета и прозрачность не поддерживаются. Оба поля проверяются у тайловых и объектных слоёв; числа и null вместо строк недопустимы. Отказ сохраняет прежнее значение карты.

Поля opacity, offsetx, offsety, parallaxx и parallaxy должны быть конечными числами, представимыми как DOUBLE. Непрозрачность лежит в 0..1 включительно. Смещения в пикселях и коэффициенты параллакса могут быть отрицательными. По умолчанию смещения равны 0, непрозрачность и параллакс — 1. Непредставимое число, например 1e400, вызывает MB3005; причина в err.Message называет поле.

Функции MAPWIDTH/MAPHEIGHT измеряют карту в клетках, MAPPIXELWIDTH/MAPPIXELHEIGHT — в пикселях, MAPTILEWIDTH/MAPTILEHEIGHT — размер одной клетки в пикселях. Функция MAPLAYERCOUNT возвращает число слоёв.

Результат MAPTILE — номер тайла внутри тайлсета, MAPTILESET — номер тайлсета карты, MAPTILEFLAGS — маска отражения. Пустая клетка, точка вне карты, отсутствующий или объектный слой и пустое значение карты дают 0.

Смещение слоя и произведение камеры на параллакс округляются отдельно до целого пикселя; половина округляется от нуля. Их разность не ограничивается промежуточно диапазоном 64-разрядного целого, поэтому одинаковые огромные конечные значения могут компенсироваться. Переполнение произведения в DOUBLE приводит к пропуску невидимого слоя, а не к замене произведения нулём. Оба случая проверяет пример крайнего параллакса.

Положение карты в операторах рисования ограничено диапазоном -1000000000..1000000000. При расчёте видимости учитываются смещения слоя и тайлсета: компенсирующиеся смещения сохраняют видимый тайл, полностью удалённый слой пропускается. Это показывает пример границ видимости.

Объектные слои не выводятся автоматически. Оператор DRAWTILEMAP пропускает невидимые тайловые слои; явный DRAWTILELAYER рисует выбранный тайловый слой даже при его отметке невидимости.

Оператор SETMAPTILE меняет только существующую клетку. Новые строки, столбцы, слои и тайлсеты не создаются. Пара tilesetIndex = 0, tileIndex = 0 очищает клетку.

Правила работы

  • Переменная типа TILEMAP после DIM может быть пустой.
  • Для пустого значения TILEMAP функции размеров и состава возвращают 0.
  • Функции MAPTILE, MAPTILESET и MAPTILEFLAGS при чтении за пределами карты возвращают 0, а не выдают ошибку.
  • Оператор SETMAPTILE при записи за пределами карты выдаёт ошибку времени выполнения.
  • Оператор SETMAPTILE может изменять только тайловые слои. Объектные слои нельзя изменять как сетку тайлов.
  • Оператор DRAWTILEMAP пропускает невидимые тайловые слои и не рисует объектные слои.
  • Оператор DRAWTILELAYER требует существующий тайловый слой. Попытка нарисовать объектный слой считается ошибкой времени выполнения.
  • Операторы DRAWTILEMAP и DRAWTILELAYER устанавливают текущую графическую позицию в переданную точку начала карты.
  • Флаги отражения тайлов и tileoffset тайлсета применяются автоматически.

MAPWIDTH

MAPWIDTH возвращает ширину карты в клетках. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPWIDTH(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPWIDTH(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPHEIGHT

Функция MAPHEIGHT возвращает высоту карты в клетках. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPHEIGHT(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPHEIGHT(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPPIXELWIDTH

Вызов MAPPIXELWIDTH возвращает ширину карты в пикселях. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPPIXELWIDTH(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPPIXELWIDTH(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPPIXELHEIGHT

MAPPIXELHEIGHT возвращает высоту карты в пикселях, читая данные карты без открытия графической поверхности.

Синтаксис

MAPPIXELHEIGHT(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPPIXELHEIGHT(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPTILEWIDTH

Функция MAPTILEWIDTH возвращает ширину одной клетки в пикселях; данные карты читаются без открытия графической поверхности.

Синтаксис

MAPTILEWIDTH(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPTILEWIDTH(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPTILEHEIGHT

Вызов MAPTILEHEIGHT возвращает высоту одной клетки в пикселях. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPTILEHEIGHT(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPTILEHEIGHT(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPLAYERCOUNT

MAPLAYERCOUNT возвращает число слоёв карты. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPLAYERCOUNT(<карта>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPLAYERCOUNT(level)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPTILE

Функция MAPTILE возвращает номер тайла внутри тайлсета. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPTILE(<карта>, <номер слоя>, <столбец>, <строка>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Номер слоя, столбец и строка приводятся к LONG и нумеруются с 1. Они выбирают одну клетку тайлового слоя.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0. Пустая клетка, неверная координата и отсутствующий или объектный слой также возвращают 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPTILE(level, 1, 1, 1)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPTILESET

Вызов MAPTILESET возвращает номер тайлсета карты, к которому относится клетка. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPTILESET(<карта>, <номер слоя>, <столбец>, <строка>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Номер слоя, столбец и строка приводятся к LONG и нумеруются с 1. Они выбирают одну клетку тайлового слоя.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0. Пустая клетка, неверная координата и отсутствующий или объектный слой также возвращают 0.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPTILESET(level, 1, 1, 1)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

MAPTILEFLAGS

MAPTILEFLAGS возвращает битовую маску отражений тайла в клетке. Данные карты читаются без открытия графической поверхности.

Синтаксис

MAPTILEFLAGS(<карта>, <номер слоя>, <столбец>, <строка>)

Аргументы

Передайте значение TILEMAP, данные которого нужно прочитать. Пустое значение допустимо.

Номер слоя, столбец и строка приводятся к LONG и нумеруются с 1. Они выбирают одну клетку тайлового слоя.

Результат и ограничения

Результат имеет тип INTEGER. Для пустой карты возвращается 0. Пустая клетка, неверная координата и отсутствующий или объектный слой также возвращают 0. Биты 1, 2 и 4 обозначают горизонтальное, вертикальное и диагональное отражение.

Диагностика

Отсутствие данных не вызывает ошибку выполнения. Несовместимый тип или неверное количество аргументов отклоняется компилятором до запуска.

Пример

DIM level AS TILEMAP
PRINT MAPTILEFLAGS(level, 1, 1, 1)

Программа печатает 0: переменная объявлена, но карта ещё не загружена. После успешного LOADTILEMAP функция читает фактические данные.

См. также

LOADTILEMAP, SETMAPTILE.

Общие правила чтения свойств карты

Функции карты читают уже загруженное значение без графической поверхности. Слои, объекты, строки и столбцы нумеруются с 1. Имена свойств различают регистр. Строки сохраняются буквально, логические свойства имеют вид TRUE или FALSE, числа сохраняют исходную запись JSON, структурные значения представлены JSON-текстом.

MAPTILESETCOUNT

Функция MAPTILESETCOUNT возвращает число тайлсетов карты.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPTILESETCOUNT(<карта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.

Результат

Функция возвращает число тайлсетов карты; тип результата — INTEGER.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 1. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPTILESETCOUNT:"
PRINT MAPTILESETCOUNT(level)

Запускаемый пример MAPTILESETCOUNT

См. также

Чтение клеток, SETMAPTILE.

MAPPROPERTY

Вызов MAPPROPERTY возвращает пользовательское свойство карты.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPPROPERTY(<карта>, <имя свойства>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <имя свойства>. Передайте STRING с точным именем свойства. Регистр значим, пробелы не обрезаются.

Результат

Функция возвращает пользовательское свойство карты; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Строки свойств сохраняются буквально; BOOLEAN имеет вид TRUE/FALSE, числа сохраняют исходную запись JSON без DOUBLE, структурные значения представлены JSON-текстом.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: выход😀. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPPROPERTY:"
PRINT MAPPROPERTY(level, "role")

Запускаемый пример MAPPROPERTY

См. также

Чтение клеток, SETMAPTILE.

MAPLAYERPROPERTY

MAPLAYERPROPERTY возвращает пользовательское свойство слоя.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPLAYERPROPERTY(<карта>, <номер слоя>, <имя свойства>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <имя свойства>. Передайте STRING с точным именем свойства. Регистр значим, пробелы не обрезаются.

Результат

Функция возвращает пользовательское свойство слоя; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Строки свойств сохраняются буквально; BOOLEAN имеет вид TRUE/FALSE, числа сохраняют исходную запись JSON без DOUBLE, структурные значения представлены JSON-текстом.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: стена. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPLAYERPROPERTY:"
PRINT MAPLAYERPROPERTY(level, 1, "role")

Запускаемый пример MAPLAYERPROPERTY

См. также

Чтение клеток, SETMAPTILE.

MAPTILEPROPERTY

Функция MAPTILEPROPERTY возвращает свойство фактического тайла в клетке.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPTILEPROPERTY(<карта>, <номер слоя>, <столбец>, <строка>, <имя свойства>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <столбец>. Передайте LONG с номером столбца клетки, начиная с 1.
  • <строка>. Передайте LONG с номером строки клетки, начиная с 1.
  • <имя свойства>. Передайте STRING с точным именем свойства. Регистр значим, пробелы не обрезаются.

Результат

Функция возвращает свойство фактического тайла в клетке; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Пустая клетка, координаты за границами и объектный слой возвращают пустую строку. После SETMAPTILE функция читает свойство нового тайла; очистка клетки даёт пустую строку. Строки свойств сохраняются буквально; BOOLEAN имеет вид TRUE/FALSE, числа сохраняют исходную запись JSON без DOUBLE, структурные значения представлены JSON-текстом.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: TRUE. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPTILEPROPERTY:"
PRINT MAPTILEPROPERTY(level, 1, 1, 1, "solid")

Запускаемый пример MAPTILEPROPERTY

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTPROPERTY

Вызов MAPOBJECTPROPERTY возвращает пользовательское свойство объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTPROPERTY(<карта>, <номер слоя>, <номер объекта>, <имя свойства>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.
  • <имя свойства>. Передайте STRING с точным именем свойства. Регистр значим, пробелы не обрезаются.

Результат

Функция возвращает пользовательское свойство объекта; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Строки свойств сохраняются буквально; BOOLEAN имеет вид TRUE/FALSE, числа сохраняют исходную запись JSON без DOUBLE, структурные значения представлены JSON-текстом.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: переход. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTPROPERTY:"
PRINT MAPOBJECTPROPERTY(level, 3, 1, "role")

Запускаемый пример MAPOBJECTPROPERTY

См. также

Чтение клеток, SETMAPTILE.

MAPLAYERNAME

MAPLAYERNAME возвращает имя слоя.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPLAYERNAME(<карта>, <номер слоя>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.

Результат

Функция возвращает имя слоя; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: Земля. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPLAYERNAME:"
PRINT MAPLAYERNAME(level, 1)

Запускаемый пример MAPLAYERNAME

См. также

Чтение клеток, SETMAPTILE.

MAPLAYERTYPE

Функция MAPLAYERTYPE возвращает вид слоя: TILE или OBJECT.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPLAYERTYPE(<карта>, <номер слоя>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.

Результат

Функция возвращает вид слоя: TILE или OBJECT; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: OBJECT. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPLAYERTYPE:"
PRINT MAPLAYERTYPE(level, 3)

Запускаемый пример MAPLAYERTYPE

См. также

Чтение клеток, SETMAPTILE.

MAPLAYERVISIBLE

Вызов MAPLAYERVISIBLE возвращает флаг видимости слоя.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPLAYERVISIBLE(<карта>, <номер слоя>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.

Результат

Функция возвращает флаг видимости слоя; тип результата — BOOLEAN.

Правила и ограничения

Для пустой карты, отсутствующего слоя или объекта возвращается FALSE.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: FALSE. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPLAYERVISIBLE:"
PRINT MAPLAYERVISIBLE(level, 2)

Запускаемый пример MAPLAYERVISIBLE

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTCOUNT

MAPOBJECTCOUNT возвращает число объектов слоя.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTCOUNT(<карта>, <номер слоя>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.

Результат

Функция возвращает число объектов выбранного слоя; тип результата — INTEGER.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Для тайлового слоя число объектов равно 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 2. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTCOUNT:"
PRINT MAPOBJECTCOUNT(level, 3)

Запускаемый пример MAPOBJECTCOUNT

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTNAME

Функция MAPOBJECTNAME возвращает имя объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTNAME(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает имя объекта; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: Выход. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTNAME:"
PRINT MAPOBJECTNAME(level, 3, 1)

Запускаемый пример MAPOBJECTNAME

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTCLASS

Вызов MAPOBJECTCLASS возвращает класс объекта из class или type.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTCLASS(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает класс объекта из class или type; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: portal. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTCLASS:"
PRINT MAPOBJECTCLASS(level, 3, 1)

Запускаемый пример MAPOBJECTCLASS

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTKIND

Функция MAPOBJECTKIND возвращает вид объекта: POINT или RECT.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTKIND(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает вид объекта: POINT или RECT; тип результата — STRING.

Правила и ограничения

Для пустой карты, отсутствующего слоя, объекта или свойства возвращается пустая строка. Строковый результат измеряется в единицах UTF-16 обычными строковыми функциями; текст не обрезается. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: POINT. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTKIND:"
PRINT MAPOBJECTKIND(level, 3, 2)

Запускаемый пример MAPOBJECTKIND

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTVISIBLE

MAPOBJECTVISIBLE возвращает флаг видимости объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTVISIBLE(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает флаг видимости объекта; тип результата — BOOLEAN.

Правила и ограничения

Для пустой карты, отсутствующего слоя или объекта возвращается FALSE. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: FALSE. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTVISIBLE:"
PRINT MAPOBJECTVISIBLE(level, 3, 2)

Запускаемый пример MAPOBJECTVISIBLE

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTX

Вызов MAPOBJECTX возвращает координату X объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTX(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает координату X объекта; тип результата — DOUBLE.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 12.5. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTX:"
PRINT MAPOBJECTX(level, 3, 1)

Запускаемый пример MAPOBJECTX

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTY

MAPOBJECTY возвращает координату Y объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTY(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает координату Y объекта; тип результата — DOUBLE.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 24. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTY:"
PRINT MAPOBJECTY(level, 3, 1)

Запускаемый пример MAPOBJECTY

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTWIDTH

Функция MAPOBJECTWIDTH возвращает ширину объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTWIDTH(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает ширину объекта; тип результата — DOUBLE.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 8. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTWIDTH:"
PRINT MAPOBJECTWIDTH(level, 3, 1)

Запускаемый пример MAPOBJECTWIDTH

См. также

Чтение клеток, SETMAPTILE.

MAPOBJECTHEIGHT

Вызов MAPOBJECTHEIGHT возвращает высоту объекта.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPOBJECTHEIGHT(<карта>, <номер слоя>, <номер объекта>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <номер слоя>. Передайте LONG с номером нужного слоя, начиная с 1.
  • <номер объекта>. Передайте LONG с номером объекта внутри выбранного слоя, начиная с 1.

Результат

Функция возвращает высоту объекта; тип результата — DOUBLE.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Координаты и размеры объекта заданы в локальных пикселях карты, без добавления положения карты или смещения камеры. Ширина и высота точки равны 0.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 16. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPOBJECTHEIGHT:"
PRINT MAPOBJECTHEIGHT(level, 3, 1)

Запускаемый пример MAPOBJECTHEIGHT

См. также

Чтение клеток, SETMAPTILE.

MAPCOLUMN

Функция MAPCOLUMN переводит мировую координату X в номер столбца карты.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPCOLUMN(<карта>, <мировой X начала карты>, <мировой X точки>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <мировой X начала карты>. Передайте DOUBLE с мировым X левого края карты в пикселях.
  • <мировой X точки>. Передайте DOUBLE с мировым X искомой точки в пикселях.

Результат

Функция переводит мировую координату X в номер столбца карты; тип результата — INTEGER.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Левый и верхний края входят в карту; правый и нижний края не входят. Точка вне карты возвращает 0. Смещения слоёв и камера в расчёт не входят.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 2. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPCOLUMN:"
PRINT MAPCOLUMN(level, 100, 116)

Запускаемый пример MAPCOLUMN

См. также

Чтение клеток, SETMAPTILE.

MAPROW

MAPROW переводит мировую координату Y в номер строки карты.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPROW(<карта>, <мировой Y начала карты>, <мировой Y точки>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <мировой Y начала карты>. Передайте DOUBLE с мировым Y верхнего края карты в пикселях.
  • <мировой Y точки>. Передайте DOUBLE с мировым Y искомой точки в пикселях.

Результат

Функция переводит мировую координату Y в номер строки карты; тип результата — INTEGER.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Левый и верхний края входят в карту; правый и нижний края не входят. Точка вне карты возвращает 0. Смещения слоёв и камера в расчёт не входят.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 1. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPROW:"
PRINT MAPROW(level, 200, 215.5)

Запускаемый пример MAPROW

См. также

Чтение клеток, SETMAPTILE.

MAPWORLDX

Вызов MAPWORLDX возвращает мировую координату левой границы столбца.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPWORLDX(<карта>, <мировой X начала карты>, <столбец>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <мировой X начала карты>. Передайте DOUBLE с мировым X левого края карты в пикселях.
  • <столбец>. Передайте LONG с номером столбца клетки, начиная с 1.

Результат

Функция возвращает мировую координату левой границы столбца; тип результата — DOUBLE.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Номер за границами карты возвращает 0; заполненность клетки не проверяется. Результат зависит только от начала карты, размера клетки и номера.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 116. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPWORLDX:"
PRINT MAPWORLDX(level, 100, 2)

Запускаемый пример MAPWORLDX

См. также

Чтение клеток, SETMAPTILE.

MAPWORLDY

Функция MAPWORLDY возвращает мировую координату верхней границы строки.

Функция работает со значением карты и не требует операторов SCREEN или CANVAS. Карту обычно получают функцией LOADTILEMAP; результат чтения доступен сразу, без оператора PRESENT.

Синтаксис

MAPWORLDY(<карта>, <мировой Y начала карты>, <строка>)

Аргументы

  • <карта>. Передайте значение типа TILEMAP, из которого нужно прочитать данные. Пустое значение допустимо.
  • <мировой Y начала карты>. Передайте DOUBLE с мировым Y верхнего края карты в пикселях.
  • <строка>. Передайте LONG с номером строки клетки, начиная с 1.

Результат

Функция возвращает мировую координату верхней границы строки; тип результата — DOUBLE.

Правила и ограничения

Для пустой карты или отсутствующего элемента возвращается 0. Номер за границами карты возвращает 0; заполненность клетки не проверяется. Результат зависит только от начала карты, размера клетки и номера.

Диагностика

Неверное число аргументов или несовместимый тип отклоняется при семантической проверке до исполнения. Отсутствующий элемент не является ошибкой. Отказ LOADTILEMAP при чтении файла карты в текущей IDE сообщает MB3005.

Пример

' Ожидаемый результат: 216. Пример запускается в IDE.
DIM level AS TILEMAP
' Загружаем карту с клетками, свойствами и двумя объектами.
level = LOADTILEMAP("../loadtilemap/access_map.tmj")
' Читаем одно значение без графического холста.
PRINT "Результат MAPWORLDY:"
PRINT MAPWORLDY(level, 200, 2)

Запускаемый пример MAPWORLDY

См. также

Чтение клеток, SETMAPTILE.

Аргументы рисования и изменения клетки

LOADTILEMAP принимает путь STRING и возвращает TILEMAP. Все файлы карты, тайлсетов и изображений должны существовать; загрузчик их не создаёт. Внешние ссылки разрешаются относительно содержащего их файла.

DRAWTILEMAP принимает карту и две мировые координаты LONG; DRAWTILELAYER дополнительно принимает номер слоя LONG, начиная с 1. Неверный слой сообщает MB3007, объектный слой — MB3005. После рисования текущая графическая позиция становится переданной точкой начала карты. Рабочий кадр виден после оператора PRESENT.

SETMAPTILE принимает карту и номера слоя, столбца, строки, тайлсета, тайла типа LONG; необязательные флаги имеют тип LONG и по умолчанию равны 0. Координаты клетки начинаются с 1. Оператор меняет данные без графического окна; для показа изменений нарисуйте карту снова.

Запускаемые примеры

Эти файлы можно открыть в Electron IDE и запустить как короткие проверки поведения типа TILEMAP и операторов DRAWTILEMAP и SETMAPTILE.

Диагностика

  • MB3007: путь path пустой.
  • MB3007: координаты x или y выходят за поддерживаемый диапазон графических координат.
  • MB3007: аргумент layerIndex не указывает существующий слой карты.
  • MB3007: оператор SETMAPTILE получил column или row за пределами тайлового слоя.
  • MB3007: оператор SETMAPTILE получил несуществующий tilesetIndex, несуществующий tileIndex или маску flags вне диапазона 0..7.
  • MB3005: файл карты, тайлсет или изображение тайлсета не удалось загрузить.
  • MB3005: оператор DRAWTILEMAP или DRAWTILELAYER получил пустое значение TILEMAP.
  • MB3005: оператор DRAWTILELAYER получил номер объектного слоя.
  • MB3005: оператор SETMAPTILE получил пустое значение TILEMAP или номер объектного слоя.
  • MB3010: оператор DRAWTILEMAP или DRAWTILELAYER вызван без активного CANVAS.

Пределы загрузки и сообщения об ошибках

Функция LOADTILEMAP в IDE принимает JSON-файлы карты и внешних тайлсетов размером не больше 64 МиБ каждый. Суммарное число клеток тайловых слоёв одной карты ограничено 16 777 216. Превышение предела вызывает MB3005 до выделения соответствующего массива. Для изображений атласов действуют ограничения загрузки изображений.

Значение err.Message внутри CATCH содержит английское объяснение известного отказа, в том числе имя некорректного поля: например, Field opacity of layer must be between 0 and 1. Русский текст диагностики IDE сохраняется. Неудачная загрузка не заменяет прежнее значение карты. Длительная загрузка проверяет запрос остановки между ресурсами, слоями и блоками клеток.

См. также

Проверка свойств без графического окна

Эти короткие примеры загружают существующие ресурсы репозитория и выводят свойства тайлсета или карты в текстовую панель IDE. Оператор CANVAS не требуется. Для запуска нужен загрузчик ресурсов IDE; консольный CLI не загружает TILESET и TILEMAP.

Короткие проверки функций

Короткие примеры выводят ожидаемый результат в текстовую панель IDE. Примеры загрузки используют существующие ресурсы репозитория и реальные относительные пути; отдельный графический холст для чтения свойств не требуется.

Нулевой символ в пути ресурса

Функции LOADIMAGE, LOADSPRITE, LOADTILESET и LOADTILEMAP требуют строковый путь без нулевого символа. Такой символ отклоняется до раскрытия переменных окружения: загрузчик не использует часть пути перед ним. Неверный путь даёт MB3005, которую можно перехватить оператором TRY/CATCH; программа продолжает работу после обработки ошибки.

Короткий запускаемый пример: отказ загрузки изображения по пути с нулевым символом.

DIM picture AS IMAGE
TRY
    picture = LOADIMAGE("рисунок.png" + CHR(0) + "другой.png")
CATCH err
    PRINT "Отказ загрузки: "; err.Code
END TRY