Table of Contents
DATA classes are the most basic type in Foundation that all other types are based on.
For reference all available pure DATA classes can be found in this section of the API.
Creating & Using a Custom DATA Object
Step 1: Defining a DATA Object using a Lua Table
To create a custom DATA object we will need to make use of the mod:registerClass(DataTable)
function providing it with an associated Lua Table.
Here you decide what properties your custom DATA object will contain.
local MY_DATA_OBJECT = { TypeName = "MY_DATA_OBJECT ", Properties = { { Name = "Property1", Type = "string", Default = "SomeString", Flags = { "SAVE_GAME" }}, { Name = "Property2", Type = "list<RESOURCE_QUANTITY_PAIR>", Default = {} }, { Name = "Property3", Type = "integer", Default = 1 } } } mod:registerClass(MY_DATA_OBJECT)
Make sure not to forget the SAVE_GAME
flag if you intend to store runtime values that need to persist accross a reload!
Also remember that you can define properties based on the basic data types (i.e. string, integer, float, etc.) or based on any of the existing DATA or ASSET objects, as well as list
s therof!
Step 2: Using a DATA Object
Note: This also aplies to using vanilla DATA Objects!
During gameplay when you will need to instantiate a DATA object you will have to use the foundation.createData(…)
method as follows.
local myData = foundation.createData( { DataType = "MY_DATA_OBJECT", Property1 = "SomeOtherString", Property3 = 5 } )
In case you omit any properties you don't yet need to explicitly set they will use their default values until otherwise specified. As we have done withProperty2
above.
If you want to alter a property after the DATA object has been instantiated you can of course do so at will like this.
myData.Property1 = "SomeAlteredString"