Теперь, когда доска создана, вы научитесь размещать на ней пешки, проверять, существует ли пешка с данной координатой плитки, и удалять пешку с доски.
Начните со следующего сценария: имея tile_coordinate, определите, есть ли там пешка, и если да — получите её. Иными словами:
на доске содержится массив пешек
creative_prop;необходимо произвести итерацию по существующим пешкам и получить местоположение каждой пешки в виде координаты плитки;
если на заданной координате плитки есть пешка, получить её;
если её нет, функция завершается с ошибкой.
Определение равенства координат плиток
Для этого нужно иметь возможность проверить, равны ли два значения tile_coordinate. Это необходимо, потому что наш пользовательский тип данных координат плитки не является подтипом встроенного типа comparable («сопоставимый») в Verse. Поэтому вам нужно вручную определить, что означает равенство координат двух плиток. Сначала создайте функцию areTileCoordinatesEqual в модуле DataTypes, чтобы определить:
using { /Verse.org/Simulation }
DataTypes<public> := module:
...
UtilityFunctions<public> := module:
...
Эта функция выполняется успешно тогда и только тогда, когда все компоненты двух входных координат плитки равны как целые числа.
Получение координат плитки объекта
Для работы с пешками необходимо получить местоположение пешки в виде координат плитки. Для этого также напишите вспомогательную функцию для получения местоположения объекта окружения творческого режима в виде координат плитки:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Эта функция выполняется успешно тогда и только тогда, когда местоположение входного объекта окружения творческого режима в мире можно преобразовать в координату плитки на игровой доске. Она также использует функцию ToTileCoordinate, определённую ранее для преобразования мирового местоположения в местоположение в пространстве доски.
Получение пешки из координаты плитки
Напишите функцию GetPawn:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Эта функция выполняет следующие шаги:
перебирает все имеющиеся пешки на доске;
получает местоположение пешки в качестве координаты плитки;
если местоположение пешки совпадает с местоположением во входных данных, сохраняет её как найденную пешку;
это гарантирует, что в данном месте будет найдена только одна пешка;
возвращает эту пешку.
Эта функция выполняется успешно тогда и только тогда, когда во входной координате плитки находится ровно одна пешка, и эта пешка успешно получена из массива пешек Pawns.
Установка пешки в координате плитки
Напишите функцию для размещения одной пешки на доске. Для упрощения используйте объекты creative_prop в качестве пешек, а SM_Box_asset — в качестве сетки пешки. Вы в любое время сможете изменить их позже на пользовательские объекты по своему выбору. Функция заключается в следующем:
на доске содержится массив пешек
creative_prop;имея значение
tile_coordinate, необходимо проверить, есть ли здесь пешка;если пешки не существует, разместить её там.
Напишите функцию SetPawn:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Эта функция выполняет следующие шаги:
проверяет, находится ли входная координата плитки на доске;
ищет все пешки, находящиеся на данный момент на входной координате плитки;
убеждается, что пешек там нет;
пытается создать объект окружения в указанном местоположении.
Эта функция выполняется успешно тогда и только тогда, когда:
на входной координате плитки в данный момент нет пешек;
входная координата плитки находится в пределах доски и может быть преобразована в местоположение мирового пространства.
Удаление пешки
Ещё одна необходимая функция — возможность удалять пешку с доски. Эта функция принимает объект окружения творческого режима, который нужно удалить, а затем удаляет его с доски и из массива учёта пешек Pawns.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):
Описание
Подведём итог. На этой странице вы выполнили следующие шаги:
разместить пешку на доске;
взять пешку с доски;
удалить пешку с доски.
Файлы
using { /Verse.org/Simulation }
DataTypes<public> := module:
tile_coordinate<public> := class<concrete>:
@editable
Left<public>:int = 0
@editable
Forward<public>:int = 0
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org/Assets }
using { DataTypes }
using { UtilityFunctions }
board<public> := class(creative_device):