"visuals" part is a list, a list of visuality types of a unit eg: DEFAULT, CONSTRUCTION, JOIN, JOINX, OCCUPIED
General
here a sample:
Code: Select all
"uiDefinition":{
"imageFacingDirection":"RIGHT",
"trnDecorMoveSpriteID":"SPRITE_DECOR_MOVE_TANK_ANIM",
"visuals":[
{
"imgName":"64_unit_celt.png",
"type":"DEFAULT",
"shiftIndicatorsDown":32,
"typeExtra":0.0,
"imgColumns":1,
"imageDefParts":[
{
"cropToRect":{"top":0, "left":0,"bottom":32,"right":32},
"layer":"OVERLAPS",
"shiftCol":0,
"shiftRow":-1,
"clickable":false
},
{
"cropToRect":{"top":32,"left":0,"bottom":64,"right":32},
"layer":"UNITS",
"shiftCol":0,
"shiftRow":0,
"clickable":true
}
]
}
]
...
}
"trnDecorMoveSpriteID": you can reference a sprite in graphics.json to show when the unit moves (eg. dust cloud under the wheels), it is shown during movement and fades out (in the defined fadeout amount) sec after movement.
"trnDecorAttackSpriteID": you can reference a sprite in graphics.json to show when the unit attacks (ranged or melee) (eg. sword swing), it is shown during attack and fades out in (on texture defined) amount of sec after attack.
"trnDecorMendSpriteID": you can reference a sprite in graphics.json to show when the unit Mends (ranged or melee) (eg. sword swing), it is shown during mending and fades out in (on texture defined) amount of sec after mend.
"trnDecorSpellcastSpriteID": you can reference a sprite in graphics.json to show when the unit attacks (ranged or melee) (eg. sword swing), it is shown during spellcast and fades out in (on texture defined) amount of sec after spellcast.
"imgName": here u give the asset image name under the assets/gfx folder (name must only contain a..z, 0..9 and _ charcters, so no capital letters and no space characters either)
"type":"DEFAULT", this is the visuality type, DEFAULT is the normal image for unit it can be: DEFAULT, CONSTRUCTION, JOIN, JOINX, OCCUPIED
"shiftIndicatorsDown": a value how much pixe the indicators needed to be shifted down from the top left position.
"imgColumns": how many columns of the image or animation: 1: single, 2: can be 2 tile animation or an occupiable building, more: animation.
"animFrameDuration": sets the duration of a frame in millisecs, if null than default is 200ms
"animFrameDurations": eg: [6000,200,200,200,200,200,200,200,200,200], sets the frame duration for all frames in millisecs(if set, animFrameDuration is omitted)
int[] "animFramePreDelayRandom": !only work with animFrameDurations!: 2 values in array, 0th: randomFrom 1th:randomTo, rnd between values, and delay that amount of ms before starting animation.
"typeExtra": some extra input for some options.
"imageDefParts": here you can define which part of the image you define to which layer
"imageDefShort" this is a simpler way to set imageDefParts
Image positioning
Use imageDefParts or imageDefShort?
if u have non animating simple unit image i suggest the short version, in any complex case the detailly configurable version.
instead of this
Code: Select all
"imageDefParts":[
{
"cropToRect":{"top": 0,"left":0,"bottom":32,"right":32},
"layer":"UNITS",
"shiftCol":0,
"shiftRow":0,
"clickable":true
}
]
Code: Select all
"imageDefShort":"NORMAL_1x1"
Code: Select all
"imageDefParts":[
{
"cropToRect":{"top":0, "left":0,"bottom":32,"right":32},
"layer":"OVERLAPS",
"shiftCol":0,
"shiftRow":-1,
"clickable":false
},
{
"cropToRect":{"top":32,"left":0,"bottom":64,"right":32},
"layer":"UNITS",
"shiftCol":0,
"shiftRow":0,
"clickable":true
}
]
Code: Select all
"imageDefShort":"OVERLAP_1x2"
- NORMAL_1x1 for a normal 1x1 tile unit
- OVERLAP_1x2 for a tall unit like a trebuchet, this will overlap the tile above its "foot" tile.
- NORMAL_COL2_2x1 OBSOLETE! (dont use doubled image anymore!) this is for a 1x1 building that shows occupacy so image is 2x1 sized
- OVERLAP_COL2_2x2 OBSOLETE! (dont use doubled image anymore!) this is for a 1x2 building that shows occupacy so image is 2x2 sized
Visual definition TYPE-s
"type":"DEFAULT", this is the visuality type, DEFAULT is the normal image for unit
other options:
CONSTRUCTION - this is used when the unit is under construction, set in "typeExtra" the readiness limits (over this limit this image is used)
OCCUPIED - this image is used if the eg. building is occupied (carried some units)
JOIN and JOINX: use these to autotile this unit: eg a wall that transforms as u put an other wall next to it (it joins)