Skip to content

Data structure and serialization

methusalah edited this page Apr 21, 2015 · 4 revisions

Definition structure and serialization

Most definitions are saved in XML files in a common structure : `

<[definition type] id="[definition id]">

    <[field1] value="..."/>

    <[field2].../>

    ...

</[definition type]>

`

Here is the list of actual definition type :

  • Unit
  • Weapon
  • Turret
  • Projectile
  • Mover
  • Effect
  • Actor
  • MapStyle
  • CliffShape
  • NaturalFace
  • ManmadeFace
  • Trinket

Any definition can be written in any XML file, in any order, and during runtime. The XML files are checked every seconds, and the resulting library updated. For exemple, if the definition of a unit is changed, the existing units of this type won't be modified, but all unit created from this time will be at the latest version.

Builder Library

For each definition , a builder is created. There is one builder class for each definition type, and on builder instance for each definition id. For exemple, if there is a unit definition for a tank and another for a buggy, there will be two UnitBuilder instances. Each builder is able to create an object from only one definition.

Builders are stored in a the BuilderLibrary, a unique object stored by the model, and updated when needed. When you need to create something, you need a builder, and when you need a builder, you ask to the lib.