Наследование XML файлов SpinTires

Наследование XML файлов SpinTires
XML файлы Spintires ничем не отличаются от обычных XML файлов и могут быть прочитаны любым сторонним программным обеспечением. Но при этом SpinTires использует особые правила чтения данных из XML файлов.

Шаблоны


SpinTires XML шаблоны используются для того, чтобы избежать копирования. Например, колёса грузовика в основном идентичны, однако каждое описывается собственной XML-ветвью. Чтобы предотвратить копирование атрибутов в каждой ветви, шаблон колеса создается в специальном файле, который называется "_templates":

<_templates>
<Wheel>
<RearWheel
ConnectedToHandbrake="true"
DefaultWheelType="kraz_rear"
HardpointOffsetY="-0.244"
SuspensionMin="-0.4"
SuspensionStrength="0.02"
Torque="default"
/>
</Wheel>
</_templates>
Существуют глобальные шаблоны с уже готовыми шаблонами. Они могут быть включены при помощи добавления, например, атрибута ="trucks". Все эти файлы находятся в папке "\Media\_templates".
При этом каждое колесо использует этот шаблон (атрибут под названием "_template"):

<Wheel _template="RearWheel" HardpointX="-0.49" />
<Wheel _template="RearWheel" HardpointX="-0.49" RightSide="true" />
<Wheel _template="RearWheel" HardpointX="-1.93" />
<Wheel _template="RearWheel" HardpointX="-1.93" RightSide="true" />
XML-ветвь может использовать только те шаблоны, которые описаны как дочерний узел ветви с тем же именем. Помните, что колёса используют шаблон "RearWheel", который является дочерним узлом ветви "Wheel" в секции "_templates".
Таким образом, получается практически тоже самое, что и копирование всех атрибутов в каждую индивидуальную XML-ветвь. Ветвь, использующая шаблон может переопределить любой атрибут конкретного шаблона. Иерархия ветвей, так же как и иерархия атрибутов, копируется системой шаблонов.

Наследование


SpinTires XML файл может наследовать другой файл:

<_parent File="kamaz6520" />

Это примерно тоже самое, что и глобальный шаблон для всего файла. Получается, что все атрибуты и ветви загружаются из файла "kamaz6520.xml", после чего атрибуты и ветви из текущего файла (если они там есть) объединяются вверху (переопределяются).

Это, например, облегчает поддержку разных грузовиков, которые немного отличаются друг от друга. Наследование, также, влияет на поведение модели непосредственно в игре:

  • Все игровые достижения Steam работают со всем наследованными грузовиками. То есть, если грузовик B имеет строку

    <_parent File="A" />

    То игрок может получить все те же самые достижения на грузовике B, что и на грузовике A.
  • Требования для аддонов грузовиков SpinTires и исключаемые аддоны работают для всех наследуемых аддонов. То есть, строка

    ExcludeAddons="A"

    также исключает B, если B имеет строку

    <_parent File="A" />

    А требование

    <RequiredAddon Types="A" />

    Также справедливо для B, если B имеет все ту же строку

    <_parent File="A" />
  • Наследование распространяется на все свойства модели.

_inheritRemove


Если ветвь наследуемого XML файла содержит строку

_inheritRemove="true"

То в таком случае её свойства и атрибуты не будут скопированы с родительского файла. Например, если ваш мод на грузовик имеет 4 колеса вместо 6, вы добавляете 2 этих лишних колеса со строкой

_inheritRemove="true"

_noinherit


Если ветвь наследуемого XML файла содержит строку

_noinherit="true"

То тогда её атрибуты и дочерние узлы не будут скопированы с родительского файла. Например, если ваш мод на грузовик имеет абсолютно другие колёса, вы используете "_noinherit", чтобы не дать родительскому файлу переопределить какие-либо параметры мода.

 Просмотров: 4.8k