Метки, переходы, опкоды
Jump и Gosub
Переходы совершаются с помощью событий Jump
и Gosub
. Мы сможем сделать переход на автоматическую метку и выполнить код, указанный в событии. Метод должен возвращать тип void и принимать 1 параметр из семейства типов BaseLabel:
Методы JUMP_1 и GOSUB_1 описывают поведение кода при переходе на метку. Саму метку описывает параметр label
. Тип данных метки варьируется в зависимости от типа перехода, а сам параметр в методе содержит описание метки, которую мы можем использовать при переходах или условиях. Мы получим следующий код на выходе:
Для удобства лучше переименовать методы. При повторной подписке на событие, прыжок будет осуществлён ещё раз на указанную метку, не создавая другую.
Названия методов не надо писать вручную! После символов += нажимаем волшебную клавишу TAB и Visual Studio сделает это за нас!
Кроме этого есть методы jump
и gosub
, которые делают переходы подобно событию:
Метод jump также может принимать в параметры типы семейства LabelJump
и переменные типа Memory
(если установить значение через свойство label).
Переход Gosub автоматически генерирует return в конце кода!
Запуск потоков
Также мы можем запускать потоки, как это делается в Sanny Builder. Для этого есть команды create_thread()
и create_thread_wb()
:
Это приводит к такому результату:
Обратите внимание, что сами потоки мы указываем в треугольных скобках, как это делалось в главе Установка и настройка. Код потоков будет генерироваться только после использования команд create_thread и create_thread_wb и будет делать это в том порядке, в котором они были вызваны.
Опкоды
Сейчас я расскажу про опкоды. Их нету в генераторе, как таковых. На их месте, как уже многие догадались, используются методы (команды). Некоторые из них Вы уже узнали, если пользовались Sanny Builder. Некоторые были добавлены специально для реализации определённых синтаксических конструкций. Главное преимущество генератора состоит в том, что в C# строгая типизация. Это позволяет лучше контролировать данные, которые требуют команды, и избегать ошибок связанных с ними. Мы можем передавать значения как переменной, так и литералом:
Некоторые параметры имеют особую маркировку. Например:
Тип Out<T>
говорит о том, что параметр требует переменную, а не литерал. Если записать вот так:
то генератор выдаст ошибку, что контекст параметра не определён. Если записать вот так:
то компиляция будет успешной, так как переменная была декларирована ранее. Главная особенность этого типа в том, что он проверяет наличие переменной с локальным или глобальным контекстом. Тип внутри символов <
и >
указывает подходящий тип данных для конкретного случая.
Названия параметров также имеют другие маркировки. Обычно к названию параметра прибавляется определённый суффикс:
Маркировка | Описание |
_bool | Значение |
_byte | Значение от |
Про миссии и внешние скрипты есть отдельные главы, где они рассмотрены более детально.
Last updated