Работа с Wizard'ами (Мастеры | Визарды)

Содержание:
Приступим к самому интересному, а также по совместительству и главному. Собственно, написанию своего визарда.
И, вы конечно можете использовать любой удобный вам текстовый редактор, лично я буду использовать для их написания Visual Studio Code, его удобно впринципе использовать для моддинга в СК2из-за наличия двух плагинов по работе с файлами СК2, но об этом надо говорить в другой статье.
Сперва откройте вашу папку Wizards в VSCode, после чего в ней создайте новый файл в формате *.blizwiz. Название файла может быть любым.
Затем вставьте в ваш файл визарда этот код:
<?xml version="1.0" encoding="UTF-8"?>
<wizard>
</wizard>
Редактор кода не определяет файл что делать?
если ваш VSCode не распознает этот файл как XML, то просто закройте его и откройте занового

Пример

Для примера вот такой код визарда выведёт такое окно в редакторе
<?xml version="1.0" encoding="UTF-8"?>
<wizard>
    <name>My Wizard</name>
    <objecttypes create="Unit"/>
    <category>Категория</category>

    <instructions>
        Инструкция о том как пользоваться этим визардом.
    </instructions>

    <input id="inputid" type="CString">
        <name>Поле для строковых значений</name>
        <tooltip>Описание поля, выводимое при наведении на него мышкой</tooltip>
    </input>
    <input id="inputid" type="CUnitLink">
        <name>Поле для выбора ссылок на юнитов</name>
    </input>
    <input id="inputid" type="real32">
        <name>Поле для ввода чисел с запятой</name>
    </input>
    <input id="inputid" type="int32">
        <name>Поле с числом в колонке 2</name>
        <layout column="2"/>
    </input>
</wizard>

Создание данных с помощью визарда

Для этого используется такой код
<entry catalog="Sound" type="CSound">
	<id>^UnitID^</id>
	<field id="Race">
    	<value>^InputID^</value>
    </field>
	. . .
</entry>
catalog - определяете что именно хотите создать (юнита, способность, оружие, эффект, и прочее)
type - указываете тип объекта, например для юнита это будет CUnit, для актора типа Unit указываете CActorUnit и так далее
^...^ - Указываете ID того поля визарда, значение которого хотите подставлять в поле этого объекта
<id></id> - ID новосоздаваемого объекта данных
Смотреть корректные названия типов можно в самом редакторе в режиме с необработанными данными Ctrl - D в этом окне (свойства объекта)

О структуре визарда

Каждый визард как минимум имеет 2 уровня взаимодействия.

1 уровень

Уровень вводных данных. Этот уровень запрашивает от пользователя входные параметры с помощью конструкций:
<input id="input_id" type="input_type">
	<name>Имя поля для ввода</name>
	<!-- . . . -->
</input>

2 уровень

Уровень генерации данных. На этом уровне происходит генерация необходимых данных, согласно полученных значениям с первого уровня. происходит это с помощью конструкций:
<entry catalog="Unit" type="CUnit">
	<id>^ID поля input отвечающее за ID создаваемого объекта^</id>
	. . .
</entry>
Довольно часто, но не всегда, применяется ещё 3 уровень, который выполняется между 1 и 2 уровнем.

3 Уровень

Уровень проверки условий. Этот уровень отвечает за корректное соблюдение условий, задаваемых в таких конструкциях:
	<!-- condtitions -->
    <condition id="selectGround" input="parent" value="CommanderGround"/>
    <condition id="selectAir" input="parent" value="CommanderAir"/>
    <condition id="selectStructure" input="parent" value="CommanderStructure"/>

    <condition id="NotStructure" logic="or">
        <condition id="selectGround"/>
        <condition id="selectAir"/>
    </condition>
С помощью таких условий можно, легко раветвлять логику генерации визарда, например можно создать одним визардом создание оружия лучевого, Мгновенного урона, Снарядные.

На этом сайте сможете найти большое количество примеров готовых визардов, использовать вряд ли сможете если не знаете корейский, но как примеры реализаций очень хороши

Содержание
Остались вопросы? Задайте их сообществу! Задать вопрос
`
ОЖИДАНИЕ РЕКЛАМЫ...