implemented tilemap rendering

This commit is contained in:
Sara 2023-10-01 15:22:17 +02:00
parent 124d379a3a
commit 4ebe759030
29 changed files with 3377 additions and 8223 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1270
assets/levels/level_1.ldtkl Normal file

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@
"appVersion": "1.4.1", "appVersion": "1.4.1",
"url": "https://ldtk.io" "url": "https://ldtk.io"
}, },
"identifier": "Level_2", "identifier": "level_2",
"iid": "7d714960-3b70-11ee-9613-91c75b274d8d", "iid": "7d714960-3b70-11ee-9613-91c75b274d8d",
"uid": 312, "uid": 312,
"worldX": 2560, "worldX": 2560,
@ -29,7 +29,7 @@
"fieldInstances": [], "fieldInstances": [],
"layerInstances": [ "layerInstances": [
{ {
"__identifier": "Foliage", "__identifier": "foliage",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 48, "__cWid": 48,
"__cHei": 24, "__cHei": 24,
@ -98,7 +98,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Entities", "__identifier": "entities",
"__type": "Entities", "__type": "Entities",
"__cWid": 96, "__cWid": 96,
"__cHei": 48, "__cHei": 48,
@ -122,7 +122,7 @@
"gridTiles": [], "gridTiles": [],
"entityInstances": [ "entityInstances": [
{ {
"__identifier": "Player", "__identifier": "player",
"__grid": [1,39], "__grid": [1,39],
"__pivot": [0.25,1], "__pivot": [0.25,1],
"__tags": [], "__tags": [],
@ -138,7 +138,7 @@
"fieldInstances": [] "fieldInstances": []
}, },
{ {
"__identifier": "LevelTransition", "__identifier": "leveltransition",
"__grid": [95,9], "__grid": [95,9],
"__pivot": [0,0], "__pivot": [0,0],
"__tags": [], "__tags": [],
@ -159,7 +159,7 @@
] ]
}, },
{ {
"__identifier": "Ground", "__identifier": "ground",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 48, "__cWid": 48,
"__cHei": 24, "__cHei": 24,
@ -887,7 +887,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Level", "__identifier": "level",
"__type": "IntGrid", "__type": "IntGrid",
"__cWid": 48, "__cWid": 48,
"__cHei": 24, "__cHei": 24,
@ -939,581 +939,7 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
], ],
"autoLayerTiles": [ "autoLayerTiles": [],
{ "px": [0,0], "src": [32,32], "f": 0, "t": 11, "d": [278,0], "a": 1 },
{ "px": [32,0], "src": [32,32], "f": 0, "t": 11, "d": [278,1], "a": 1 },
{ "px": [64,0], "src": [32,32], "f": 0, "t": 11, "d": [278,2], "a": 1 },
{ "px": [96,0], "src": [32,32], "f": 0, "t": 11, "d": [278,3], "a": 1 },
{ "px": [128,0], "src": [32,32], "f": 0, "t": 11, "d": [278,4], "a": 1 },
{ "px": [160,0], "src": [32,32], "f": 0, "t": 11, "d": [278,5], "a": 1 },
{ "px": [192,0], "src": [32,32], "f": 0, "t": 11, "d": [278,6], "a": 1 },
{ "px": [224,0], "src": [32,32], "f": 0, "t": 11, "d": [278,7], "a": 1 },
{ "px": [256,0], "src": [32,32], "f": 0, "t": 11, "d": [278,8], "a": 1 },
{ "px": [288,0], "src": [32,32], "f": 0, "t": 11, "d": [278,9], "a": 1 },
{ "px": [320,0], "src": [32,32], "f": 0, "t": 11, "d": [278,10], "a": 1 },
{ "px": [352,0], "src": [32,32], "f": 0, "t": 11, "d": [278,11], "a": 1 },
{ "px": [384,0], "src": [32,32], "f": 0, "t": 11, "d": [278,12], "a": 1 },
{ "px": [416,0], "src": [32,32], "f": 0, "t": 11, "d": [278,13], "a": 1 },
{ "px": [448,0], "src": [32,32], "f": 0, "t": 11, "d": [278,14], "a": 1 },
{ "px": [1056,0], "src": [32,32], "f": 0, "t": 11, "d": [278,33], "a": 1 },
{ "px": [1088,0], "src": [32,32], "f": 0, "t": 11, "d": [278,34], "a": 1 },
{ "px": [1120,0], "src": [32,32], "f": 0, "t": 11, "d": [278,35], "a": 1 },
{ "px": [1152,0], "src": [32,32], "f": 0, "t": 11, "d": [278,36], "a": 1 },
{ "px": [1184,0], "src": [32,32], "f": 0, "t": 11, "d": [278,37], "a": 1 },
{ "px": [1216,0], "src": [32,32], "f": 0, "t": 11, "d": [278,38], "a": 1 },
{ "px": [1248,0], "src": [32,32], "f": 0, "t": 11, "d": [278,39], "a": 1 },
{ "px": [1280,0], "src": [32,32], "f": 0, "t": 11, "d": [278,40], "a": 1 },
{ "px": [1312,0], "src": [32,32], "f": 0, "t": 11, "d": [278,41], "a": 1 },
{ "px": [1344,0], "src": [32,32], "f": 0, "t": 11, "d": [278,42], "a": 1 },
{ "px": [1376,0], "src": [32,32], "f": 0, "t": 11, "d": [278,43], "a": 1 },
{ "px": [1408,0], "src": [32,32], "f": 0, "t": 11, "d": [278,44], "a": 1 },
{ "px": [1440,0], "src": [32,32], "f": 0, "t": 11, "d": [278,45], "a": 1 },
{ "px": [1472,0], "src": [32,32], "f": 0, "t": 11, "d": [278,46], "a": 1 },
{ "px": [1504,0], "src": [32,32], "f": 0, "t": 11, "d": [278,47], "a": 1 },
{ "px": [0,32], "src": [32,32], "f": 0, "t": 11, "d": [278,48], "a": 1 },
{ "px": [32,32], "src": [32,32], "f": 0, "t": 11, "d": [278,49], "a": 1 },
{ "px": [64,32], "src": [32,32], "f": 0, "t": 11, "d": [278,50], "a": 1 },
{ "px": [96,32], "src": [32,32], "f": 0, "t": 11, "d": [278,51], "a": 1 },
{ "px": [128,32], "src": [32,32], "f": 0, "t": 11, "d": [278,52], "a": 1 },
{ "px": [160,32], "src": [32,32], "f": 0, "t": 11, "d": [278,53], "a": 1 },
{ "px": [192,32], "src": [32,32], "f": 0, "t": 11, "d": [278,54], "a": 1 },
{ "px": [224,32], "src": [32,32], "f": 0, "t": 11, "d": [278,55], "a": 1 },
{ "px": [256,32], "src": [32,32], "f": 0, "t": 11, "d": [278,56], "a": 1 },
{ "px": [288,32], "src": [32,32], "f": 0, "t": 11, "d": [278,57], "a": 1 },
{ "px": [320,32], "src": [32,32], "f": 0, "t": 11, "d": [278,58], "a": 1 },
{ "px": [352,32], "src": [32,32], "f": 0, "t": 11, "d": [278,59], "a": 1 },
{ "px": [384,32], "src": [32,32], "f": 0, "t": 11, "d": [278,60], "a": 1 },
{ "px": [416,32], "src": [32,32], "f": 0, "t": 11, "d": [278,61], "a": 1 },
{ "px": [448,32], "src": [32,32], "f": 0, "t": 11, "d": [278,62], "a": 1 },
{ "px": [1056,32], "src": [32,32], "f": 0, "t": 11, "d": [278,81], "a": 1 },
{ "px": [1088,32], "src": [32,32], "f": 0, "t": 11, "d": [278,82], "a": 1 },
{ "px": [1120,32], "src": [32,32], "f": 0, "t": 11, "d": [278,83], "a": 1 },
{ "px": [1152,32], "src": [32,32], "f": 0, "t": 11, "d": [278,84], "a": 1 },
{ "px": [1184,32], "src": [32,32], "f": 0, "t": 11, "d": [278,85], "a": 1 },
{ "px": [1216,32], "src": [32,32], "f": 0, "t": 11, "d": [278,86], "a": 1 },
{ "px": [1248,32], "src": [32,32], "f": 0, "t": 11, "d": [278,87], "a": 1 },
{ "px": [1280,32], "src": [32,32], "f": 0, "t": 11, "d": [278,88], "a": 1 },
{ "px": [1312,32], "src": [32,32], "f": 0, "t": 11, "d": [278,89], "a": 1 },
{ "px": [1344,32], "src": [32,32], "f": 0, "t": 11, "d": [278,90], "a": 1 },
{ "px": [1376,32], "src": [32,32], "f": 0, "t": 11, "d": [278,91], "a": 1 },
{ "px": [1408,32], "src": [32,32], "f": 0, "t": 11, "d": [278,92], "a": 1 },
{ "px": [1440,32], "src": [32,32], "f": 0, "t": 11, "d": [278,93], "a": 1 },
{ "px": [1472,32], "src": [32,32], "f": 0, "t": 11, "d": [278,94], "a": 1 },
{ "px": [1504,32], "src": [32,32], "f": 0, "t": 11, "d": [278,95], "a": 1 },
{ "px": [0,64], "src": [32,32], "f": 0, "t": 11, "d": [278,96], "a": 1 },
{ "px": [32,64], "src": [32,32], "f": 0, "t": 11, "d": [278,97], "a": 1 },
{ "px": [64,64], "src": [32,32], "f": 0, "t": 11, "d": [278,98], "a": 1 },
{ "px": [96,64], "src": [32,32], "f": 0, "t": 11, "d": [278,99], "a": 1 },
{ "px": [128,64], "src": [32,32], "f": 0, "t": 11, "d": [278,100], "a": 1 },
{ "px": [160,64], "src": [32,32], "f": 0, "t": 11, "d": [278,101], "a": 1 },
{ "px": [192,64], "src": [32,32], "f": 0, "t": 11, "d": [278,102], "a": 1 },
{ "px": [224,64], "src": [32,32], "f": 0, "t": 11, "d": [278,103], "a": 1 },
{ "px": [256,64], "src": [32,32], "f": 0, "t": 11, "d": [278,104], "a": 1 },
{ "px": [288,64], "src": [32,32], "f": 0, "t": 11, "d": [278,105], "a": 1 },
{ "px": [320,64], "src": [32,32], "f": 0, "t": 11, "d": [278,106], "a": 1 },
{ "px": [352,64], "src": [32,32], "f": 0, "t": 11, "d": [278,107], "a": 1 },
{ "px": [384,64], "src": [32,32], "f": 0, "t": 11, "d": [278,108], "a": 1 },
{ "px": [416,64], "src": [32,32], "f": 0, "t": 11, "d": [278,109], "a": 1 },
{ "px": [448,64], "src": [32,32], "f": 0, "t": 11, "d": [278,110], "a": 1 },
{ "px": [1056,64], "src": [32,32], "f": 0, "t": 11, "d": [278,129], "a": 1 },
{ "px": [1088,64], "src": [32,32], "f": 0, "t": 11, "d": [278,130], "a": 1 },
{ "px": [1120,64], "src": [32,32], "f": 0, "t": 11, "d": [278,131], "a": 1 },
{ "px": [1152,64], "src": [32,32], "f": 0, "t": 11, "d": [278,132], "a": 1 },
{ "px": [1184,64], "src": [32,32], "f": 0, "t": 11, "d": [278,133], "a": 1 },
{ "px": [1216,64], "src": [32,32], "f": 0, "t": 11, "d": [278,134], "a": 1 },
{ "px": [1248,64], "src": [32,32], "f": 0, "t": 11, "d": [278,135], "a": 1 },
{ "px": [1280,64], "src": [32,32], "f": 0, "t": 11, "d": [278,136], "a": 1 },
{ "px": [1312,64], "src": [32,32], "f": 0, "t": 11, "d": [278,137], "a": 1 },
{ "px": [1344,64], "src": [32,32], "f": 0, "t": 11, "d": [278,138], "a": 1 },
{ "px": [1376,64], "src": [32,32], "f": 0, "t": 11, "d": [278,139], "a": 1 },
{ "px": [1408,64], "src": [32,32], "f": 0, "t": 11, "d": [278,140], "a": 1 },
{ "px": [1440,64], "src": [32,32], "f": 0, "t": 11, "d": [278,141], "a": 1 },
{ "px": [1472,64], "src": [32,32], "f": 0, "t": 11, "d": [278,142], "a": 1 },
{ "px": [1504,64], "src": [32,32], "f": 0, "t": 11, "d": [278,143], "a": 1 },
{ "px": [0,96], "src": [32,32], "f": 0, "t": 11, "d": [278,144], "a": 1 },
{ "px": [32,96], "src": [32,32], "f": 0, "t": 11, "d": [278,145], "a": 1 },
{ "px": [64,96], "src": [32,32], "f": 0, "t": 11, "d": [278,146], "a": 1 },
{ "px": [96,96], "src": [32,32], "f": 0, "t": 11, "d": [278,147], "a": 1 },
{ "px": [128,96], "src": [32,32], "f": 0, "t": 11, "d": [278,148], "a": 1 },
{ "px": [160,96], "src": [32,32], "f": 0, "t": 11, "d": [278,149], "a": 1 },
{ "px": [192,96], "src": [32,32], "f": 0, "t": 11, "d": [278,150], "a": 1 },
{ "px": [224,96], "src": [32,32], "f": 0, "t": 11, "d": [278,151], "a": 1 },
{ "px": [256,96], "src": [32,32], "f": 0, "t": 11, "d": [278,152], "a": 1 },
{ "px": [288,96], "src": [32,32], "f": 0, "t": 11, "d": [278,153], "a": 1 },
{ "px": [320,96], "src": [32,32], "f": 0, "t": 11, "d": [278,154], "a": 1 },
{ "px": [352,96], "src": [32,32], "f": 0, "t": 11, "d": [278,155], "a": 1 },
{ "px": [384,96], "src": [32,32], "f": 0, "t": 11, "d": [278,156], "a": 1 },
{ "px": [416,96], "src": [32,32], "f": 0, "t": 11, "d": [278,157], "a": 1 },
{ "px": [448,96], "src": [32,32], "f": 0, "t": 11, "d": [278,158], "a": 1 },
{ "px": [480,96], "src": [32,32], "f": 0, "t": 11, "d": [278,159], "a": 1 },
{ "px": [1088,96], "src": [32,32], "f": 0, "t": 11, "d": [278,178], "a": 1 },
{ "px": [1120,96], "src": [32,32], "f": 0, "t": 11, "d": [278,179], "a": 1 },
{ "px": [1152,96], "src": [32,32], "f": 0, "t": 11, "d": [278,180], "a": 1 },
{ "px": [1184,96], "src": [32,32], "f": 0, "t": 11, "d": [278,181], "a": 1 },
{ "px": [1216,96], "src": [32,32], "f": 0, "t": 11, "d": [278,182], "a": 1 },
{ "px": [1248,96], "src": [32,32], "f": 0, "t": 11, "d": [278,183], "a": 1 },
{ "px": [1280,96], "src": [32,32], "f": 0, "t": 11, "d": [278,184], "a": 1 },
{ "px": [1312,96], "src": [32,32], "f": 0, "t": 11, "d": [278,185], "a": 1 },
{ "px": [1344,96], "src": [32,32], "f": 0, "t": 11, "d": [278,186], "a": 1 },
{ "px": [1376,96], "src": [32,32], "f": 0, "t": 11, "d": [278,187], "a": 1 },
{ "px": [1408,96], "src": [32,32], "f": 0, "t": 11, "d": [278,188], "a": 1 },
{ "px": [1440,96], "src": [32,32], "f": 0, "t": 11, "d": [278,189], "a": 1 },
{ "px": [1472,96], "src": [32,32], "f": 0, "t": 11, "d": [278,190], "a": 1 },
{ "px": [1504,96], "src": [32,32], "f": 0, "t": 11, "d": [278,191], "a": 1 },
{ "px": [0,128], "src": [32,32], "f": 0, "t": 11, "d": [278,192], "a": 1 },
{ "px": [32,128], "src": [32,32], "f": 0, "t": 11, "d": [278,193], "a": 1 },
{ "px": [64,128], "src": [32,32], "f": 0, "t": 11, "d": [278,194], "a": 1 },
{ "px": [96,128], "src": [32,32], "f": 0, "t": 11, "d": [278,195], "a": 1 },
{ "px": [128,128], "src": [32,32], "f": 0, "t": 11, "d": [278,196], "a": 1 },
{ "px": [160,128], "src": [32,32], "f": 0, "t": 11, "d": [278,197], "a": 1 },
{ "px": [192,128], "src": [32,32], "f": 0, "t": 11, "d": [278,198], "a": 1 },
{ "px": [224,128], "src": [32,32], "f": 0, "t": 11, "d": [278,199], "a": 1 },
{ "px": [256,128], "src": [32,32], "f": 0, "t": 11, "d": [278,200], "a": 1 },
{ "px": [288,128], "src": [32,32], "f": 0, "t": 11, "d": [278,201], "a": 1 },
{ "px": [320,128], "src": [32,32], "f": 0, "t": 11, "d": [278,202], "a": 1 },
{ "px": [352,128], "src": [32,32], "f": 0, "t": 11, "d": [278,203], "a": 1 },
{ "px": [384,128], "src": [32,32], "f": 0, "t": 11, "d": [278,204], "a": 1 },
{ "px": [416,128], "src": [32,32], "f": 0, "t": 11, "d": [278,205], "a": 1 },
{ "px": [448,128], "src": [32,32], "f": 0, "t": 11, "d": [278,206], "a": 1 },
{ "px": [480,128], "src": [32,32], "f": 0, "t": 11, "d": [278,207], "a": 1 },
{ "px": [1120,128], "src": [32,32], "f": 0, "t": 11, "d": [278,227], "a": 1 },
{ "px": [1152,128], "src": [32,32], "f": 0, "t": 11, "d": [278,228], "a": 1 },
{ "px": [1184,128], "src": [32,32], "f": 0, "t": 11, "d": [278,229], "a": 1 },
{ "px": [1216,128], "src": [32,32], "f": 0, "t": 11, "d": [278,230], "a": 1 },
{ "px": [1248,128], "src": [32,32], "f": 0, "t": 11, "d": [278,231], "a": 1 },
{ "px": [1280,128], "src": [32,32], "f": 0, "t": 11, "d": [278,232], "a": 1 },
{ "px": [1312,128], "src": [32,32], "f": 0, "t": 11, "d": [278,233], "a": 1 },
{ "px": [1344,128], "src": [32,32], "f": 0, "t": 11, "d": [278,234], "a": 1 },
{ "px": [1376,128], "src": [32,32], "f": 0, "t": 11, "d": [278,235], "a": 1 },
{ "px": [1408,128], "src": [32,32], "f": 0, "t": 11, "d": [278,236], "a": 1 },
{ "px": [1440,128], "src": [32,32], "f": 0, "t": 11, "d": [278,237], "a": 1 },
{ "px": [1472,128], "src": [32,32], "f": 0, "t": 11, "d": [278,238], "a": 1 },
{ "px": [1504,128], "src": [32,32], "f": 0, "t": 11, "d": [278,239], "a": 1 },
{ "px": [0,160], "src": [32,32], "f": 0, "t": 11, "d": [278,240], "a": 1 },
{ "px": [32,160], "src": [32,32], "f": 0, "t": 11, "d": [278,241], "a": 1 },
{ "px": [64,160], "src": [32,32], "f": 0, "t": 11, "d": [278,242], "a": 1 },
{ "px": [96,160], "src": [32,32], "f": 0, "t": 11, "d": [278,243], "a": 1 },
{ "px": [128,160], "src": [32,32], "f": 0, "t": 11, "d": [278,244], "a": 1 },
{ "px": [160,160], "src": [32,32], "f": 0, "t": 11, "d": [278,245], "a": 1 },
{ "px": [192,160], "src": [32,32], "f": 0, "t": 11, "d": [278,246], "a": 1 },
{ "px": [224,160], "src": [32,32], "f": 0, "t": 11, "d": [278,247], "a": 1 },
{ "px": [256,160], "src": [32,32], "f": 0, "t": 11, "d": [278,248], "a": 1 },
{ "px": [288,160], "src": [32,32], "f": 0, "t": 11, "d": [278,249], "a": 1 },
{ "px": [320,160], "src": [32,32], "f": 0, "t": 11, "d": [278,250], "a": 1 },
{ "px": [352,160], "src": [32,32], "f": 0, "t": 11, "d": [278,251], "a": 1 },
{ "px": [384,160], "src": [32,32], "f": 0, "t": 11, "d": [278,252], "a": 1 },
{ "px": [416,160], "src": [32,32], "f": 0, "t": 11, "d": [278,253], "a": 1 },
{ "px": [448,160], "src": [32,32], "f": 0, "t": 11, "d": [278,254], "a": 1 },
{ "px": [1120,160], "src": [32,32], "f": 0, "t": 11, "d": [278,275], "a": 1 },
{ "px": [1152,160], "src": [32,32], "f": 0, "t": 11, "d": [278,276], "a": 1 },
{ "px": [1184,160], "src": [32,32], "f": 0, "t": 11, "d": [278,277], "a": 1 },
{ "px": [1216,160], "src": [32,32], "f": 0, "t": 11, "d": [278,278], "a": 1 },
{ "px": [1248,160], "src": [32,32], "f": 0, "t": 11, "d": [278,279], "a": 1 },
{ "px": [1280,160], "src": [32,32], "f": 0, "t": 11, "d": [278,280], "a": 1 },
{ "px": [1312,160], "src": [32,32], "f": 0, "t": 11, "d": [278,281], "a": 1 },
{ "px": [1344,160], "src": [32,32], "f": 0, "t": 11, "d": [278,282], "a": 1 },
{ "px": [1376,160], "src": [32,32], "f": 0, "t": 11, "d": [278,283], "a": 1 },
{ "px": [1408,160], "src": [32,32], "f": 0, "t": 11, "d": [278,284], "a": 1 },
{ "px": [1440,160], "src": [32,32], "f": 0, "t": 11, "d": [278,285], "a": 1 },
{ "px": [1472,160], "src": [32,32], "f": 0, "t": 11, "d": [278,286], "a": 1 },
{ "px": [1504,160], "src": [32,32], "f": 0, "t": 11, "d": [278,287], "a": 1 },
{ "px": [0,192], "src": [32,32], "f": 0, "t": 11, "d": [278,288], "a": 1 },
{ "px": [32,192], "src": [32,32], "f": 0, "t": 11, "d": [278,289], "a": 1 },
{ "px": [64,192], "src": [32,32], "f": 0, "t": 11, "d": [278,290], "a": 1 },
{ "px": [96,192], "src": [32,32], "f": 0, "t": 11, "d": [278,291], "a": 1 },
{ "px": [128,192], "src": [32,32], "f": 0, "t": 11, "d": [278,292], "a": 1 },
{ "px": [160,192], "src": [32,32], "f": 0, "t": 11, "d": [278,293], "a": 1 },
{ "px": [192,192], "src": [32,32], "f": 0, "t": 11, "d": [278,294], "a": 1 },
{ "px": [224,192], "src": [32,32], "f": 0, "t": 11, "d": [278,295], "a": 1 },
{ "px": [256,192], "src": [32,32], "f": 0, "t": 11, "d": [278,296], "a": 1 },
{ "px": [288,192], "src": [32,32], "f": 0, "t": 11, "d": [278,297], "a": 1 },
{ "px": [320,192], "src": [32,32], "f": 0, "t": 11, "d": [278,298], "a": 1 },
{ "px": [352,192], "src": [32,32], "f": 0, "t": 11, "d": [278,299], "a": 1 },
{ "px": [384,192], "src": [32,32], "f": 0, "t": 11, "d": [278,300], "a": 1 },
{ "px": [416,192], "src": [32,32], "f": 0, "t": 11, "d": [278,301], "a": 1 },
{ "px": [448,192], "src": [32,32], "f": 0, "t": 11, "d": [278,302], "a": 1 },
{ "px": [1120,192], "src": [32,32], "f": 0, "t": 11, "d": [278,323], "a": 1 },
{ "px": [1152,192], "src": [32,32], "f": 0, "t": 11, "d": [278,324], "a": 1 },
{ "px": [1184,192], "src": [32,32], "f": 0, "t": 11, "d": [278,325], "a": 1 },
{ "px": [1216,192], "src": [32,32], "f": 0, "t": 11, "d": [278,326], "a": 1 },
{ "px": [1248,192], "src": [32,32], "f": 0, "t": 11, "d": [278,327], "a": 1 },
{ "px": [1280,192], "src": [32,32], "f": 0, "t": 11, "d": [278,328], "a": 1 },
{ "px": [1312,192], "src": [32,32], "f": 0, "t": 11, "d": [278,329], "a": 1 },
{ "px": [1344,192], "src": [32,32], "f": 0, "t": 11, "d": [278,330], "a": 1 },
{ "px": [1376,192], "src": [32,32], "f": 0, "t": 11, "d": [278,331], "a": 1 },
{ "px": [1408,192], "src": [32,32], "f": 0, "t": 11, "d": [278,332], "a": 1 },
{ "px": [1440,192], "src": [32,32], "f": 0, "t": 11, "d": [278,333], "a": 1 },
{ "px": [1472,192], "src": [32,32], "f": 0, "t": 11, "d": [278,334], "a": 1 },
{ "px": [1504,192], "src": [32,32], "f": 0, "t": 11, "d": [278,335], "a": 1 },
{ "px": [0,224], "src": [32,32], "f": 0, "t": 11, "d": [278,336], "a": 1 },
{ "px": [32,224], "src": [32,32], "f": 0, "t": 11, "d": [278,337], "a": 1 },
{ "px": [64,224], "src": [32,32], "f": 0, "t": 11, "d": [278,338], "a": 1 },
{ "px": [96,224], "src": [32,32], "f": 0, "t": 11, "d": [278,339], "a": 1 },
{ "px": [128,224], "src": [32,32], "f": 0, "t": 11, "d": [278,340], "a": 1 },
{ "px": [160,224], "src": [32,32], "f": 0, "t": 11, "d": [278,341], "a": 1 },
{ "px": [192,224], "src": [32,32], "f": 0, "t": 11, "d": [278,342], "a": 1 },
{ "px": [224,224], "src": [32,32], "f": 0, "t": 11, "d": [278,343], "a": 1 },
{ "px": [256,224], "src": [32,32], "f": 0, "t": 11, "d": [278,344], "a": 1 },
{ "px": [288,224], "src": [32,32], "f": 0, "t": 11, "d": [278,345], "a": 1 },
{ "px": [320,224], "src": [32,32], "f": 0, "t": 11, "d": [278,346], "a": 1 },
{ "px": [352,224], "src": [32,32], "f": 0, "t": 11, "d": [278,347], "a": 1 },
{ "px": [384,224], "src": [32,32], "f": 0, "t": 11, "d": [278,348], "a": 1 },
{ "px": [416,224], "src": [32,32], "f": 0, "t": 11, "d": [278,349], "a": 1 },
{ "px": [1152,224], "src": [32,32], "f": 0, "t": 11, "d": [278,372], "a": 1 },
{ "px": [1184,224], "src": [32,32], "f": 0, "t": 11, "d": [278,373], "a": 1 },
{ "px": [1216,224], "src": [32,32], "f": 0, "t": 11, "d": [278,374], "a": 1 },
{ "px": [1248,224], "src": [32,32], "f": 0, "t": 11, "d": [278,375], "a": 1 },
{ "px": [1280,224], "src": [32,32], "f": 0, "t": 11, "d": [278,376], "a": 1 },
{ "px": [1312,224], "src": [32,32], "f": 0, "t": 11, "d": [278,377], "a": 1 },
{ "px": [1344,224], "src": [32,32], "f": 0, "t": 11, "d": [278,378], "a": 1 },
{ "px": [1376,224], "src": [32,32], "f": 0, "t": 11, "d": [278,379], "a": 1 },
{ "px": [1408,224], "src": [32,32], "f": 0, "t": 11, "d": [278,380], "a": 1 },
{ "px": [1440,224], "src": [32,32], "f": 0, "t": 11, "d": [278,381], "a": 1 },
{ "px": [1472,224], "src": [32,32], "f": 0, "t": 11, "d": [278,382], "a": 1 },
{ "px": [1504,224], "src": [32,32], "f": 0, "t": 11, "d": [278,383], "a": 1 },
{ "px": [0,256], "src": [32,32], "f": 0, "t": 11, "d": [278,384], "a": 1 },
{ "px": [32,256], "src": [32,32], "f": 0, "t": 11, "d": [278,385], "a": 1 },
{ "px": [64,256], "src": [32,32], "f": 0, "t": 11, "d": [278,386], "a": 1 },
{ "px": [96,256], "src": [32,32], "f": 0, "t": 11, "d": [278,387], "a": 1 },
{ "px": [224,256], "src": [32,32], "f": 0, "t": 11, "d": [278,391], "a": 1 },
{ "px": [256,256], "src": [32,32], "f": 0, "t": 11, "d": [278,392], "a": 1 },
{ "px": [288,256], "src": [32,32], "f": 0, "t": 11, "d": [278,393], "a": 1 },
{ "px": [320,256], "src": [32,32], "f": 0, "t": 11, "d": [278,394], "a": 1 },
{ "px": [1216,256], "src": [32,32], "f": 0, "t": 11, "d": [278,422], "a": 1 },
{ "px": [1248,256], "src": [32,32], "f": 0, "t": 11, "d": [278,423], "a": 1 },
{ "px": [1280,256], "src": [32,32], "f": 0, "t": 11, "d": [278,424], "a": 1 },
{ "px": [1312,256], "src": [32,32], "f": 0, "t": 11, "d": [278,425], "a": 1 },
{ "px": [1344,256], "src": [32,32], "f": 0, "t": 11, "d": [278,426], "a": 1 },
{ "px": [1376,256], "src": [32,32], "f": 0, "t": 11, "d": [278,427], "a": 1 },
{ "px": [1408,256], "src": [32,32], "f": 0, "t": 11, "d": [278,428], "a": 1 },
{ "px": [1440,256], "src": [32,32], "f": 0, "t": 11, "d": [278,429], "a": 1 },
{ "px": [1472,256], "src": [32,32], "f": 0, "t": 11, "d": [278,430], "a": 1 },
{ "px": [1504,256], "src": [32,32], "f": 0, "t": 11, "d": [278,431], "a": 1 },
{ "px": [0,288], "src": [32,32], "f": 0, "t": 11, "d": [278,432], "a": 1 },
{ "px": [32,288], "src": [32,32], "f": 0, "t": 11, "d": [278,433], "a": 1 },
{ "px": [64,288], "src": [32,32], "f": 0, "t": 11, "d": [278,434], "a": 1 },
{ "px": [224,288], "src": [32,32], "f": 0, "t": 11, "d": [278,439], "a": 1 },
{ "px": [256,288], "src": [32,32], "f": 0, "t": 11, "d": [278,440], "a": 1 },
{ "px": [1280,288], "src": [32,32], "f": 0, "t": 11, "d": [278,472], "a": 1 },
{ "px": [1312,288], "src": [32,32], "f": 0, "t": 11, "d": [278,473], "a": 1 },
{ "px": [1344,288], "src": [32,32], "f": 0, "t": 11, "d": [278,474], "a": 1 },
{ "px": [1376,288], "src": [32,32], "f": 0, "t": 11, "d": [278,475], "a": 1 },
{ "px": [1408,288], "src": [32,32], "f": 0, "t": 11, "d": [278,476], "a": 1 },
{ "px": [1440,288], "src": [32,32], "f": 0, "t": 11, "d": [278,477], "a": 1 },
{ "px": [1472,288], "src": [32,32], "f": 0, "t": 11, "d": [278,478], "a": 1 },
{ "px": [1504,288], "src": [32,32], "f": 0, "t": 11, "d": [278,479], "a": 1 },
{ "px": [0,320], "src": [32,32], "f": 0, "t": 11, "d": [278,480], "a": 1 },
{ "px": [32,320], "src": [32,32], "f": 0, "t": 11, "d": [278,481], "a": 1 },
{ "px": [64,320], "src": [32,32], "f": 0, "t": 11, "d": [278,482], "a": 1 },
{ "px": [1344,320], "src": [32,32], "f": 0, "t": 11, "d": [278,522], "a": 1 },
{ "px": [1376,320], "src": [32,32], "f": 0, "t": 11, "d": [278,523], "a": 1 },
{ "px": [1408,320], "src": [32,32], "f": 0, "t": 11, "d": [278,524], "a": 1 },
{ "px": [1440,320], "src": [32,32], "f": 0, "t": 11, "d": [278,525], "a": 1 },
{ "px": [1472,320], "src": [32,32], "f": 0, "t": 11, "d": [278,526], "a": 1 },
{ "px": [1504,320], "src": [32,32], "f": 0, "t": 11, "d": [278,527], "a": 1 },
{ "px": [832,640], "src": [32,32], "f": 0, "t": 11, "d": [278,986], "a": 1 },
{ "px": [864,640], "src": [32,32], "f": 0, "t": 11, "d": [278,987], "a": 1 },
{ "px": [896,640], "src": [32,32], "f": 0, "t": 11, "d": [278,988], "a": 1 },
{ "px": [928,640], "src": [32,32], "f": 0, "t": 11, "d": [278,989], "a": 1 },
{ "px": [960,640], "src": [32,32], "f": 0, "t": 11, "d": [278,990], "a": 1 },
{ "px": [992,640], "src": [32,32], "f": 0, "t": 11, "d": [278,991], "a": 1 },
{ "px": [1024,640], "src": [32,32], "f": 0, "t": 11, "d": [278,992], "a": 1 },
{ "px": [1056,640], "src": [32,32], "f": 0, "t": 11, "d": [278,993], "a": 1 },
{ "px": [1088,640], "src": [32,32], "f": 0, "t": 11, "d": [278,994], "a": 1 },
{ "px": [1120,640], "src": [32,32], "f": 0, "t": 11, "d": [278,995], "a": 1 },
{ "px": [1152,640], "src": [32,32], "f": 0, "t": 11, "d": [278,996], "a": 1 },
{ "px": [1184,640], "src": [32,32], "f": 0, "t": 11, "d": [278,997], "a": 1 },
{ "px": [1216,640], "src": [32,32], "f": 0, "t": 11, "d": [278,998], "a": 1 },
{ "px": [0,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1008], "a": 1 },
{ "px": [32,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1009], "a": 1 },
{ "px": [64,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1010], "a": 1 },
{ "px": [96,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1011], "a": 1 },
{ "px": [128,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1012], "a": 1 },
{ "px": [160,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1013], "a": 1 },
{ "px": [192,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1014], "a": 1 },
{ "px": [224,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1015], "a": 1 },
{ "px": [256,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1016], "a": 1 },
{ "px": [288,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1017], "a": 1 },
{ "px": [320,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1018], "a": 1 },
{ "px": [352,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1019], "a": 1 },
{ "px": [384,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1020], "a": 1 },
{ "px": [416,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1021], "a": 1 },
{ "px": [736,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1031], "a": 1 },
{ "px": [768,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1032], "a": 1 },
{ "px": [800,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1033], "a": 1 },
{ "px": [832,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1034], "a": 1 },
{ "px": [864,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1035], "a": 1 },
{ "px": [896,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1036], "a": 1 },
{ "px": [928,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1037], "a": 1 },
{ "px": [960,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1038], "a": 1 },
{ "px": [992,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1039], "a": 1 },
{ "px": [1024,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1040], "a": 1 },
{ "px": [1056,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1041], "a": 1 },
{ "px": [1088,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1042], "a": 1 },
{ "px": [1120,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1043], "a": 1 },
{ "px": [1152,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1044], "a": 1 },
{ "px": [1184,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1045], "a": 1 },
{ "px": [1216,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1046], "a": 1 },
{ "px": [1248,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1047], "a": 1 },
{ "px": [1280,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1048], "a": 1 },
{ "px": [1312,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1049], "a": 1 },
{ "px": [1344,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1050], "a": 1 },
{ "px": [1376,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1051], "a": 1 },
{ "px": [1408,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1052], "a": 1 },
{ "px": [1440,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1053], "a": 1 },
{ "px": [1472,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1054], "a": 1 },
{ "px": [1504,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1055], "a": 1 },
{ "px": [0,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1056], "a": 1 },
{ "px": [32,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1057], "a": 1 },
{ "px": [64,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1058], "a": 1 },
{ "px": [96,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1059], "a": 1 },
{ "px": [128,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1060], "a": 1 },
{ "px": [160,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1061], "a": 1 },
{ "px": [192,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1062], "a": 1 },
{ "px": [224,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1063], "a": 1 },
{ "px": [256,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1064], "a": 1 },
{ "px": [288,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1065], "a": 1 },
{ "px": [320,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1066], "a": 1 },
{ "px": [352,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1067], "a": 1 },
{ "px": [384,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1068], "a": 1 },
{ "px": [416,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1069], "a": 1 },
{ "px": [576,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1074], "a": 1 },
{ "px": [608,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1075], "a": 1 },
{ "px": [640,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1076], "a": 1 },
{ "px": [672,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1077], "a": 1 },
{ "px": [704,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1078], "a": 1 },
{ "px": [736,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1079], "a": 1 },
{ "px": [768,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1080], "a": 1 },
{ "px": [800,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1081], "a": 1 },
{ "px": [832,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1082], "a": 1 },
{ "px": [864,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1083], "a": 1 },
{ "px": [896,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1084], "a": 1 },
{ "px": [928,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1085], "a": 1 },
{ "px": [960,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1086], "a": 1 },
{ "px": [992,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1087], "a": 1 },
{ "px": [1024,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1088], "a": 1 },
{ "px": [1056,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1089], "a": 1 },
{ "px": [1088,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1090], "a": 1 },
{ "px": [1120,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1091], "a": 1 },
{ "px": [1152,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1092], "a": 1 },
{ "px": [1184,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1093], "a": 1 },
{ "px": [1216,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1094], "a": 1 },
{ "px": [1248,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1095], "a": 1 },
{ "px": [1280,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1096], "a": 1 },
{ "px": [1312,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1097], "a": 1 },
{ "px": [1344,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1098], "a": 1 },
{ "px": [1376,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1099], "a": 1 },
{ "px": [1408,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1100], "a": 1 },
{ "px": [1440,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1101], "a": 1 },
{ "px": [1472,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1102], "a": 1 },
{ "px": [1504,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1103], "a": 1 },
{ "px": [0,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1104], "a": 1 },
{ "px": [32,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1105], "a": 1 },
{ "px": [64,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1106], "a": 1 },
{ "px": [96,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1107], "a": 1 },
{ "px": [128,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1108], "a": 1 },
{ "px": [160,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1109], "a": 1 },
{ "px": [192,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1110], "a": 1 },
{ "px": [224,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1111], "a": 1 },
{ "px": [256,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1112], "a": 1 },
{ "px": [288,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1113], "a": 1 },
{ "px": [320,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1114], "a": 1 },
{ "px": [352,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1115], "a": 1 },
{ "px": [384,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1116], "a": 1 },
{ "px": [416,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1117], "a": 1 },
{ "px": [448,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1118], "a": 1 },
{ "px": [480,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1119], "a": 1 },
{ "px": [512,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1120], "a": 1 },
{ "px": [544,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1121], "a": 1 },
{ "px": [576,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1122], "a": 1 },
{ "px": [608,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1123], "a": 1 },
{ "px": [640,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1124], "a": 1 },
{ "px": [672,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1125], "a": 1 },
{ "px": [704,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1126], "a": 1 },
{ "px": [736,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1127], "a": 1 },
{ "px": [768,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1128], "a": 1 },
{ "px": [800,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1129], "a": 1 },
{ "px": [832,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1130], "a": 1 },
{ "px": [864,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1131], "a": 1 },
{ "px": [896,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1132], "a": 1 },
{ "px": [928,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1133], "a": 1 },
{ "px": [960,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1134], "a": 1 },
{ "px": [992,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1135], "a": 1 },
{ "px": [1024,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1136], "a": 1 },
{ "px": [1056,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1137], "a": 1 },
{ "px": [1088,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1138], "a": 1 },
{ "px": [1120,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1139], "a": 1 },
{ "px": [1152,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1140], "a": 1 },
{ "px": [1184,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1141], "a": 1 },
{ "px": [1216,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1142], "a": 1 },
{ "px": [1248,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1143], "a": 1 },
{ "px": [1280,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1144], "a": 1 },
{ "px": [1312,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1145], "a": 1 },
{ "px": [1344,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1146], "a": 1 },
{ "px": [1376,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1147], "a": 1 },
{ "px": [1408,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1148], "a": 1 },
{ "px": [1440,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1149], "a": 1 },
{ "px": [1472,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1150], "a": 1 },
{ "px": [1504,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1151], "a": 1 },
{ "px": [1056,96], "src": [160,32], "f": 0, "t": 15, "d": [277,177], "a": 1 },
{ "px": [1088,128], "src": [160,32], "f": 0, "t": 15, "d": [277,226], "a": 1 },
{ "px": [1120,224], "src": [160,32], "f": 0, "t": 15, "d": [277,371], "a": 1 },
{ "px": [192,256], "src": [160,32], "f": 0, "t": 15, "d": [277,390], "a": 1 },
{ "px": [1184,256], "src": [160,32], "f": 0, "t": 15, "d": [277,421], "a": 1 },
{ "px": [1248,288], "src": [160,32], "f": 0, "t": 15, "d": [277,471], "a": 1 },
{ "px": [1312,320], "src": [160,32], "f": 0, "t": 15, "d": [277,521], "a": 1 },
{ "px": [32,352], "src": [160,32], "f": 0, "t": 15, "d": [277,529], "a": 1 },
{ "px": [480,160], "src": [128,32], "f": 0, "t": 14, "d": [276,255], "a": 1 },
{ "px": [448,224], "src": [128,32], "f": 0, "t": 14, "d": [276,350], "a": 1 },
{ "px": [128,256], "src": [128,32], "f": 0, "t": 14, "d": [276,388], "a": 1 },
{ "px": [352,256], "src": [128,32], "f": 0, "t": 14, "d": [276,395], "a": 1 },
{ "px": [96,288], "src": [128,32], "f": 0, "t": 14, "d": [276,435], "a": 1 },
{ "px": [288,288], "src": [128,32], "f": 0, "t": 14, "d": [276,441], "a": 1 },
{ "px": [64,352], "src": [128,32], "f": 0, "t": 14, "d": [276,530], "a": 1 },
{ "px": [480,64], "src": [128,64], "f": 0, "t": 24, "d": [275,111], "a": 1 },
{ "px": [1248,640], "src": [128,64], "f": 0, "t": 24, "d": [275,999], "a": 1 },
{ "px": [448,704], "src": [128,64], "f": 0, "t": 24, "d": [275,1070], "a": 1 },
{ "px": [800,640], "src": [160,64], "f": 0, "t": 25, "d": [274,985], "a": 1 },
{ "px": [704,672], "src": [160,64], "f": 0, "t": 25, "d": [274,1030], "a": 1 },
{ "px": [544,704], "src": [160,64], "f": 0, "t": 25, "d": [274,1073], "a": 1 },
{ "px": [1024,0], "src": [0,32], "f": 0, "t": 10, "d": [273,32], "a": 1 },
{ "px": [1024,32], "src": [0,32], "f": 0, "t": 10, "d": [273,80], "a": 1 },
{ "px": [1024,64], "src": [0,32], "f": 0, "t": 10, "d": [273,128], "a": 1 },
{ "px": [1088,160], "src": [0,32], "f": 0, "t": 10, "d": [273,274], "a": 1 },
{ "px": [1088,192], "src": [0,32], "f": 0, "t": 10, "d": [273,322], "a": 1 },
{ "px": [192,288], "src": [0,32], "f": 0, "t": 10, "d": [273,438], "a": 1 },
{ "px": [160,256], "src": [32,64], "f": 0, "t": 21, "d": [272,389], "a": 1 },
{ "px": [384,256], "src": [32,64], "f": 0, "t": 21, "d": [272,396], "a": 1 },
{ "px": [416,256], "src": [32,64], "f": 0, "t": 21, "d": [272,397], "a": 1 },
{ "px": [1152,256], "src": [32,64], "f": 0, "t": 21, "d": [272,420], "a": 1 },
{ "px": [320,288], "src": [32,64], "f": 0, "t": 21, "d": [272,442], "a": 1 },
{ "px": [1216,288], "src": [32,64], "f": 0, "t": 21, "d": [272,470], "a": 1 },
{ "px": [224,320], "src": [32,64], "f": 0, "t": 21, "d": [272,487], "a": 1 },
{ "px": [256,320], "src": [32,64], "f": 0, "t": 21, "d": [272,488], "a": 1 },
{ "px": [1280,320], "src": [32,64], "f": 0, "t": 21, "d": [272,520], "a": 1 },
{ "px": [0,352], "src": [32,64], "f": 0, "t": 21, "d": [272,528], "a": 1 },
{ "px": [1344,352], "src": [32,64], "f": 0, "t": 21, "d": [272,570], "a": 1 },
{ "px": [1376,352], "src": [32,64], "f": 0, "t": 21, "d": [272,571], "a": 1 },
{ "px": [1408,352], "src": [32,64], "f": 0, "t": 21, "d": [272,572], "a": 1 },
{ "px": [1440,352], "src": [32,64], "f": 0, "t": 21, "d": [272,573], "a": 1 },
{ "px": [1472,352], "src": [32,64], "f": 0, "t": 21, "d": [272,574], "a": 1 },
{ "px": [1504,352], "src": [32,64], "f": 0, "t": 21, "d": [272,575], "a": 1 },
{ "px": [480,0], "src": [64,32], "f": 0, "t": 12, "d": [271,15], "a": 1 },
{ "px": [480,32], "src": [64,32], "f": 0, "t": 12, "d": [271,63], "a": 1 },
{ "px": [512,96], "src": [64,32], "f": 0, "t": 12, "d": [271,160], "a": 1 },
{ "px": [512,128], "src": [64,32], "f": 0, "t": 12, "d": [271,208], "a": 1 },
{ "px": [480,192], "src": [64,32], "f": 0, "t": 12, "d": [271,303], "a": 1 },
{ "px": [96,320], "src": [64,32], "f": 0, "t": 12, "d": [271,483], "a": 1 },
{ "px": [64,384], "src": [64,32], "f": 0, "t": 12, "d": [271,578], "a": 1 },
{ "px": [448,672], "src": [64,32], "f": 0, "t": 12, "d": [271,1022], "a": 1 },
{ "px": [832,608], "src": [32,0], "f": 0, "t": 1, "d": [270,938], "a": 1 },
{ "px": [864,608], "src": [32,0], "f": 0, "t": 1, "d": [270,939], "a": 1 },
{ "px": [896,608], "src": [32,0], "f": 0, "t": 1, "d": [270,940], "a": 1 },
{ "px": [928,608], "src": [32,0], "f": 0, "t": 1, "d": [270,941], "a": 1 },
{ "px": [960,608], "src": [32,0], "f": 0, "t": 1, "d": [270,942], "a": 1 },
{ "px": [992,608], "src": [32,0], "f": 0, "t": 1, "d": [270,943], "a": 1 },
{ "px": [1024,608], "src": [32,0], "f": 0, "t": 1, "d": [270,944], "a": 1 },
{ "px": [1056,608], "src": [32,0], "f": 0, "t": 1, "d": [270,945], "a": 1 },
{ "px": [1088,608], "src": [32,0], "f": 0, "t": 1, "d": [270,946], "a": 1 },
{ "px": [1120,608], "src": [32,0], "f": 0, "t": 1, "d": [270,947], "a": 1 },
{ "px": [1152,608], "src": [32,0], "f": 0, "t": 1, "d": [270,948], "a": 1 },
{ "px": [1184,608], "src": [32,0], "f": 0, "t": 1, "d": [270,949], "a": 1 },
{ "px": [1216,608], "src": [32,0], "f": 0, "t": 1, "d": [270,950], "a": 1 },
{ "px": [0,640], "src": [32,0], "f": 0, "t": 1, "d": [270,960], "a": 1 },
{ "px": [32,640], "src": [32,0], "f": 0, "t": 1, "d": [270,961], "a": 1 },
{ "px": [64,640], "src": [32,0], "f": 0, "t": 1, "d": [270,962], "a": 1 },
{ "px": [96,640], "src": [32,0], "f": 0, "t": 1, "d": [270,963], "a": 1 },
{ "px": [128,640], "src": [32,0], "f": 0, "t": 1, "d": [270,964], "a": 1 },
{ "px": [160,640], "src": [32,0], "f": 0, "t": 1, "d": [270,965], "a": 1 },
{ "px": [192,640], "src": [32,0], "f": 0, "t": 1, "d": [270,966], "a": 1 },
{ "px": [224,640], "src": [32,0], "f": 0, "t": 1, "d": [270,967], "a": 1 },
{ "px": [256,640], "src": [32,0], "f": 0, "t": 1, "d": [270,968], "a": 1 },
{ "px": [288,640], "src": [32,0], "f": 0, "t": 1, "d": [270,969], "a": 1 },
{ "px": [320,640], "src": [32,0], "f": 0, "t": 1, "d": [270,970], "a": 1 },
{ "px": [352,640], "src": [32,0], "f": 0, "t": 1, "d": [270,971], "a": 1 },
{ "px": [384,640], "src": [32,0], "f": 0, "t": 1, "d": [270,972], "a": 1 },
{ "px": [416,640], "src": [32,0], "f": 0, "t": 1, "d": [270,973], "a": 1 },
{ "px": [736,640], "src": [32,0], "f": 0, "t": 1, "d": [270,983], "a": 1 },
{ "px": [768,640], "src": [32,0], "f": 0, "t": 1, "d": [270,984], "a": 1 },
{ "px": [1280,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1000], "a": 1 },
{ "px": [1312,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1001], "a": 1 },
{ "px": [1344,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1002], "a": 1 },
{ "px": [1376,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1003], "a": 1 },
{ "px": [1408,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1004], "a": 1 },
{ "px": [1440,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1005], "a": 1 },
{ "px": [1472,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1006], "a": 1 },
{ "px": [1504,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1007], "a": 1 },
{ "px": [576,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1026], "a": 1 },
{ "px": [608,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1027], "a": 1 },
{ "px": [640,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1028], "a": 1 },
{ "px": [672,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1029], "a": 1 },
{ "px": [480,704], "src": [32,0], "f": 0, "t": 1, "d": [270,1071], "a": 1 },
{ "px": [512,704], "src": [32,0], "f": 0, "t": 1, "d": [270,1072], "a": 1 },
{ "px": [1024,96], "src": [0,64], "f": 0, "t": 20, "d": [269,176], "a": 1 },
{ "px": [1056,128], "src": [0,64], "f": 0, "t": 20, "d": [269,225], "a": 1 },
{ "px": [1088,224], "src": [0,64], "f": 0, "t": 20, "d": [269,370], "a": 1 },
{ "px": [1120,256], "src": [0,64], "f": 0, "t": 20, "d": [269,419], "a": 1 },
{ "px": [1184,288], "src": [0,64], "f": 0, "t": 20, "d": [269,469], "a": 1 },
{ "px": [192,320], "src": [0,64], "f": 0, "t": 20, "d": [269,486], "a": 1 },
{ "px": [1248,320], "src": [0,64], "f": 0, "t": 20, "d": [269,519], "a": 1 },
{ "px": [1312,352], "src": [0,64], "f": 0, "t": 20, "d": [269,569], "a": 1 },
{ "px": [32,384], "src": [0,64], "f": 0, "t": 20, "d": [269,577], "a": 1 },
{ "px": [512,160], "src": [64,64], "f": 0, "t": 22, "d": [268,256], "a": 1 },
{ "px": [480,224], "src": [64,64], "f": 0, "t": 22, "d": [268,351], "a": 1 },
{ "px": [448,256], "src": [64,64], "f": 0, "t": 22, "d": [268,398], "a": 1 },
{ "px": [128,288], "src": [64,64], "f": 0, "t": 22, "d": [268,436], "a": 1 },
{ "px": [352,288], "src": [64,64], "f": 0, "t": 22, "d": [268,443], "a": 1 },
{ "px": [288,320], "src": [64,64], "f": 0, "t": 22, "d": [268,489], "a": 1 },
{ "px": [96,352], "src": [64,64], "f": 0, "t": 22, "d": [268,531], "a": 1 },
{ "px": [512,64], "src": [64,0], "f": 0, "t": 2, "d": [267,112], "a": 1 },
{ "px": [1248,608], "src": [64,0], "f": 0, "t": 2, "d": [267,951], "a": 1 },
{ "px": [448,640], "src": [64,0], "f": 0, "t": 2, "d": [267,974], "a": 1 },
{ "px": [800,608], "src": [0,0], "f": 0, "t": 0, "d": [266,937], "a": 1 },
{ "px": [704,640], "src": [0,0], "f": 0, "t": 0, "d": [266,982], "a": 1 },
{ "px": [544,672], "src": [0,0], "f": 0, "t": 0, "d": [266,1025], "a": 1 },
{ "px": [64,416], "src": [96,64], "f": 0, "t": 23, "d": [264,626], "a": 1 },
{ "px": [832,576], "src": [32,128], "f": 0, "t": 41, "d": [280,890], "a": 1 },
{ "px": [864,576], "src": [32,128], "f": 0, "t": 41, "d": [280,891], "a": 1 },
{ "px": [896,576], "src": [64,160], "f": 0, "t": 52, "d": [280,892], "a": 1 },
{ "px": [928,576], "src": [96,160], "f": 0, "t": 53, "d": [280,893], "a": 1 },
{ "px": [960,576], "src": [0,160], "f": 0, "t": 50, "d": [280,894], "a": 1 },
{ "px": [992,576], "src": [0,160], "f": 0, "t": 50, "d": [280,895], "a": 1 },
{ "px": [1024,576], "src": [32,160], "f": 0, "t": 51, "d": [280,896], "a": 1 },
{ "px": [1056,576], "src": [64,128], "f": 0, "t": 42, "d": [280,897], "a": 1 },
{ "px": [1088,576], "src": [32,128], "f": 0, "t": 41, "d": [280,898], "a": 1 },
{ "px": [1120,576], "src": [64,128], "f": 0, "t": 42, "d": [280,899], "a": 1 },
{ "px": [1152,576], "src": [32,160], "f": 0, "t": 51, "d": [280,900], "a": 1 },
{ "px": [1184,576], "src": [0,160], "f": 0, "t": 50, "d": [280,901], "a": 1 },
{ "px": [1216,576], "src": [64,128], "f": 0, "t": 42, "d": [280,902], "a": 1 },
{ "px": [32,608], "src": [96,128], "f": 0, "t": 43, "d": [280,913], "a": 1 },
{ "px": [64,608], "src": [32,160], "f": 0, "t": 51, "d": [280,914], "a": 1 },
{ "px": [96,608], "src": [64,128], "f": 0, "t": 42, "d": [280,915], "a": 1 },
{ "px": [128,608], "src": [0,160], "f": 0, "t": 50, "d": [280,916], "a": 1 },
{ "px": [160,608], "src": [0,128], "f": 0, "t": 40, "d": [280,917], "a": 1 },
{ "px": [192,608], "src": [64,160], "f": 0, "t": 52, "d": [280,918], "a": 1 },
{ "px": [224,608], "src": [0,128], "f": 0, "t": 40, "d": [280,919], "a": 1 },
{ "px": [256,608], "src": [32,128], "f": 0, "t": 41, "d": [280,920], "a": 1 },
{ "px": [288,608], "src": [0,128], "f": 0, "t": 40, "d": [280,921], "a": 1 },
{ "px": [320,608], "src": [96,160], "f": 0, "t": 53, "d": [280,922], "a": 1 },
{ "px": [352,608], "src": [96,128], "f": 0, "t": 43, "d": [280,923], "a": 1 },
{ "px": [384,608], "src": [96,128], "f": 0, "t": 43, "d": [280,924], "a": 1 },
{ "px": [416,608], "src": [64,160], "f": 0, "t": 52, "d": [280,925], "a": 1 },
{ "px": [736,608], "src": [96,160], "f": 0, "t": 53, "d": [280,935], "a": 1 },
{ "px": [768,608], "src": [32,160], "f": 0, "t": 51, "d": [280,936], "a": 1 },
{ "px": [1280,608], "src": [64,160], "f": 0, "t": 52, "d": [280,952], "a": 1 },
{ "px": [1312,608], "src": [96,128], "f": 0, "t": 43, "d": [280,953], "a": 1 },
{ "px": [1344,608], "src": [64,128], "f": 0, "t": 42, "d": [280,954], "a": 1 },
{ "px": [1376,608], "src": [96,128], "f": 0, "t": 43, "d": [280,955], "a": 1 },
{ "px": [1408,608], "src": [0,128], "f": 0, "t": 40, "d": [280,956], "a": 1 },
{ "px": [1440,608], "src": [96,128], "f": 0, "t": 43, "d": [280,957], "a": 1 },
{ "px": [1472,608], "src": [64,128], "f": 0, "t": 42, "d": [280,958], "a": 1 },
{ "px": [576,640], "src": [0,160], "f": 0, "t": 50, "d": [280,978], "a": 1 },
{ "px": [608,640], "src": [32,160], "f": 0, "t": 51, "d": [280,979], "a": 1 },
{ "px": [640,640], "src": [96,128], "f": 0, "t": 43, "d": [280,980], "a": 1 },
{ "px": [672,640], "src": [32,128], "f": 0, "t": 41, "d": [280,981], "a": 1 },
{ "px": [480,672], "src": [96,160], "f": 0, "t": 53, "d": [280,1023], "a": 1 },
{ "px": [512,672], "src": [32,128], "f": 0, "t": 41, "d": [280,1024], "a": 1 }
],
"seed": 8337045, "seed": 8337045,
"overrideTilesetUid": null, "overrideTilesetUid": null,
"gridTiles": [], "gridTiles": [],

View file

@ -8,7 +8,7 @@
"appVersion": "1.4.1", "appVersion": "1.4.1",
"url": "https://ldtk.io" "url": "https://ldtk.io"
}, },
"identifier": "Level_3", "identifier": "level_3",
"iid": "9a7c1c80-3b70-11ee-9613-c599f6a78847", "iid": "9a7c1c80-3b70-11ee-9613-c599f6a78847",
"uid": 422, "uid": 422,
"worldX": 4096, "worldX": 4096,
@ -29,7 +29,7 @@
"fieldInstances": [], "fieldInstances": [],
"layerInstances": [ "layerInstances": [
{ {
"__identifier": "Foliage", "__identifier": "foliage",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 56, "__cWid": 56,
"__cHei": 32, "__cHei": 32,
@ -94,7 +94,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Entities", "__identifier": "entities",
"__type": "Entities", "__type": "Entities",
"__cWid": 112, "__cWid": 112,
"__cHei": 64, "__cHei": 64,
@ -118,7 +118,7 @@
"gridTiles": [], "gridTiles": [],
"entityInstances": [ "entityInstances": [
{ {
"__identifier": "Player", "__identifier": "player",
"__grid": [1,49], "__grid": [1,49],
"__pivot": [0.25,1], "__pivot": [0.25,1],
"__tags": [], "__tags": [],
@ -136,7 +136,7 @@
] ]
}, },
{ {
"__identifier": "Ground", "__identifier": "ground",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 56, "__cWid": 56,
"__cHei": 32, "__cHei": 32,
@ -788,7 +788,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Level", "__identifier": "level",
"__type": "IntGrid", "__type": "IntGrid",
"__cWid": 56, "__cWid": 56,
"__cHei": 32, "__cHei": 32,

View file

@ -12,9 +12,9 @@
"jsonVersion": "1.4.1", "jsonVersion": "1.4.1",
"appBuildId": 471031, "appBuildId": 471031,
"nextUid": 478, "nextUid": 478,
"identifierStyle": "Capitalize", "identifierStyle": "Lowercase",
"toc": [{ "toc": [{
"identifier": "Player", "identifier": "player",
"instances": [ "instances": [
{ {
"worldIid": "67ad3480-3b70-11ee-be4f-b1653d535c51", "worldIid": "67ad3480-3b70-11ee-be4f-b1653d535c51",
@ -71,7 +71,7 @@
"defs": { "layers": [ "defs": { "layers": [
{ {
"__type": "AutoLayer", "__type": "AutoLayer",
"identifier": "Foliage", "identifier": "foliage",
"type": "AutoLayer", "type": "AutoLayer",
"uid": 393, "uid": 393,
"doc": null, "doc": null,
@ -134,7 +134,7 @@
}, },
{ {
"__type": "Entities", "__type": "Entities",
"identifier": "Entities", "identifier": "entities",
"type": "Entities", "type": "Entities",
"uid": 56, "uid": 56,
"doc": null, "doc": null,
@ -165,7 +165,7 @@
}, },
{ {
"__type": "AutoLayer", "__type": "AutoLayer",
"identifier": "Ground", "identifier": "ground",
"type": "AutoLayer", "type": "AutoLayer",
"uid": 343, "uid": 343,
"doc": null, "doc": null,
@ -1003,7 +1003,7 @@
}, },
{ {
"__type": "IntGrid", "__type": "IntGrid",
"identifier": "Level", "identifier": "level",
"type": "IntGrid", "type": "IntGrid",
"uid": 4, "uid": 4,
"doc": null, "doc": null,
@ -1034,7 +1034,7 @@
} }
], "entities": [ ], "entities": [
{ {
"identifier": "LevelTransition", "identifier": "leveltransition",
"uid": 53, "uid": 53,
"tags": [], "tags": [],
"exportToToc": false, "exportToToc": false,
@ -1139,7 +1139,7 @@
] ]
}, },
{ {
"identifier": "Player", "identifier": "player",
"uid": 177, "uid": 177,
"tags": [], "tags": [],
"exportToToc": true, "exportToToc": true,
@ -1176,7 +1176,7 @@
{ {
"__cWid": 10, "__cWid": 10,
"__cHei": 10, "__cHei": 10,
"identifier": "Cave", "identifier": "cave",
"uid": 1, "uid": 1,
"relPath": "assets/sprites/cave.png", "relPath": "assets/sprites/cave.png",
"embedAtlas": null, "embedAtlas": null,
@ -1187,7 +1187,7 @@
"padding": 0, "padding": 0,
"tags": ["World"], "tags": ["World"],
"tagsSourceEnumUid": 477, "tagsSourceEnumUid": 477,
"enumTags": [ { "enumValueId": "None", "tileIds": [] }, { "enumValueId": "FullRect", "tileIds": [4,6,7,10,11,12,13,14,15,16,17,21,24,25,26,27,31,34,35,36,37,44,45] }, { "enumValueId": "PointShape", "tileIds": [0,2,3,20,22,23,30,32] } ], "enumTags": [ { "enumValueId": "none", "tileIds": [] }, { "enumValueId": "fullrect", "tileIds": [4,6,7,10,11,12,13,14,15,16,17,21,24,25,26,27,31,34,35,36,37,44,45] }, { "enumValueId": "pointshape", "tileIds": [0,2,3,20,22,23,30,32] } ],
"customData": [], "customData": [],
"savedSelections": [], "savedSelections": [],
"cachedPixelData": { "cachedPixelData": {
@ -1198,7 +1198,7 @@
{ {
"__cWid": 32, "__cWid": 32,
"__cHei": 64, "__cHei": 64,
"identifier": "Internal_Icons", "identifier": "internal_icons",
"uid": 3, "uid": 3,
"relPath": null, "relPath": null,
"embedAtlas": "LdtkIcons", "embedAtlas": "LdtkIcons",
@ -1220,7 +1220,7 @@
{ {
"__cWid": 3, "__cWid": 3,
"__cHei": 1, "__cHei": 1,
"identifier": "Player", "identifier": "player",
"uid": 178, "uid": 178,
"relPath": "assets/sprites/player.png", "relPath": "assets/sprites/player.png",
"embedAtlas": null, "embedAtlas": null,
@ -1236,14 +1236,14 @@
"savedSelections": [], "savedSelections": [],
"cachedPixelData": { "opaqueTiles": "000", "averageColors": "187928790bbd" } "cachedPixelData": { "opaqueTiles": "000", "averageColors": "187928790bbd" }
} }
], "enums": [{ "identifier": "TileCollisionType", "uid": 477, "values": [ ], "enums": [{ "identifier": "tilecollisiontype", "uid": 477, "values": [
{ "id": "None", "tileRect": { "tilesetUid": 3, "x": 384, "y": 64, "w": 16, "h": 16 }, "color": 16777215 }, { "id": "none", "tileRect": { "tilesetUid": 3, "x": 384, "y": 64, "w": 16, "h": 16 }, "color": 16777215 },
{ "id": "FullRect", "tileRect": { "tilesetUid": 3, "x": 272, "y": 272, "w": 16, "h": 16 }, "color": 16723968 }, { "id": "fullrect", "tileRect": { "tilesetUid": 3, "x": 272, "y": 272, "w": 16, "h": 16 }, "color": 16723968 },
{ "id": "PointShape", "tileRect": { "tilesetUid": 3, "x": 288, "y": 48, "w": 16, "h": 16 }, "color": 8698879 } { "id": "pointshape", "tileRect": { "tilesetUid": 3, "x": 288, "y": 48, "w": 16, "h": 16 }, "color": 8698879 }
], "iconTilesetUid": 3, "externalRelPath": null, "externalFileChecksum": null, "tags": ["Tiles"] }], "externalEnums": [], "levelFields": [] }, ], "iconTilesetUid": 3, "externalRelPath": null, "externalFileChecksum": null, "tags": ["Tiles"] }], "externalEnums": [], "levelFields": [] },
"levels": [ "levels": [
{ {
"identifier": "Level_0", "identifier": "level_0",
"iid": "67ada9b0-3b70-11ee-be4f-4d7a6de46d81", "iid": "67ada9b0-3b70-11ee-be4f-4d7a6de46d81",
"uid": 0, "uid": 0,
"worldX": 0, "worldX": 0,
@ -1260,13 +1260,13 @@
"bgPivotY": 0.5, "bgPivotY": 0.5,
"__smartColor": "#ADADB5", "__smartColor": "#ADADB5",
"__bgPos": null, "__bgPos": null,
"externalRelPath": "levels/Level_0.ldtkl", "externalRelPath": "levels/level_0.ldtkl",
"fieldInstances": [], "fieldInstances": [],
"layerInstances": null, "layerInstances": null,
"__neighbours": [{ "levelIid": "5f342c40-3b70-11ee-9613-c12b94e9924d", "dir": "e" }] "__neighbours": [{ "levelIid": "5f342c40-3b70-11ee-9613-c12b94e9924d", "dir": "e" }]
}, },
{ {
"identifier": "Level_1", "identifier": "level_1",
"iid": "5f342c40-3b70-11ee-9613-c12b94e9924d", "iid": "5f342c40-3b70-11ee-9613-c12b94e9924d",
"uid": 252, "uid": 252,
"worldX": 1536, "worldX": 1536,
@ -1283,13 +1283,13 @@
"bgPivotY": 0.5, "bgPivotY": 0.5,
"__smartColor": "#ADADB5", "__smartColor": "#ADADB5",
"__bgPos": null, "__bgPos": null,
"externalRelPath": "levels/Level_1.ldtkl", "externalRelPath": "levels/level_1.ldtkl",
"fieldInstances": [], "fieldInstances": [],
"layerInstances": null, "layerInstances": null,
"__neighbours": [ { "levelIid": "67ada9b0-3b70-11ee-be4f-4d7a6de46d81", "dir": "w" }, { "levelIid": "7d714960-3b70-11ee-9613-91c75b274d8d", "dir": "e" } ] "__neighbours": [ { "levelIid": "67ada9b0-3b70-11ee-be4f-4d7a6de46d81", "dir": "w" }, { "levelIid": "7d714960-3b70-11ee-9613-91c75b274d8d", "dir": "e" } ]
}, },
{ {
"identifier": "Level_2", "identifier": "level_2",
"iid": "7d714960-3b70-11ee-9613-91c75b274d8d", "iid": "7d714960-3b70-11ee-9613-91c75b274d8d",
"uid": 312, "uid": 312,
"worldX": 2560, "worldX": 2560,
@ -1306,13 +1306,13 @@
"bgPivotY": 0.5, "bgPivotY": 0.5,
"__smartColor": "#ADADB5", "__smartColor": "#ADADB5",
"__bgPos": null, "__bgPos": null,
"externalRelPath": "levels/Level_2.ldtkl", "externalRelPath": "levels/level_2.ldtkl",
"fieldInstances": [], "fieldInstances": [],
"layerInstances": null, "layerInstances": null,
"__neighbours": [ { "levelIid": "5f342c40-3b70-11ee-9613-c12b94e9924d", "dir": "w" }, { "levelIid": "9a7c1c80-3b70-11ee-9613-c599f6a78847", "dir": "e" } ] "__neighbours": [ { "levelIid": "5f342c40-3b70-11ee-9613-c12b94e9924d", "dir": "w" }, { "levelIid": "9a7c1c80-3b70-11ee-9613-c599f6a78847", "dir": "e" } ]
}, },
{ {
"identifier": "Level_3", "identifier": "level_3",
"iid": "9a7c1c80-3b70-11ee-9613-c599f6a78847", "iid": "9a7c1c80-3b70-11ee-9613-c599f6a78847",
"uid": 422, "uid": 422,
"worldX": 4096, "worldX": 4096,
@ -1329,7 +1329,7 @@
"bgPivotY": 0.5, "bgPivotY": 0.5,
"__smartColor": "#ADADB5", "__smartColor": "#ADADB5",
"__bgPos": null, "__bgPos": null,
"externalRelPath": "levels/Level_3.ldtkl", "externalRelPath": "levels/level_3.ldtkl",
"fieldInstances": [], "fieldInstances": [],
"layerInstances": null, "layerInstances": null,
"__neighbours": [{ "levelIid": "7d714960-3b70-11ee-9613-91c75b274d8d", "dir": "w" }] "__neighbours": [{ "levelIid": "7d714960-3b70-11ee-9613-91c75b274d8d", "dir": "w" }]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

1270
levels/level_1.ldtkl Normal file

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@
"appVersion": "1.4.1", "appVersion": "1.4.1",
"url": "https://ldtk.io" "url": "https://ldtk.io"
}, },
"identifier": "Level_2", "identifier": "level_2",
"iid": "7d714960-3b70-11ee-9613-91c75b274d8d", "iid": "7d714960-3b70-11ee-9613-91c75b274d8d",
"uid": 312, "uid": 312,
"worldX": 2560, "worldX": 2560,
@ -29,7 +29,7 @@
"fieldInstances": [], "fieldInstances": [],
"layerInstances": [ "layerInstances": [
{ {
"__identifier": "Foliage", "__identifier": "foliage",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 48, "__cWid": 48,
"__cHei": 24, "__cHei": 24,
@ -98,7 +98,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Entities", "__identifier": "entities",
"__type": "Entities", "__type": "Entities",
"__cWid": 96, "__cWid": 96,
"__cHei": 48, "__cHei": 48,
@ -122,7 +122,7 @@
"gridTiles": [], "gridTiles": [],
"entityInstances": [ "entityInstances": [
{ {
"__identifier": "Player", "__identifier": "player",
"__grid": [1,39], "__grid": [1,39],
"__pivot": [0.25,1], "__pivot": [0.25,1],
"__tags": [], "__tags": [],
@ -138,7 +138,7 @@
"fieldInstances": [] "fieldInstances": []
}, },
{ {
"__identifier": "LevelTransition", "__identifier": "leveltransition",
"__grid": [95,9], "__grid": [95,9],
"__pivot": [0,0], "__pivot": [0,0],
"__tags": [], "__tags": [],
@ -159,7 +159,7 @@
] ]
}, },
{ {
"__identifier": "Ground", "__identifier": "ground",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 48, "__cWid": 48,
"__cHei": 24, "__cHei": 24,
@ -887,7 +887,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Level", "__identifier": "level",
"__type": "IntGrid", "__type": "IntGrid",
"__cWid": 48, "__cWid": 48,
"__cHei": 24, "__cHei": 24,
@ -939,581 +939,7 @@
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
], ],
"autoLayerTiles": [ "autoLayerTiles": [],
{ "px": [0,0], "src": [32,32], "f": 0, "t": 11, "d": [278,0], "a": 1 },
{ "px": [32,0], "src": [32,32], "f": 0, "t": 11, "d": [278,1], "a": 1 },
{ "px": [64,0], "src": [32,32], "f": 0, "t": 11, "d": [278,2], "a": 1 },
{ "px": [96,0], "src": [32,32], "f": 0, "t": 11, "d": [278,3], "a": 1 },
{ "px": [128,0], "src": [32,32], "f": 0, "t": 11, "d": [278,4], "a": 1 },
{ "px": [160,0], "src": [32,32], "f": 0, "t": 11, "d": [278,5], "a": 1 },
{ "px": [192,0], "src": [32,32], "f": 0, "t": 11, "d": [278,6], "a": 1 },
{ "px": [224,0], "src": [32,32], "f": 0, "t": 11, "d": [278,7], "a": 1 },
{ "px": [256,0], "src": [32,32], "f": 0, "t": 11, "d": [278,8], "a": 1 },
{ "px": [288,0], "src": [32,32], "f": 0, "t": 11, "d": [278,9], "a": 1 },
{ "px": [320,0], "src": [32,32], "f": 0, "t": 11, "d": [278,10], "a": 1 },
{ "px": [352,0], "src": [32,32], "f": 0, "t": 11, "d": [278,11], "a": 1 },
{ "px": [384,0], "src": [32,32], "f": 0, "t": 11, "d": [278,12], "a": 1 },
{ "px": [416,0], "src": [32,32], "f": 0, "t": 11, "d": [278,13], "a": 1 },
{ "px": [448,0], "src": [32,32], "f": 0, "t": 11, "d": [278,14], "a": 1 },
{ "px": [1056,0], "src": [32,32], "f": 0, "t": 11, "d": [278,33], "a": 1 },
{ "px": [1088,0], "src": [32,32], "f": 0, "t": 11, "d": [278,34], "a": 1 },
{ "px": [1120,0], "src": [32,32], "f": 0, "t": 11, "d": [278,35], "a": 1 },
{ "px": [1152,0], "src": [32,32], "f": 0, "t": 11, "d": [278,36], "a": 1 },
{ "px": [1184,0], "src": [32,32], "f": 0, "t": 11, "d": [278,37], "a": 1 },
{ "px": [1216,0], "src": [32,32], "f": 0, "t": 11, "d": [278,38], "a": 1 },
{ "px": [1248,0], "src": [32,32], "f": 0, "t": 11, "d": [278,39], "a": 1 },
{ "px": [1280,0], "src": [32,32], "f": 0, "t": 11, "d": [278,40], "a": 1 },
{ "px": [1312,0], "src": [32,32], "f": 0, "t": 11, "d": [278,41], "a": 1 },
{ "px": [1344,0], "src": [32,32], "f": 0, "t": 11, "d": [278,42], "a": 1 },
{ "px": [1376,0], "src": [32,32], "f": 0, "t": 11, "d": [278,43], "a": 1 },
{ "px": [1408,0], "src": [32,32], "f": 0, "t": 11, "d": [278,44], "a": 1 },
{ "px": [1440,0], "src": [32,32], "f": 0, "t": 11, "d": [278,45], "a": 1 },
{ "px": [1472,0], "src": [32,32], "f": 0, "t": 11, "d": [278,46], "a": 1 },
{ "px": [1504,0], "src": [32,32], "f": 0, "t": 11, "d": [278,47], "a": 1 },
{ "px": [0,32], "src": [32,32], "f": 0, "t": 11, "d": [278,48], "a": 1 },
{ "px": [32,32], "src": [32,32], "f": 0, "t": 11, "d": [278,49], "a": 1 },
{ "px": [64,32], "src": [32,32], "f": 0, "t": 11, "d": [278,50], "a": 1 },
{ "px": [96,32], "src": [32,32], "f": 0, "t": 11, "d": [278,51], "a": 1 },
{ "px": [128,32], "src": [32,32], "f": 0, "t": 11, "d": [278,52], "a": 1 },
{ "px": [160,32], "src": [32,32], "f": 0, "t": 11, "d": [278,53], "a": 1 },
{ "px": [192,32], "src": [32,32], "f": 0, "t": 11, "d": [278,54], "a": 1 },
{ "px": [224,32], "src": [32,32], "f": 0, "t": 11, "d": [278,55], "a": 1 },
{ "px": [256,32], "src": [32,32], "f": 0, "t": 11, "d": [278,56], "a": 1 },
{ "px": [288,32], "src": [32,32], "f": 0, "t": 11, "d": [278,57], "a": 1 },
{ "px": [320,32], "src": [32,32], "f": 0, "t": 11, "d": [278,58], "a": 1 },
{ "px": [352,32], "src": [32,32], "f": 0, "t": 11, "d": [278,59], "a": 1 },
{ "px": [384,32], "src": [32,32], "f": 0, "t": 11, "d": [278,60], "a": 1 },
{ "px": [416,32], "src": [32,32], "f": 0, "t": 11, "d": [278,61], "a": 1 },
{ "px": [448,32], "src": [32,32], "f": 0, "t": 11, "d": [278,62], "a": 1 },
{ "px": [1056,32], "src": [32,32], "f": 0, "t": 11, "d": [278,81], "a": 1 },
{ "px": [1088,32], "src": [32,32], "f": 0, "t": 11, "d": [278,82], "a": 1 },
{ "px": [1120,32], "src": [32,32], "f": 0, "t": 11, "d": [278,83], "a": 1 },
{ "px": [1152,32], "src": [32,32], "f": 0, "t": 11, "d": [278,84], "a": 1 },
{ "px": [1184,32], "src": [32,32], "f": 0, "t": 11, "d": [278,85], "a": 1 },
{ "px": [1216,32], "src": [32,32], "f": 0, "t": 11, "d": [278,86], "a": 1 },
{ "px": [1248,32], "src": [32,32], "f": 0, "t": 11, "d": [278,87], "a": 1 },
{ "px": [1280,32], "src": [32,32], "f": 0, "t": 11, "d": [278,88], "a": 1 },
{ "px": [1312,32], "src": [32,32], "f": 0, "t": 11, "d": [278,89], "a": 1 },
{ "px": [1344,32], "src": [32,32], "f": 0, "t": 11, "d": [278,90], "a": 1 },
{ "px": [1376,32], "src": [32,32], "f": 0, "t": 11, "d": [278,91], "a": 1 },
{ "px": [1408,32], "src": [32,32], "f": 0, "t": 11, "d": [278,92], "a": 1 },
{ "px": [1440,32], "src": [32,32], "f": 0, "t": 11, "d": [278,93], "a": 1 },
{ "px": [1472,32], "src": [32,32], "f": 0, "t": 11, "d": [278,94], "a": 1 },
{ "px": [1504,32], "src": [32,32], "f": 0, "t": 11, "d": [278,95], "a": 1 },
{ "px": [0,64], "src": [32,32], "f": 0, "t": 11, "d": [278,96], "a": 1 },
{ "px": [32,64], "src": [32,32], "f": 0, "t": 11, "d": [278,97], "a": 1 },
{ "px": [64,64], "src": [32,32], "f": 0, "t": 11, "d": [278,98], "a": 1 },
{ "px": [96,64], "src": [32,32], "f": 0, "t": 11, "d": [278,99], "a": 1 },
{ "px": [128,64], "src": [32,32], "f": 0, "t": 11, "d": [278,100], "a": 1 },
{ "px": [160,64], "src": [32,32], "f": 0, "t": 11, "d": [278,101], "a": 1 },
{ "px": [192,64], "src": [32,32], "f": 0, "t": 11, "d": [278,102], "a": 1 },
{ "px": [224,64], "src": [32,32], "f": 0, "t": 11, "d": [278,103], "a": 1 },
{ "px": [256,64], "src": [32,32], "f": 0, "t": 11, "d": [278,104], "a": 1 },
{ "px": [288,64], "src": [32,32], "f": 0, "t": 11, "d": [278,105], "a": 1 },
{ "px": [320,64], "src": [32,32], "f": 0, "t": 11, "d": [278,106], "a": 1 },
{ "px": [352,64], "src": [32,32], "f": 0, "t": 11, "d": [278,107], "a": 1 },
{ "px": [384,64], "src": [32,32], "f": 0, "t": 11, "d": [278,108], "a": 1 },
{ "px": [416,64], "src": [32,32], "f": 0, "t": 11, "d": [278,109], "a": 1 },
{ "px": [448,64], "src": [32,32], "f": 0, "t": 11, "d": [278,110], "a": 1 },
{ "px": [1056,64], "src": [32,32], "f": 0, "t": 11, "d": [278,129], "a": 1 },
{ "px": [1088,64], "src": [32,32], "f": 0, "t": 11, "d": [278,130], "a": 1 },
{ "px": [1120,64], "src": [32,32], "f": 0, "t": 11, "d": [278,131], "a": 1 },
{ "px": [1152,64], "src": [32,32], "f": 0, "t": 11, "d": [278,132], "a": 1 },
{ "px": [1184,64], "src": [32,32], "f": 0, "t": 11, "d": [278,133], "a": 1 },
{ "px": [1216,64], "src": [32,32], "f": 0, "t": 11, "d": [278,134], "a": 1 },
{ "px": [1248,64], "src": [32,32], "f": 0, "t": 11, "d": [278,135], "a": 1 },
{ "px": [1280,64], "src": [32,32], "f": 0, "t": 11, "d": [278,136], "a": 1 },
{ "px": [1312,64], "src": [32,32], "f": 0, "t": 11, "d": [278,137], "a": 1 },
{ "px": [1344,64], "src": [32,32], "f": 0, "t": 11, "d": [278,138], "a": 1 },
{ "px": [1376,64], "src": [32,32], "f": 0, "t": 11, "d": [278,139], "a": 1 },
{ "px": [1408,64], "src": [32,32], "f": 0, "t": 11, "d": [278,140], "a": 1 },
{ "px": [1440,64], "src": [32,32], "f": 0, "t": 11, "d": [278,141], "a": 1 },
{ "px": [1472,64], "src": [32,32], "f": 0, "t": 11, "d": [278,142], "a": 1 },
{ "px": [1504,64], "src": [32,32], "f": 0, "t": 11, "d": [278,143], "a": 1 },
{ "px": [0,96], "src": [32,32], "f": 0, "t": 11, "d": [278,144], "a": 1 },
{ "px": [32,96], "src": [32,32], "f": 0, "t": 11, "d": [278,145], "a": 1 },
{ "px": [64,96], "src": [32,32], "f": 0, "t": 11, "d": [278,146], "a": 1 },
{ "px": [96,96], "src": [32,32], "f": 0, "t": 11, "d": [278,147], "a": 1 },
{ "px": [128,96], "src": [32,32], "f": 0, "t": 11, "d": [278,148], "a": 1 },
{ "px": [160,96], "src": [32,32], "f": 0, "t": 11, "d": [278,149], "a": 1 },
{ "px": [192,96], "src": [32,32], "f": 0, "t": 11, "d": [278,150], "a": 1 },
{ "px": [224,96], "src": [32,32], "f": 0, "t": 11, "d": [278,151], "a": 1 },
{ "px": [256,96], "src": [32,32], "f": 0, "t": 11, "d": [278,152], "a": 1 },
{ "px": [288,96], "src": [32,32], "f": 0, "t": 11, "d": [278,153], "a": 1 },
{ "px": [320,96], "src": [32,32], "f": 0, "t": 11, "d": [278,154], "a": 1 },
{ "px": [352,96], "src": [32,32], "f": 0, "t": 11, "d": [278,155], "a": 1 },
{ "px": [384,96], "src": [32,32], "f": 0, "t": 11, "d": [278,156], "a": 1 },
{ "px": [416,96], "src": [32,32], "f": 0, "t": 11, "d": [278,157], "a": 1 },
{ "px": [448,96], "src": [32,32], "f": 0, "t": 11, "d": [278,158], "a": 1 },
{ "px": [480,96], "src": [32,32], "f": 0, "t": 11, "d": [278,159], "a": 1 },
{ "px": [1088,96], "src": [32,32], "f": 0, "t": 11, "d": [278,178], "a": 1 },
{ "px": [1120,96], "src": [32,32], "f": 0, "t": 11, "d": [278,179], "a": 1 },
{ "px": [1152,96], "src": [32,32], "f": 0, "t": 11, "d": [278,180], "a": 1 },
{ "px": [1184,96], "src": [32,32], "f": 0, "t": 11, "d": [278,181], "a": 1 },
{ "px": [1216,96], "src": [32,32], "f": 0, "t": 11, "d": [278,182], "a": 1 },
{ "px": [1248,96], "src": [32,32], "f": 0, "t": 11, "d": [278,183], "a": 1 },
{ "px": [1280,96], "src": [32,32], "f": 0, "t": 11, "d": [278,184], "a": 1 },
{ "px": [1312,96], "src": [32,32], "f": 0, "t": 11, "d": [278,185], "a": 1 },
{ "px": [1344,96], "src": [32,32], "f": 0, "t": 11, "d": [278,186], "a": 1 },
{ "px": [1376,96], "src": [32,32], "f": 0, "t": 11, "d": [278,187], "a": 1 },
{ "px": [1408,96], "src": [32,32], "f": 0, "t": 11, "d": [278,188], "a": 1 },
{ "px": [1440,96], "src": [32,32], "f": 0, "t": 11, "d": [278,189], "a": 1 },
{ "px": [1472,96], "src": [32,32], "f": 0, "t": 11, "d": [278,190], "a": 1 },
{ "px": [1504,96], "src": [32,32], "f": 0, "t": 11, "d": [278,191], "a": 1 },
{ "px": [0,128], "src": [32,32], "f": 0, "t": 11, "d": [278,192], "a": 1 },
{ "px": [32,128], "src": [32,32], "f": 0, "t": 11, "d": [278,193], "a": 1 },
{ "px": [64,128], "src": [32,32], "f": 0, "t": 11, "d": [278,194], "a": 1 },
{ "px": [96,128], "src": [32,32], "f": 0, "t": 11, "d": [278,195], "a": 1 },
{ "px": [128,128], "src": [32,32], "f": 0, "t": 11, "d": [278,196], "a": 1 },
{ "px": [160,128], "src": [32,32], "f": 0, "t": 11, "d": [278,197], "a": 1 },
{ "px": [192,128], "src": [32,32], "f": 0, "t": 11, "d": [278,198], "a": 1 },
{ "px": [224,128], "src": [32,32], "f": 0, "t": 11, "d": [278,199], "a": 1 },
{ "px": [256,128], "src": [32,32], "f": 0, "t": 11, "d": [278,200], "a": 1 },
{ "px": [288,128], "src": [32,32], "f": 0, "t": 11, "d": [278,201], "a": 1 },
{ "px": [320,128], "src": [32,32], "f": 0, "t": 11, "d": [278,202], "a": 1 },
{ "px": [352,128], "src": [32,32], "f": 0, "t": 11, "d": [278,203], "a": 1 },
{ "px": [384,128], "src": [32,32], "f": 0, "t": 11, "d": [278,204], "a": 1 },
{ "px": [416,128], "src": [32,32], "f": 0, "t": 11, "d": [278,205], "a": 1 },
{ "px": [448,128], "src": [32,32], "f": 0, "t": 11, "d": [278,206], "a": 1 },
{ "px": [480,128], "src": [32,32], "f": 0, "t": 11, "d": [278,207], "a": 1 },
{ "px": [1120,128], "src": [32,32], "f": 0, "t": 11, "d": [278,227], "a": 1 },
{ "px": [1152,128], "src": [32,32], "f": 0, "t": 11, "d": [278,228], "a": 1 },
{ "px": [1184,128], "src": [32,32], "f": 0, "t": 11, "d": [278,229], "a": 1 },
{ "px": [1216,128], "src": [32,32], "f": 0, "t": 11, "d": [278,230], "a": 1 },
{ "px": [1248,128], "src": [32,32], "f": 0, "t": 11, "d": [278,231], "a": 1 },
{ "px": [1280,128], "src": [32,32], "f": 0, "t": 11, "d": [278,232], "a": 1 },
{ "px": [1312,128], "src": [32,32], "f": 0, "t": 11, "d": [278,233], "a": 1 },
{ "px": [1344,128], "src": [32,32], "f": 0, "t": 11, "d": [278,234], "a": 1 },
{ "px": [1376,128], "src": [32,32], "f": 0, "t": 11, "d": [278,235], "a": 1 },
{ "px": [1408,128], "src": [32,32], "f": 0, "t": 11, "d": [278,236], "a": 1 },
{ "px": [1440,128], "src": [32,32], "f": 0, "t": 11, "d": [278,237], "a": 1 },
{ "px": [1472,128], "src": [32,32], "f": 0, "t": 11, "d": [278,238], "a": 1 },
{ "px": [1504,128], "src": [32,32], "f": 0, "t": 11, "d": [278,239], "a": 1 },
{ "px": [0,160], "src": [32,32], "f": 0, "t": 11, "d": [278,240], "a": 1 },
{ "px": [32,160], "src": [32,32], "f": 0, "t": 11, "d": [278,241], "a": 1 },
{ "px": [64,160], "src": [32,32], "f": 0, "t": 11, "d": [278,242], "a": 1 },
{ "px": [96,160], "src": [32,32], "f": 0, "t": 11, "d": [278,243], "a": 1 },
{ "px": [128,160], "src": [32,32], "f": 0, "t": 11, "d": [278,244], "a": 1 },
{ "px": [160,160], "src": [32,32], "f": 0, "t": 11, "d": [278,245], "a": 1 },
{ "px": [192,160], "src": [32,32], "f": 0, "t": 11, "d": [278,246], "a": 1 },
{ "px": [224,160], "src": [32,32], "f": 0, "t": 11, "d": [278,247], "a": 1 },
{ "px": [256,160], "src": [32,32], "f": 0, "t": 11, "d": [278,248], "a": 1 },
{ "px": [288,160], "src": [32,32], "f": 0, "t": 11, "d": [278,249], "a": 1 },
{ "px": [320,160], "src": [32,32], "f": 0, "t": 11, "d": [278,250], "a": 1 },
{ "px": [352,160], "src": [32,32], "f": 0, "t": 11, "d": [278,251], "a": 1 },
{ "px": [384,160], "src": [32,32], "f": 0, "t": 11, "d": [278,252], "a": 1 },
{ "px": [416,160], "src": [32,32], "f": 0, "t": 11, "d": [278,253], "a": 1 },
{ "px": [448,160], "src": [32,32], "f": 0, "t": 11, "d": [278,254], "a": 1 },
{ "px": [1120,160], "src": [32,32], "f": 0, "t": 11, "d": [278,275], "a": 1 },
{ "px": [1152,160], "src": [32,32], "f": 0, "t": 11, "d": [278,276], "a": 1 },
{ "px": [1184,160], "src": [32,32], "f": 0, "t": 11, "d": [278,277], "a": 1 },
{ "px": [1216,160], "src": [32,32], "f": 0, "t": 11, "d": [278,278], "a": 1 },
{ "px": [1248,160], "src": [32,32], "f": 0, "t": 11, "d": [278,279], "a": 1 },
{ "px": [1280,160], "src": [32,32], "f": 0, "t": 11, "d": [278,280], "a": 1 },
{ "px": [1312,160], "src": [32,32], "f": 0, "t": 11, "d": [278,281], "a": 1 },
{ "px": [1344,160], "src": [32,32], "f": 0, "t": 11, "d": [278,282], "a": 1 },
{ "px": [1376,160], "src": [32,32], "f": 0, "t": 11, "d": [278,283], "a": 1 },
{ "px": [1408,160], "src": [32,32], "f": 0, "t": 11, "d": [278,284], "a": 1 },
{ "px": [1440,160], "src": [32,32], "f": 0, "t": 11, "d": [278,285], "a": 1 },
{ "px": [1472,160], "src": [32,32], "f": 0, "t": 11, "d": [278,286], "a": 1 },
{ "px": [1504,160], "src": [32,32], "f": 0, "t": 11, "d": [278,287], "a": 1 },
{ "px": [0,192], "src": [32,32], "f": 0, "t": 11, "d": [278,288], "a": 1 },
{ "px": [32,192], "src": [32,32], "f": 0, "t": 11, "d": [278,289], "a": 1 },
{ "px": [64,192], "src": [32,32], "f": 0, "t": 11, "d": [278,290], "a": 1 },
{ "px": [96,192], "src": [32,32], "f": 0, "t": 11, "d": [278,291], "a": 1 },
{ "px": [128,192], "src": [32,32], "f": 0, "t": 11, "d": [278,292], "a": 1 },
{ "px": [160,192], "src": [32,32], "f": 0, "t": 11, "d": [278,293], "a": 1 },
{ "px": [192,192], "src": [32,32], "f": 0, "t": 11, "d": [278,294], "a": 1 },
{ "px": [224,192], "src": [32,32], "f": 0, "t": 11, "d": [278,295], "a": 1 },
{ "px": [256,192], "src": [32,32], "f": 0, "t": 11, "d": [278,296], "a": 1 },
{ "px": [288,192], "src": [32,32], "f": 0, "t": 11, "d": [278,297], "a": 1 },
{ "px": [320,192], "src": [32,32], "f": 0, "t": 11, "d": [278,298], "a": 1 },
{ "px": [352,192], "src": [32,32], "f": 0, "t": 11, "d": [278,299], "a": 1 },
{ "px": [384,192], "src": [32,32], "f": 0, "t": 11, "d": [278,300], "a": 1 },
{ "px": [416,192], "src": [32,32], "f": 0, "t": 11, "d": [278,301], "a": 1 },
{ "px": [448,192], "src": [32,32], "f": 0, "t": 11, "d": [278,302], "a": 1 },
{ "px": [1120,192], "src": [32,32], "f": 0, "t": 11, "d": [278,323], "a": 1 },
{ "px": [1152,192], "src": [32,32], "f": 0, "t": 11, "d": [278,324], "a": 1 },
{ "px": [1184,192], "src": [32,32], "f": 0, "t": 11, "d": [278,325], "a": 1 },
{ "px": [1216,192], "src": [32,32], "f": 0, "t": 11, "d": [278,326], "a": 1 },
{ "px": [1248,192], "src": [32,32], "f": 0, "t": 11, "d": [278,327], "a": 1 },
{ "px": [1280,192], "src": [32,32], "f": 0, "t": 11, "d": [278,328], "a": 1 },
{ "px": [1312,192], "src": [32,32], "f": 0, "t": 11, "d": [278,329], "a": 1 },
{ "px": [1344,192], "src": [32,32], "f": 0, "t": 11, "d": [278,330], "a": 1 },
{ "px": [1376,192], "src": [32,32], "f": 0, "t": 11, "d": [278,331], "a": 1 },
{ "px": [1408,192], "src": [32,32], "f": 0, "t": 11, "d": [278,332], "a": 1 },
{ "px": [1440,192], "src": [32,32], "f": 0, "t": 11, "d": [278,333], "a": 1 },
{ "px": [1472,192], "src": [32,32], "f": 0, "t": 11, "d": [278,334], "a": 1 },
{ "px": [1504,192], "src": [32,32], "f": 0, "t": 11, "d": [278,335], "a": 1 },
{ "px": [0,224], "src": [32,32], "f": 0, "t": 11, "d": [278,336], "a": 1 },
{ "px": [32,224], "src": [32,32], "f": 0, "t": 11, "d": [278,337], "a": 1 },
{ "px": [64,224], "src": [32,32], "f": 0, "t": 11, "d": [278,338], "a": 1 },
{ "px": [96,224], "src": [32,32], "f": 0, "t": 11, "d": [278,339], "a": 1 },
{ "px": [128,224], "src": [32,32], "f": 0, "t": 11, "d": [278,340], "a": 1 },
{ "px": [160,224], "src": [32,32], "f": 0, "t": 11, "d": [278,341], "a": 1 },
{ "px": [192,224], "src": [32,32], "f": 0, "t": 11, "d": [278,342], "a": 1 },
{ "px": [224,224], "src": [32,32], "f": 0, "t": 11, "d": [278,343], "a": 1 },
{ "px": [256,224], "src": [32,32], "f": 0, "t": 11, "d": [278,344], "a": 1 },
{ "px": [288,224], "src": [32,32], "f": 0, "t": 11, "d": [278,345], "a": 1 },
{ "px": [320,224], "src": [32,32], "f": 0, "t": 11, "d": [278,346], "a": 1 },
{ "px": [352,224], "src": [32,32], "f": 0, "t": 11, "d": [278,347], "a": 1 },
{ "px": [384,224], "src": [32,32], "f": 0, "t": 11, "d": [278,348], "a": 1 },
{ "px": [416,224], "src": [32,32], "f": 0, "t": 11, "d": [278,349], "a": 1 },
{ "px": [1152,224], "src": [32,32], "f": 0, "t": 11, "d": [278,372], "a": 1 },
{ "px": [1184,224], "src": [32,32], "f": 0, "t": 11, "d": [278,373], "a": 1 },
{ "px": [1216,224], "src": [32,32], "f": 0, "t": 11, "d": [278,374], "a": 1 },
{ "px": [1248,224], "src": [32,32], "f": 0, "t": 11, "d": [278,375], "a": 1 },
{ "px": [1280,224], "src": [32,32], "f": 0, "t": 11, "d": [278,376], "a": 1 },
{ "px": [1312,224], "src": [32,32], "f": 0, "t": 11, "d": [278,377], "a": 1 },
{ "px": [1344,224], "src": [32,32], "f": 0, "t": 11, "d": [278,378], "a": 1 },
{ "px": [1376,224], "src": [32,32], "f": 0, "t": 11, "d": [278,379], "a": 1 },
{ "px": [1408,224], "src": [32,32], "f": 0, "t": 11, "d": [278,380], "a": 1 },
{ "px": [1440,224], "src": [32,32], "f": 0, "t": 11, "d": [278,381], "a": 1 },
{ "px": [1472,224], "src": [32,32], "f": 0, "t": 11, "d": [278,382], "a": 1 },
{ "px": [1504,224], "src": [32,32], "f": 0, "t": 11, "d": [278,383], "a": 1 },
{ "px": [0,256], "src": [32,32], "f": 0, "t": 11, "d": [278,384], "a": 1 },
{ "px": [32,256], "src": [32,32], "f": 0, "t": 11, "d": [278,385], "a": 1 },
{ "px": [64,256], "src": [32,32], "f": 0, "t": 11, "d": [278,386], "a": 1 },
{ "px": [96,256], "src": [32,32], "f": 0, "t": 11, "d": [278,387], "a": 1 },
{ "px": [224,256], "src": [32,32], "f": 0, "t": 11, "d": [278,391], "a": 1 },
{ "px": [256,256], "src": [32,32], "f": 0, "t": 11, "d": [278,392], "a": 1 },
{ "px": [288,256], "src": [32,32], "f": 0, "t": 11, "d": [278,393], "a": 1 },
{ "px": [320,256], "src": [32,32], "f": 0, "t": 11, "d": [278,394], "a": 1 },
{ "px": [1216,256], "src": [32,32], "f": 0, "t": 11, "d": [278,422], "a": 1 },
{ "px": [1248,256], "src": [32,32], "f": 0, "t": 11, "d": [278,423], "a": 1 },
{ "px": [1280,256], "src": [32,32], "f": 0, "t": 11, "d": [278,424], "a": 1 },
{ "px": [1312,256], "src": [32,32], "f": 0, "t": 11, "d": [278,425], "a": 1 },
{ "px": [1344,256], "src": [32,32], "f": 0, "t": 11, "d": [278,426], "a": 1 },
{ "px": [1376,256], "src": [32,32], "f": 0, "t": 11, "d": [278,427], "a": 1 },
{ "px": [1408,256], "src": [32,32], "f": 0, "t": 11, "d": [278,428], "a": 1 },
{ "px": [1440,256], "src": [32,32], "f": 0, "t": 11, "d": [278,429], "a": 1 },
{ "px": [1472,256], "src": [32,32], "f": 0, "t": 11, "d": [278,430], "a": 1 },
{ "px": [1504,256], "src": [32,32], "f": 0, "t": 11, "d": [278,431], "a": 1 },
{ "px": [0,288], "src": [32,32], "f": 0, "t": 11, "d": [278,432], "a": 1 },
{ "px": [32,288], "src": [32,32], "f": 0, "t": 11, "d": [278,433], "a": 1 },
{ "px": [64,288], "src": [32,32], "f": 0, "t": 11, "d": [278,434], "a": 1 },
{ "px": [224,288], "src": [32,32], "f": 0, "t": 11, "d": [278,439], "a": 1 },
{ "px": [256,288], "src": [32,32], "f": 0, "t": 11, "d": [278,440], "a": 1 },
{ "px": [1280,288], "src": [32,32], "f": 0, "t": 11, "d": [278,472], "a": 1 },
{ "px": [1312,288], "src": [32,32], "f": 0, "t": 11, "d": [278,473], "a": 1 },
{ "px": [1344,288], "src": [32,32], "f": 0, "t": 11, "d": [278,474], "a": 1 },
{ "px": [1376,288], "src": [32,32], "f": 0, "t": 11, "d": [278,475], "a": 1 },
{ "px": [1408,288], "src": [32,32], "f": 0, "t": 11, "d": [278,476], "a": 1 },
{ "px": [1440,288], "src": [32,32], "f": 0, "t": 11, "d": [278,477], "a": 1 },
{ "px": [1472,288], "src": [32,32], "f": 0, "t": 11, "d": [278,478], "a": 1 },
{ "px": [1504,288], "src": [32,32], "f": 0, "t": 11, "d": [278,479], "a": 1 },
{ "px": [0,320], "src": [32,32], "f": 0, "t": 11, "d": [278,480], "a": 1 },
{ "px": [32,320], "src": [32,32], "f": 0, "t": 11, "d": [278,481], "a": 1 },
{ "px": [64,320], "src": [32,32], "f": 0, "t": 11, "d": [278,482], "a": 1 },
{ "px": [1344,320], "src": [32,32], "f": 0, "t": 11, "d": [278,522], "a": 1 },
{ "px": [1376,320], "src": [32,32], "f": 0, "t": 11, "d": [278,523], "a": 1 },
{ "px": [1408,320], "src": [32,32], "f": 0, "t": 11, "d": [278,524], "a": 1 },
{ "px": [1440,320], "src": [32,32], "f": 0, "t": 11, "d": [278,525], "a": 1 },
{ "px": [1472,320], "src": [32,32], "f": 0, "t": 11, "d": [278,526], "a": 1 },
{ "px": [1504,320], "src": [32,32], "f": 0, "t": 11, "d": [278,527], "a": 1 },
{ "px": [832,640], "src": [32,32], "f": 0, "t": 11, "d": [278,986], "a": 1 },
{ "px": [864,640], "src": [32,32], "f": 0, "t": 11, "d": [278,987], "a": 1 },
{ "px": [896,640], "src": [32,32], "f": 0, "t": 11, "d": [278,988], "a": 1 },
{ "px": [928,640], "src": [32,32], "f": 0, "t": 11, "d": [278,989], "a": 1 },
{ "px": [960,640], "src": [32,32], "f": 0, "t": 11, "d": [278,990], "a": 1 },
{ "px": [992,640], "src": [32,32], "f": 0, "t": 11, "d": [278,991], "a": 1 },
{ "px": [1024,640], "src": [32,32], "f": 0, "t": 11, "d": [278,992], "a": 1 },
{ "px": [1056,640], "src": [32,32], "f": 0, "t": 11, "d": [278,993], "a": 1 },
{ "px": [1088,640], "src": [32,32], "f": 0, "t": 11, "d": [278,994], "a": 1 },
{ "px": [1120,640], "src": [32,32], "f": 0, "t": 11, "d": [278,995], "a": 1 },
{ "px": [1152,640], "src": [32,32], "f": 0, "t": 11, "d": [278,996], "a": 1 },
{ "px": [1184,640], "src": [32,32], "f": 0, "t": 11, "d": [278,997], "a": 1 },
{ "px": [1216,640], "src": [32,32], "f": 0, "t": 11, "d": [278,998], "a": 1 },
{ "px": [0,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1008], "a": 1 },
{ "px": [32,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1009], "a": 1 },
{ "px": [64,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1010], "a": 1 },
{ "px": [96,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1011], "a": 1 },
{ "px": [128,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1012], "a": 1 },
{ "px": [160,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1013], "a": 1 },
{ "px": [192,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1014], "a": 1 },
{ "px": [224,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1015], "a": 1 },
{ "px": [256,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1016], "a": 1 },
{ "px": [288,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1017], "a": 1 },
{ "px": [320,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1018], "a": 1 },
{ "px": [352,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1019], "a": 1 },
{ "px": [384,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1020], "a": 1 },
{ "px": [416,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1021], "a": 1 },
{ "px": [736,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1031], "a": 1 },
{ "px": [768,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1032], "a": 1 },
{ "px": [800,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1033], "a": 1 },
{ "px": [832,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1034], "a": 1 },
{ "px": [864,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1035], "a": 1 },
{ "px": [896,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1036], "a": 1 },
{ "px": [928,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1037], "a": 1 },
{ "px": [960,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1038], "a": 1 },
{ "px": [992,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1039], "a": 1 },
{ "px": [1024,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1040], "a": 1 },
{ "px": [1056,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1041], "a": 1 },
{ "px": [1088,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1042], "a": 1 },
{ "px": [1120,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1043], "a": 1 },
{ "px": [1152,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1044], "a": 1 },
{ "px": [1184,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1045], "a": 1 },
{ "px": [1216,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1046], "a": 1 },
{ "px": [1248,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1047], "a": 1 },
{ "px": [1280,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1048], "a": 1 },
{ "px": [1312,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1049], "a": 1 },
{ "px": [1344,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1050], "a": 1 },
{ "px": [1376,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1051], "a": 1 },
{ "px": [1408,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1052], "a": 1 },
{ "px": [1440,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1053], "a": 1 },
{ "px": [1472,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1054], "a": 1 },
{ "px": [1504,672], "src": [32,32], "f": 0, "t": 11, "d": [278,1055], "a": 1 },
{ "px": [0,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1056], "a": 1 },
{ "px": [32,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1057], "a": 1 },
{ "px": [64,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1058], "a": 1 },
{ "px": [96,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1059], "a": 1 },
{ "px": [128,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1060], "a": 1 },
{ "px": [160,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1061], "a": 1 },
{ "px": [192,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1062], "a": 1 },
{ "px": [224,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1063], "a": 1 },
{ "px": [256,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1064], "a": 1 },
{ "px": [288,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1065], "a": 1 },
{ "px": [320,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1066], "a": 1 },
{ "px": [352,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1067], "a": 1 },
{ "px": [384,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1068], "a": 1 },
{ "px": [416,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1069], "a": 1 },
{ "px": [576,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1074], "a": 1 },
{ "px": [608,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1075], "a": 1 },
{ "px": [640,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1076], "a": 1 },
{ "px": [672,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1077], "a": 1 },
{ "px": [704,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1078], "a": 1 },
{ "px": [736,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1079], "a": 1 },
{ "px": [768,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1080], "a": 1 },
{ "px": [800,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1081], "a": 1 },
{ "px": [832,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1082], "a": 1 },
{ "px": [864,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1083], "a": 1 },
{ "px": [896,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1084], "a": 1 },
{ "px": [928,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1085], "a": 1 },
{ "px": [960,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1086], "a": 1 },
{ "px": [992,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1087], "a": 1 },
{ "px": [1024,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1088], "a": 1 },
{ "px": [1056,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1089], "a": 1 },
{ "px": [1088,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1090], "a": 1 },
{ "px": [1120,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1091], "a": 1 },
{ "px": [1152,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1092], "a": 1 },
{ "px": [1184,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1093], "a": 1 },
{ "px": [1216,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1094], "a": 1 },
{ "px": [1248,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1095], "a": 1 },
{ "px": [1280,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1096], "a": 1 },
{ "px": [1312,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1097], "a": 1 },
{ "px": [1344,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1098], "a": 1 },
{ "px": [1376,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1099], "a": 1 },
{ "px": [1408,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1100], "a": 1 },
{ "px": [1440,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1101], "a": 1 },
{ "px": [1472,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1102], "a": 1 },
{ "px": [1504,704], "src": [32,32], "f": 0, "t": 11, "d": [278,1103], "a": 1 },
{ "px": [0,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1104], "a": 1 },
{ "px": [32,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1105], "a": 1 },
{ "px": [64,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1106], "a": 1 },
{ "px": [96,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1107], "a": 1 },
{ "px": [128,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1108], "a": 1 },
{ "px": [160,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1109], "a": 1 },
{ "px": [192,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1110], "a": 1 },
{ "px": [224,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1111], "a": 1 },
{ "px": [256,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1112], "a": 1 },
{ "px": [288,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1113], "a": 1 },
{ "px": [320,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1114], "a": 1 },
{ "px": [352,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1115], "a": 1 },
{ "px": [384,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1116], "a": 1 },
{ "px": [416,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1117], "a": 1 },
{ "px": [448,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1118], "a": 1 },
{ "px": [480,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1119], "a": 1 },
{ "px": [512,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1120], "a": 1 },
{ "px": [544,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1121], "a": 1 },
{ "px": [576,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1122], "a": 1 },
{ "px": [608,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1123], "a": 1 },
{ "px": [640,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1124], "a": 1 },
{ "px": [672,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1125], "a": 1 },
{ "px": [704,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1126], "a": 1 },
{ "px": [736,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1127], "a": 1 },
{ "px": [768,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1128], "a": 1 },
{ "px": [800,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1129], "a": 1 },
{ "px": [832,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1130], "a": 1 },
{ "px": [864,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1131], "a": 1 },
{ "px": [896,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1132], "a": 1 },
{ "px": [928,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1133], "a": 1 },
{ "px": [960,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1134], "a": 1 },
{ "px": [992,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1135], "a": 1 },
{ "px": [1024,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1136], "a": 1 },
{ "px": [1056,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1137], "a": 1 },
{ "px": [1088,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1138], "a": 1 },
{ "px": [1120,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1139], "a": 1 },
{ "px": [1152,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1140], "a": 1 },
{ "px": [1184,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1141], "a": 1 },
{ "px": [1216,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1142], "a": 1 },
{ "px": [1248,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1143], "a": 1 },
{ "px": [1280,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1144], "a": 1 },
{ "px": [1312,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1145], "a": 1 },
{ "px": [1344,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1146], "a": 1 },
{ "px": [1376,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1147], "a": 1 },
{ "px": [1408,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1148], "a": 1 },
{ "px": [1440,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1149], "a": 1 },
{ "px": [1472,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1150], "a": 1 },
{ "px": [1504,736], "src": [32,32], "f": 0, "t": 11, "d": [278,1151], "a": 1 },
{ "px": [1056,96], "src": [160,32], "f": 0, "t": 15, "d": [277,177], "a": 1 },
{ "px": [1088,128], "src": [160,32], "f": 0, "t": 15, "d": [277,226], "a": 1 },
{ "px": [1120,224], "src": [160,32], "f": 0, "t": 15, "d": [277,371], "a": 1 },
{ "px": [192,256], "src": [160,32], "f": 0, "t": 15, "d": [277,390], "a": 1 },
{ "px": [1184,256], "src": [160,32], "f": 0, "t": 15, "d": [277,421], "a": 1 },
{ "px": [1248,288], "src": [160,32], "f": 0, "t": 15, "d": [277,471], "a": 1 },
{ "px": [1312,320], "src": [160,32], "f": 0, "t": 15, "d": [277,521], "a": 1 },
{ "px": [32,352], "src": [160,32], "f": 0, "t": 15, "d": [277,529], "a": 1 },
{ "px": [480,160], "src": [128,32], "f": 0, "t": 14, "d": [276,255], "a": 1 },
{ "px": [448,224], "src": [128,32], "f": 0, "t": 14, "d": [276,350], "a": 1 },
{ "px": [128,256], "src": [128,32], "f": 0, "t": 14, "d": [276,388], "a": 1 },
{ "px": [352,256], "src": [128,32], "f": 0, "t": 14, "d": [276,395], "a": 1 },
{ "px": [96,288], "src": [128,32], "f": 0, "t": 14, "d": [276,435], "a": 1 },
{ "px": [288,288], "src": [128,32], "f": 0, "t": 14, "d": [276,441], "a": 1 },
{ "px": [64,352], "src": [128,32], "f": 0, "t": 14, "d": [276,530], "a": 1 },
{ "px": [480,64], "src": [128,64], "f": 0, "t": 24, "d": [275,111], "a": 1 },
{ "px": [1248,640], "src": [128,64], "f": 0, "t": 24, "d": [275,999], "a": 1 },
{ "px": [448,704], "src": [128,64], "f": 0, "t": 24, "d": [275,1070], "a": 1 },
{ "px": [800,640], "src": [160,64], "f": 0, "t": 25, "d": [274,985], "a": 1 },
{ "px": [704,672], "src": [160,64], "f": 0, "t": 25, "d": [274,1030], "a": 1 },
{ "px": [544,704], "src": [160,64], "f": 0, "t": 25, "d": [274,1073], "a": 1 },
{ "px": [1024,0], "src": [0,32], "f": 0, "t": 10, "d": [273,32], "a": 1 },
{ "px": [1024,32], "src": [0,32], "f": 0, "t": 10, "d": [273,80], "a": 1 },
{ "px": [1024,64], "src": [0,32], "f": 0, "t": 10, "d": [273,128], "a": 1 },
{ "px": [1088,160], "src": [0,32], "f": 0, "t": 10, "d": [273,274], "a": 1 },
{ "px": [1088,192], "src": [0,32], "f": 0, "t": 10, "d": [273,322], "a": 1 },
{ "px": [192,288], "src": [0,32], "f": 0, "t": 10, "d": [273,438], "a": 1 },
{ "px": [160,256], "src": [32,64], "f": 0, "t": 21, "d": [272,389], "a": 1 },
{ "px": [384,256], "src": [32,64], "f": 0, "t": 21, "d": [272,396], "a": 1 },
{ "px": [416,256], "src": [32,64], "f": 0, "t": 21, "d": [272,397], "a": 1 },
{ "px": [1152,256], "src": [32,64], "f": 0, "t": 21, "d": [272,420], "a": 1 },
{ "px": [320,288], "src": [32,64], "f": 0, "t": 21, "d": [272,442], "a": 1 },
{ "px": [1216,288], "src": [32,64], "f": 0, "t": 21, "d": [272,470], "a": 1 },
{ "px": [224,320], "src": [32,64], "f": 0, "t": 21, "d": [272,487], "a": 1 },
{ "px": [256,320], "src": [32,64], "f": 0, "t": 21, "d": [272,488], "a": 1 },
{ "px": [1280,320], "src": [32,64], "f": 0, "t": 21, "d": [272,520], "a": 1 },
{ "px": [0,352], "src": [32,64], "f": 0, "t": 21, "d": [272,528], "a": 1 },
{ "px": [1344,352], "src": [32,64], "f": 0, "t": 21, "d": [272,570], "a": 1 },
{ "px": [1376,352], "src": [32,64], "f": 0, "t": 21, "d": [272,571], "a": 1 },
{ "px": [1408,352], "src": [32,64], "f": 0, "t": 21, "d": [272,572], "a": 1 },
{ "px": [1440,352], "src": [32,64], "f": 0, "t": 21, "d": [272,573], "a": 1 },
{ "px": [1472,352], "src": [32,64], "f": 0, "t": 21, "d": [272,574], "a": 1 },
{ "px": [1504,352], "src": [32,64], "f": 0, "t": 21, "d": [272,575], "a": 1 },
{ "px": [480,0], "src": [64,32], "f": 0, "t": 12, "d": [271,15], "a": 1 },
{ "px": [480,32], "src": [64,32], "f": 0, "t": 12, "d": [271,63], "a": 1 },
{ "px": [512,96], "src": [64,32], "f": 0, "t": 12, "d": [271,160], "a": 1 },
{ "px": [512,128], "src": [64,32], "f": 0, "t": 12, "d": [271,208], "a": 1 },
{ "px": [480,192], "src": [64,32], "f": 0, "t": 12, "d": [271,303], "a": 1 },
{ "px": [96,320], "src": [64,32], "f": 0, "t": 12, "d": [271,483], "a": 1 },
{ "px": [64,384], "src": [64,32], "f": 0, "t": 12, "d": [271,578], "a": 1 },
{ "px": [448,672], "src": [64,32], "f": 0, "t": 12, "d": [271,1022], "a": 1 },
{ "px": [832,608], "src": [32,0], "f": 0, "t": 1, "d": [270,938], "a": 1 },
{ "px": [864,608], "src": [32,0], "f": 0, "t": 1, "d": [270,939], "a": 1 },
{ "px": [896,608], "src": [32,0], "f": 0, "t": 1, "d": [270,940], "a": 1 },
{ "px": [928,608], "src": [32,0], "f": 0, "t": 1, "d": [270,941], "a": 1 },
{ "px": [960,608], "src": [32,0], "f": 0, "t": 1, "d": [270,942], "a": 1 },
{ "px": [992,608], "src": [32,0], "f": 0, "t": 1, "d": [270,943], "a": 1 },
{ "px": [1024,608], "src": [32,0], "f": 0, "t": 1, "d": [270,944], "a": 1 },
{ "px": [1056,608], "src": [32,0], "f": 0, "t": 1, "d": [270,945], "a": 1 },
{ "px": [1088,608], "src": [32,0], "f": 0, "t": 1, "d": [270,946], "a": 1 },
{ "px": [1120,608], "src": [32,0], "f": 0, "t": 1, "d": [270,947], "a": 1 },
{ "px": [1152,608], "src": [32,0], "f": 0, "t": 1, "d": [270,948], "a": 1 },
{ "px": [1184,608], "src": [32,0], "f": 0, "t": 1, "d": [270,949], "a": 1 },
{ "px": [1216,608], "src": [32,0], "f": 0, "t": 1, "d": [270,950], "a": 1 },
{ "px": [0,640], "src": [32,0], "f": 0, "t": 1, "d": [270,960], "a": 1 },
{ "px": [32,640], "src": [32,0], "f": 0, "t": 1, "d": [270,961], "a": 1 },
{ "px": [64,640], "src": [32,0], "f": 0, "t": 1, "d": [270,962], "a": 1 },
{ "px": [96,640], "src": [32,0], "f": 0, "t": 1, "d": [270,963], "a": 1 },
{ "px": [128,640], "src": [32,0], "f": 0, "t": 1, "d": [270,964], "a": 1 },
{ "px": [160,640], "src": [32,0], "f": 0, "t": 1, "d": [270,965], "a": 1 },
{ "px": [192,640], "src": [32,0], "f": 0, "t": 1, "d": [270,966], "a": 1 },
{ "px": [224,640], "src": [32,0], "f": 0, "t": 1, "d": [270,967], "a": 1 },
{ "px": [256,640], "src": [32,0], "f": 0, "t": 1, "d": [270,968], "a": 1 },
{ "px": [288,640], "src": [32,0], "f": 0, "t": 1, "d": [270,969], "a": 1 },
{ "px": [320,640], "src": [32,0], "f": 0, "t": 1, "d": [270,970], "a": 1 },
{ "px": [352,640], "src": [32,0], "f": 0, "t": 1, "d": [270,971], "a": 1 },
{ "px": [384,640], "src": [32,0], "f": 0, "t": 1, "d": [270,972], "a": 1 },
{ "px": [416,640], "src": [32,0], "f": 0, "t": 1, "d": [270,973], "a": 1 },
{ "px": [736,640], "src": [32,0], "f": 0, "t": 1, "d": [270,983], "a": 1 },
{ "px": [768,640], "src": [32,0], "f": 0, "t": 1, "d": [270,984], "a": 1 },
{ "px": [1280,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1000], "a": 1 },
{ "px": [1312,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1001], "a": 1 },
{ "px": [1344,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1002], "a": 1 },
{ "px": [1376,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1003], "a": 1 },
{ "px": [1408,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1004], "a": 1 },
{ "px": [1440,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1005], "a": 1 },
{ "px": [1472,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1006], "a": 1 },
{ "px": [1504,640], "src": [32,0], "f": 0, "t": 1, "d": [270,1007], "a": 1 },
{ "px": [576,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1026], "a": 1 },
{ "px": [608,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1027], "a": 1 },
{ "px": [640,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1028], "a": 1 },
{ "px": [672,672], "src": [32,0], "f": 0, "t": 1, "d": [270,1029], "a": 1 },
{ "px": [480,704], "src": [32,0], "f": 0, "t": 1, "d": [270,1071], "a": 1 },
{ "px": [512,704], "src": [32,0], "f": 0, "t": 1, "d": [270,1072], "a": 1 },
{ "px": [1024,96], "src": [0,64], "f": 0, "t": 20, "d": [269,176], "a": 1 },
{ "px": [1056,128], "src": [0,64], "f": 0, "t": 20, "d": [269,225], "a": 1 },
{ "px": [1088,224], "src": [0,64], "f": 0, "t": 20, "d": [269,370], "a": 1 },
{ "px": [1120,256], "src": [0,64], "f": 0, "t": 20, "d": [269,419], "a": 1 },
{ "px": [1184,288], "src": [0,64], "f": 0, "t": 20, "d": [269,469], "a": 1 },
{ "px": [192,320], "src": [0,64], "f": 0, "t": 20, "d": [269,486], "a": 1 },
{ "px": [1248,320], "src": [0,64], "f": 0, "t": 20, "d": [269,519], "a": 1 },
{ "px": [1312,352], "src": [0,64], "f": 0, "t": 20, "d": [269,569], "a": 1 },
{ "px": [32,384], "src": [0,64], "f": 0, "t": 20, "d": [269,577], "a": 1 },
{ "px": [512,160], "src": [64,64], "f": 0, "t": 22, "d": [268,256], "a": 1 },
{ "px": [480,224], "src": [64,64], "f": 0, "t": 22, "d": [268,351], "a": 1 },
{ "px": [448,256], "src": [64,64], "f": 0, "t": 22, "d": [268,398], "a": 1 },
{ "px": [128,288], "src": [64,64], "f": 0, "t": 22, "d": [268,436], "a": 1 },
{ "px": [352,288], "src": [64,64], "f": 0, "t": 22, "d": [268,443], "a": 1 },
{ "px": [288,320], "src": [64,64], "f": 0, "t": 22, "d": [268,489], "a": 1 },
{ "px": [96,352], "src": [64,64], "f": 0, "t": 22, "d": [268,531], "a": 1 },
{ "px": [512,64], "src": [64,0], "f": 0, "t": 2, "d": [267,112], "a": 1 },
{ "px": [1248,608], "src": [64,0], "f": 0, "t": 2, "d": [267,951], "a": 1 },
{ "px": [448,640], "src": [64,0], "f": 0, "t": 2, "d": [267,974], "a": 1 },
{ "px": [800,608], "src": [0,0], "f": 0, "t": 0, "d": [266,937], "a": 1 },
{ "px": [704,640], "src": [0,0], "f": 0, "t": 0, "d": [266,982], "a": 1 },
{ "px": [544,672], "src": [0,0], "f": 0, "t": 0, "d": [266,1025], "a": 1 },
{ "px": [64,416], "src": [96,64], "f": 0, "t": 23, "d": [264,626], "a": 1 },
{ "px": [832,576], "src": [32,128], "f": 0, "t": 41, "d": [280,890], "a": 1 },
{ "px": [864,576], "src": [32,128], "f": 0, "t": 41, "d": [280,891], "a": 1 },
{ "px": [896,576], "src": [64,160], "f": 0, "t": 52, "d": [280,892], "a": 1 },
{ "px": [928,576], "src": [96,160], "f": 0, "t": 53, "d": [280,893], "a": 1 },
{ "px": [960,576], "src": [0,160], "f": 0, "t": 50, "d": [280,894], "a": 1 },
{ "px": [992,576], "src": [0,160], "f": 0, "t": 50, "d": [280,895], "a": 1 },
{ "px": [1024,576], "src": [32,160], "f": 0, "t": 51, "d": [280,896], "a": 1 },
{ "px": [1056,576], "src": [64,128], "f": 0, "t": 42, "d": [280,897], "a": 1 },
{ "px": [1088,576], "src": [32,128], "f": 0, "t": 41, "d": [280,898], "a": 1 },
{ "px": [1120,576], "src": [64,128], "f": 0, "t": 42, "d": [280,899], "a": 1 },
{ "px": [1152,576], "src": [32,160], "f": 0, "t": 51, "d": [280,900], "a": 1 },
{ "px": [1184,576], "src": [0,160], "f": 0, "t": 50, "d": [280,901], "a": 1 },
{ "px": [1216,576], "src": [64,128], "f": 0, "t": 42, "d": [280,902], "a": 1 },
{ "px": [32,608], "src": [96,128], "f": 0, "t": 43, "d": [280,913], "a": 1 },
{ "px": [64,608], "src": [32,160], "f": 0, "t": 51, "d": [280,914], "a": 1 },
{ "px": [96,608], "src": [64,128], "f": 0, "t": 42, "d": [280,915], "a": 1 },
{ "px": [128,608], "src": [0,160], "f": 0, "t": 50, "d": [280,916], "a": 1 },
{ "px": [160,608], "src": [0,128], "f": 0, "t": 40, "d": [280,917], "a": 1 },
{ "px": [192,608], "src": [64,160], "f": 0, "t": 52, "d": [280,918], "a": 1 },
{ "px": [224,608], "src": [0,128], "f": 0, "t": 40, "d": [280,919], "a": 1 },
{ "px": [256,608], "src": [32,128], "f": 0, "t": 41, "d": [280,920], "a": 1 },
{ "px": [288,608], "src": [0,128], "f": 0, "t": 40, "d": [280,921], "a": 1 },
{ "px": [320,608], "src": [96,160], "f": 0, "t": 53, "d": [280,922], "a": 1 },
{ "px": [352,608], "src": [96,128], "f": 0, "t": 43, "d": [280,923], "a": 1 },
{ "px": [384,608], "src": [96,128], "f": 0, "t": 43, "d": [280,924], "a": 1 },
{ "px": [416,608], "src": [64,160], "f": 0, "t": 52, "d": [280,925], "a": 1 },
{ "px": [736,608], "src": [96,160], "f": 0, "t": 53, "d": [280,935], "a": 1 },
{ "px": [768,608], "src": [32,160], "f": 0, "t": 51, "d": [280,936], "a": 1 },
{ "px": [1280,608], "src": [64,160], "f": 0, "t": 52, "d": [280,952], "a": 1 },
{ "px": [1312,608], "src": [96,128], "f": 0, "t": 43, "d": [280,953], "a": 1 },
{ "px": [1344,608], "src": [64,128], "f": 0, "t": 42, "d": [280,954], "a": 1 },
{ "px": [1376,608], "src": [96,128], "f": 0, "t": 43, "d": [280,955], "a": 1 },
{ "px": [1408,608], "src": [0,128], "f": 0, "t": 40, "d": [280,956], "a": 1 },
{ "px": [1440,608], "src": [96,128], "f": 0, "t": 43, "d": [280,957], "a": 1 },
{ "px": [1472,608], "src": [64,128], "f": 0, "t": 42, "d": [280,958], "a": 1 },
{ "px": [576,640], "src": [0,160], "f": 0, "t": 50, "d": [280,978], "a": 1 },
{ "px": [608,640], "src": [32,160], "f": 0, "t": 51, "d": [280,979], "a": 1 },
{ "px": [640,640], "src": [96,128], "f": 0, "t": 43, "d": [280,980], "a": 1 },
{ "px": [672,640], "src": [32,128], "f": 0, "t": 41, "d": [280,981], "a": 1 },
{ "px": [480,672], "src": [96,160], "f": 0, "t": 53, "d": [280,1023], "a": 1 },
{ "px": [512,672], "src": [32,128], "f": 0, "t": 41, "d": [280,1024], "a": 1 }
],
"seed": 8337045, "seed": 8337045,
"overrideTilesetUid": null, "overrideTilesetUid": null,
"gridTiles": [], "gridTiles": [],

View file

@ -8,7 +8,7 @@
"appVersion": "1.4.1", "appVersion": "1.4.1",
"url": "https://ldtk.io" "url": "https://ldtk.io"
}, },
"identifier": "Level_3", "identifier": "level_3",
"iid": "9a7c1c80-3b70-11ee-9613-c599f6a78847", "iid": "9a7c1c80-3b70-11ee-9613-c599f6a78847",
"uid": 422, "uid": 422,
"worldX": 4096, "worldX": 4096,
@ -29,7 +29,7 @@
"fieldInstances": [], "fieldInstances": [],
"layerInstances": [ "layerInstances": [
{ {
"__identifier": "Foliage", "__identifier": "foliage",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 56, "__cWid": 56,
"__cHei": 32, "__cHei": 32,
@ -94,7 +94,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Entities", "__identifier": "entities",
"__type": "Entities", "__type": "Entities",
"__cWid": 112, "__cWid": 112,
"__cHei": 64, "__cHei": 64,
@ -118,7 +118,7 @@
"gridTiles": [], "gridTiles": [],
"entityInstances": [ "entityInstances": [
{ {
"__identifier": "Player", "__identifier": "player",
"__grid": [1,49], "__grid": [1,49],
"__pivot": [0.25,1], "__pivot": [0.25,1],
"__tags": [], "__tags": [],
@ -136,7 +136,7 @@
] ]
}, },
{ {
"__identifier": "Ground", "__identifier": "ground",
"__type": "AutoLayer", "__type": "AutoLayer",
"__cWid": 56, "__cWid": 56,
"__cHei": 32, "__cHei": 32,
@ -788,7 +788,7 @@
"entityInstances": [] "entityInstances": []
}, },
{ {
"__identifier": "Level", "__identifier": "level",
"__type": "IntGrid", "__type": "IntGrid",
"__cWid": 56, "__cWid": 56,
"__cHei": 32, "__cHei": 32,

View file

@ -1,6 +1,8 @@
#include "assets.h" #include "assets.h"
#include "debug.h"
#include <stdlib.h> #include <stdlib.h>
#include <memory.h> #include <memory.h>
#include <stdio.h>
typedef typedef
struct AssetData { struct AssetData {
@ -9,11 +11,29 @@ struct AssetData {
AssetDestructor destructor; AssetDestructor destructor;
} AssetData; } AssetData;
cJSON* g_levels_json;
static AssetData* _assets = NULL; static AssetData* _assets = NULL;
static size_t _assets_len = 0; static size_t _assets_len = 0;
static size_t _assets_cap = 0; static size_t _assets_cap = 0;
static asset_id _next_id = 0; static asset_id _next_id = 0;
static
size_t file_length(FILE* fp) {
size_t start = ftell(fp);
fseek(fp, 0, SEEK_END);
size_t r = ftell(fp);
fseek(fp, start, SEEK_SET);
return r;
}
static
void read_file(FILE* fp, char* out_buffer, size_t out_size) {
size_t start = ftell(fp);
fread(out_buffer, 1, out_size, fp);
fseek(fp, start, SEEK_SET);
}
static static
void _resize_if_needed(size_t requested_len) { void _resize_if_needed(size_t requested_len) {
if(requested_len < _assets_cap) { if(requested_len < _assets_cap) {
@ -32,8 +52,45 @@ void _resize_if_needed(size_t requested_len) {
} }
void assets_init() { void assets_init() {
LOG_INFO("assets_init");
_assets = malloc(_assets_cap * sizeof(AssetData)); _assets = malloc(_assets_cap * sizeof(AssetData));
_next_id = 1; _next_id = 1;
g_levels_json = load_json_from_file("assets/levels/levels.ldtk");
}
// clear all assets without shrinking the assets array.
static
void _empty_assets() {
AssetData* start = _assets;
AssetData* end = _assets + _assets_len;
for(AssetData* asset = start; asset < end; ++asset) {
asset->destructor(asset->asset);
}
_assets_len = 0;
}
void assets_clean() {
_empty_assets();
free(_assets);
_assets_len = 0;
_assets_cap = 0;
_assets = NULL;
cJSON_Delete(g_levels_json);
g_levels_json = NULL;
}
void assets_reset() {
_empty_assets();
size_t desired = 8;
AssetData* new = realloc(_assets, desired * sizeof(AssetData));
if(new == NULL)
return;
_assets_cap = desired;
_assets = new;
} }
asset_id store_asset(void* asset, AssetDestructor destructor) { asset_id store_asset(void* asset, AssetDestructor destructor) {
@ -96,5 +153,40 @@ void free_asset(asset_id id) {
AssetData* next = found + 1; AssetData* next = found + 1;
size_t dif = next - (_assets + _assets_len); size_t dif = next - (_assets + _assets_len);
memmove(found, next, dif); memmove(found, next, dif);
--_assets_len;
} }
cJSON* load_json_from_file(const char* filename) {
FILE* fp = fopen(filename, "r");
if(fp == NULL) {
return NULL;
}
size_t len = file_length(fp);
char* buffer = malloc(len + 1);
if(buffer == NULL) {
return NULL;
}
read_file(fp, buffer, len);
cJSON* out = cJSON_Parse(buffer);
free(buffer);
if(out == NULL) {
return NULL;
}
return out;
}
size_t json_array_len(cJSON* json) {
if(!cJSON_IsArray(json)) {
return 0;
}
size_t len = 0;
cJSON* itr;
cJSON_ArrayForEach(itr, json) {
++len;
}
return len;
}

View file

@ -1,18 +1,21 @@
#ifndef _fencer_assets_h #ifndef _fencer_assets_h
#define _fencer_assets_h #define _fencer_assets_h
#include "vmath.h"
#include <cjson/cJSON.h>
#include <stdint.h> #include <stdint.h>
typedef void(*AssetDestructor)(void*); typedef void(*AssetDestructor)(void*);
typedef uintptr_t asset_id; typedef uintptr_t asset_id;
extern cJSON* g_levels_json;
// Prepare asset management. // Prepare asset management.
// Other asset management functions are invalid until assets_init is called. // Other asset management functions are invalid until assets_init is called.
void assets_init(); void assets_init();
// Clean up and shut down assets management. // Clean up and shut down assets management.
void assets_clean(); void assets_clean();
// Clear all assets and reset to initial state. // Clear all loaded assets
void assets_reset(); void assets_reset();
// Submit an object to be managed as an asset. If the destructor is NULL, free will be used. // Submit an object to be managed as an asset. If the destructor is NULL, free will be used.
// Returns zero if asset could not be stored. // Returns zero if asset could not be stored.
@ -24,5 +27,23 @@ void* get_asset(asset_id id);
asset_id get_asset_id(void* asset); asset_id get_asset_id(void* asset);
// Free an asset managed by the asset manager using it's destructor, or free(..) if NULL. // Free an asset managed by the asset manager using it's destructor, or free(..) if NULL.
void free_asset(asset_id id); void free_asset(asset_id id);
// load a file's contents into json
cJSON* load_json_from_file(const char* filepath);
// Get the length of a cJSON array
size_t json_array_len(cJSON* array);
static inline
Vector json_array_to_vector(cJSON* array) {
return (Vector) {
cJSON_GetArrayItem(array, 0)->valuedouble,
cJSON_GetArrayItem(array, 1)->valuedouble,
};
}
static inline
IVector json_array_to_ivector(cJSON* array) {
return (IVector) {
cJSON_GetArrayItem(array, 0)->valueint,
cJSON_GetArrayItem(array, 1)->valueint
};
}
#endif // !_fencer_assets_h #endif // !_fencer_assets_h

View file

@ -1,9 +1,11 @@
#include "camera.h" #include "camera.h"
#include "debug.h"
#include "render.h" #include "render.h"
Camera g_camera; Camera g_camera;
void camera_init() { void camera_init() {
LOG_INFO("camera_init");
g_camera.centre = ZeroVector; g_camera.centre = ZeroVector;
g_camera.width = 10; g_camera.width = 10;
} }
@ -14,28 +16,16 @@ float _camera_height(Camera* self) {
} }
static inline static inline
float _one() { float _cam_to_world_conversion() {
return g_render_resolution.x / g_camera.width; return g_render_resolution.x / g_camera.width;
} }
SDL_FRect camera_world_to_screen_space(Camera* self, SDL_FRect* world_space) { SDL_FRect camera_world_to_screen_space(Camera* self, SDL_FRect* world_space) {
float unit = _one(); float unit = _cam_to_world_conversion();
return (SDL_FRect) { return (SDL_FRect) {
.x = (world_space->x - g_camera.centre.x + g_camera.width/2.0) * unit, .x = (g_camera.centre.x - world_space->x + g_camera.width/2.0) * unit,
.y = (world_space->y - g_camera.centre.y + _camera_height(&g_camera)/2.0) * unit, .y = (g_camera.centre.y - world_space->y + _camera_height(&g_camera)/2.0) * unit,
.w = world_space->w * unit, .w = world_space->w * unit,
.h = world_space->h * unit .h = world_space->h * unit
}; };
} }
SDL_FRect camera_calculate_unit_rect() {
// If the camera's width is 1, this rectangle should fill the width of the screen.
// If the camera's width is 2, this rectangle should fill half the width of the screen.
float unit = _one();
return (SDL_FRect) {
.x = (-g_camera.centre.x + g_camera.width/2) * unit,
.y = (-g_camera.centre.y + _camera_height(&g_camera)/2) * unit,
.w = unit,
.h = unit
};
}

View file

@ -15,9 +15,6 @@ typedef struct Camera Camera;
extern Camera g_camera; extern Camera g_camera;
extern void camera_init(); extern void camera_init();
// generate a screen-space rectangle that is exactly 1x1 in world units.
// With it's centre on the world origin.
extern SDL_FRect camera_calculate_world_unit_rect(Camera* self);
extern SDL_FRect camera_screen_to_world_space(Camera* self, SDL_FRect* camera_space); extern SDL_FRect camera_screen_to_world_space(Camera* self, SDL_FRect* camera_space);
extern SDL_FRect camera_world_to_screen_space(Camera* self, SDL_FRect* world_space); extern SDL_FRect camera_world_to_screen_space(Camera* self, SDL_FRect* world_space);

7
src/debug.c Normal file
View file

@ -0,0 +1,7 @@
#include "debug.h"
#if NDEBUG
int g_debug_error_abort = 0;
#else
int g_debug_error_abort = 1;
#endif

25
src/debug.h Normal file
View file

@ -0,0 +1,25 @@
#ifndef _fencer_debug_h
#define _fencer_debug_h
#include <stdio.h>
extern int g_debug_error_abort;
#define LOG_INFO(...) do {\
printf("[%s:%d] ", __FILE__, __LINE__);\
printf("INFO | ");\
printf(__VA_ARGS__);\
printf("\n");\
fflush(stdout);\
} while(0)
#define LOG_ERROR(...) do {\
printf("[%s:%d] ", __FILE__, __LINE__);\
printf("ERROR | ");\
printf(__VA_ARGS__);\
printf("\n");\
fflush(stdout);\
if(g_debug_error_abort != 0) abort();\
} while(0)
#endif // !_fencer_debug_h

130
src/level.c Normal file
View file

@ -0,0 +1,130 @@
#include "level.h"
#include "assets.h"
#include "debug.h"
#include "tilemap.h"
#include <cjson/cJSON.h>
#include <stdio.h>
#define LEVEL_EXT ".ldtkl"
#define WORLD_EXT ".ldtk"
#define LEVEL_DIR "assets/levels/"
struct Level {
asset_id asset_id;
size_t level_iid;
Tilemap** tilemaps;
size_t tilemaps_len;
Vector player_start;
};
static
void _deallocate_level(void* self_void) {
Level* self = self_void;
free(self);
}
static
size_t _count_layers(cJSON* layers, size_t* entities, size_t* automap) {
size_t ent_ = 0, auto_ = 0, tot_ = 0;
cJSON* layer;
cJSON_ArrayForEach(layer, layers) {
cJSON* type = cJSON_GetObjectItem(layer, "__type");
if(type == NULL) {
continue;
} else if(strcmp(type->valuestring, "AutoLayer") == 0) {
auto_++;
} else if(strcmp(type->valuestring, "Entities") == 0) {
ent_++;
}
tot_++;
}
if(entities != NULL)
*entities = ent_;
if(automap != NULL)
*automap = auto_;
return tot_;
}
Level* level_from_json(cJSON* json) {
// allocate a new level struct
Level* self = malloc(sizeof(Level));
// ensure allocations succeeded and initialize
if(self == NULL) {
LOG_ERROR("Failed to allocate level");
return NULL;
}
*self = (Level) {
.asset_id = store_asset(self, &_deallocate_level)
};
// fetch the instance id
cJSON* iid = cJSON_GetObjectItem(json, "iid");
if(iid != NULL && cJSON_IsNumber(iid))
self->level_iid = iid->valueint;
// get the level's layers
cJSON* layers = cJSON_GetObjectItem(json, "layerInstances");
// count the different kinds of layers
size_t entity_layer_count;
_count_layers(layers, &entity_layer_count, &self->tilemaps_len);
// allocate tilemap array
self->tilemaps = malloc(self->tilemaps_len * sizeof(Tilemap*));
Tilemap** next_tilemap = self->tilemaps;
if(layers != NULL && cJSON_IsArray(layers)) {
cJSON* layer;
cJSON_ArrayForEach(layer, layers) {
cJSON* type = cJSON_GetObjectItem(layer, "__type");
if(strcmp(type->valuestring, "AutoLayer") == 0) {
// load a tilemap as an autolayer
LOG_INFO("loading autolayer");
*next_tilemap = tilemap_from_autolayer(layer);
++next_tilemap;
} else if(strcmp(type->valuestring, "Entities")) {
// load entities
}
}
}
return self;
}
Level* level_load(const char* level_id) {
// Convert the level ID to a filepath
size_t filename_len = strlen(LEVEL_DIR) + strlen(level_id) + strlen(LEVEL_EXT) + 1;
char* filename = malloc(filename_len);
sprintf(filename, "%s%s%s", LEVEL_DIR, level_id, LEVEL_EXT);
LOG_INFO("loading level %s at %s", level_id, filename);
cJSON* level = load_json_from_file(filename);
if(level == NULL) {
LOG_ERROR("Failed to load level file %s", filename);
free(filename);
return NULL;
}
free(filename);
return level_from_json(level);
}
void level_destroy(Level* self) {
free_asset(self->asset_id);
}
void level_draw(Level* self) {
Tilemap** end = self->tilemaps + self->tilemaps_len;
for(Tilemap** map = self->tilemaps; map != end; ++map) {
tilemap_draw(*map);
}
}

19
src/level.h Normal file
View file

@ -0,0 +1,19 @@
#ifndef _fencer_level_h
#define _fencer_level_h
#include "sprite.h"
#include <SDL2/SDL_render.h>
#include <cjson/cJSON.h>
typedef struct Level Level;
extern void world_init();
extern void world_close();
extern Level* level_from_json(cJSON* json);
extern Level* level_load(const char* level_id);
extern void level_destroy(Level* self);
extern void level_draw(Level* self);
#endif // !_fencer_level_h

View file

@ -1,5 +1,6 @@
#include "render.h" #include "render.h"
#include "program.h" #include "program.h"
#include "debug.h"
#include <SDL2/SDL_pixels.h> #include <SDL2/SDL_pixels.h>
#include <SDL2/SDL_render.h> #include <SDL2/SDL_render.h>
@ -9,6 +10,7 @@ SDL_Rect g_render_area;
IVector g_render_resolution; IVector g_render_resolution;
void render_init(SDL_Window* window, const struct ProgramSettings* settings) { void render_init(SDL_Window* window, const struct ProgramSettings* settings) {
LOG_INFO("render_init");
// create renderer, needs to be able to target textures, preferably hardware accelerated // create renderer, needs to be able to target textures, preferably hardware accelerated
g_renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE); g_renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE);
// create render target texture // create render target texture

View file

@ -1,5 +1,6 @@
#include "sprite.h" #include "sprite.h"
#include "camera.h" #include "camera.h"
#include "debug.h"
#include "render.h" #include "render.h"
#include "spritesheet.h" #include "spritesheet.h"
#include <SDL2/SDL_image.h> #include <SDL2/SDL_image.h>
@ -7,7 +8,7 @@
struct Sprite { struct Sprite {
// The animation sheet to sample sprites from. // The animation sheet to sample sprites from.
Spritesheet* sheet; Spritesheet* spritesheet;
// The current frame of animation. // The current frame of animation.
size_t current_frame; size_t current_frame;
@ -15,17 +16,20 @@ struct Sprite {
float current_frame_time; float current_frame_time;
// The local transformation of this sprite. // The local transformation of this sprite.
Transform transform;
Vector origin; Vector origin;
}; };
Sprite* sprite_from_spritesheet(Spritesheet* sheet) { Sprite* sprite_from_spritesheet(Spritesheet* sheet, size_t initial_frame) {
Sprite* self = malloc(sizeof(Sprite)); Sprite* self = malloc(sizeof(Sprite));
self->sheet = sheet; if(self == NULL) {
self->transform = IdentityTransform; LOG_ERROR("Failed to allocate memory for new sprite");
return NULL;
}
self->spritesheet = sheet;
self->origin = (Vector){0.5f, 1.0f}; self->origin = (Vector){0.5f, 1.0f};
self->current_frame = 0; self->current_frame = initial_frame;
// TODO: replace with a getter for the current game time. // TODO: replace with a getter for the current game time.
self->current_frame_time = 0; self->current_frame_time = 0;
@ -37,12 +41,10 @@ void sprite_destroy(Sprite* self) {
} }
void sprite_draw(Sprite* self, Transform transform) { void sprite_draw(Sprite* self, Transform transform) {
SDL_Texture* texture = spritesheet_get_texture(self->sheet); SDL_Texture* texture = spritesheet_get_texture(self->spritesheet);
SDL_Rect source = spritesheet_get_frame_rect(self->sheet, self->current_frame); SDL_Rect source = spritesheet_get_frame_rect(self->spritesheet, self->current_frame);
transform = transform_apply(transform, self->transform);
Vector left_top = vinvf(transform_point(&transform, self->origin)); Vector left_top = vinvf(transform_point(&transform, self->origin));
printf("lt: %f %f\n", left_top.x, left_top.y);
printf("or: %f %f\n", self->origin.x, self->origin.y);
SDL_FRect destination = (SDL_FRect) { SDL_FRect destination = (SDL_FRect) {
left_top.x, left_top.y, left_top.x, left_top.y,
@ -51,9 +53,32 @@ void sprite_draw(Sprite* self, Transform transform) {
destination = camera_world_to_screen_space(&g_camera, &destination); destination = camera_world_to_screen_space(&g_camera, &destination);
Vector origin = vmulf(self->origin, vmulff(transform.scale, 0.5f)); Vector origin = vmulff(vmulf(self->origin, transform.scale), 0.5f);
self->transform.rotation += 0.01f;
SDL_RenderCopyExF(g_renderer, texture, &source, &destination, SDL_RenderCopyExF(g_renderer, texture, &source, &destination,
transform.rotation * 57.2958, &origin, SDL_FLIP_NONE); transform.rotation * 57.2958, &origin, SDL_FLIP_NONE);
} }
Vector sprite_get_origin(Sprite* self) {
return self->origin;
}
void sprite_set_origin(Sprite* self, Vector origin) {
self->origin = origin;
}
size_t sprite_get_frame(const Sprite* self) {
return self->current_frame;
}
void sprite_set_frame(Sprite* self, size_t size) {
self->current_frame = size;
}
Spritesheet* sprite_get_spritesheet(const Sprite* self) {
return self->spritesheet;
}
void sprite_set_spritesheet(Sprite* self, Spritesheet* spritesheet) {
self->spritesheet = spritesheet;
}

View file

@ -10,16 +10,18 @@
// Forward declaration of the private sprite struct // Forward declaration of the private sprite struct
typedef struct Sprite Sprite; typedef struct Sprite Sprite;
extern Sprite* sprite_from_spritesheet(Spritesheet* sheet); extern Sprite* sprite_from_spritesheet(Spritesheet* sheet, size_t initial_frame);
extern void sprite_destroy(Sprite* sprite); extern void sprite_destroy(Sprite* sprite);
extern void sprite_draw(Sprite* self, Transform transform); extern void sprite_draw(Sprite* self, Transform transform);
extern void sprite_set_position(Sprite* self, Vector position); extern Vector sprite_get_origin(Sprite* self);
extern void sprite_translate(Sprite* self, Vector delta_position);
extern void sprite_set_scale(Sprite* self, Vector scale);
extern void sprite_scale(Sprite* self, Vector scale);
extern void sprite_set_rotation(Sprite* self, float rotation);
extern void sprite_rotate(Sprite* self, float delta_rotation);
extern void sprite_set_origin(Sprite* self, Vector origin); extern void sprite_set_origin(Sprite* self, Vector origin);
extern size_t sprite_get_frame(const Sprite* self);
extern void sprite_set_frame(Sprite* self, size_t size);
extern Spritesheet* sprite_get_spritesheet(const Sprite* self);
extern void sprite_set_spritesheet(Sprite* self, Spritesheet* spritesheet);
#endif // !_fencer_sprite_h #endif // !_fencer_sprite_h

View file

@ -5,6 +5,8 @@
#include <SDL2/SDL_image.h> #include <SDL2/SDL_image.h>
struct Spritesheet { struct Spritesheet {
asset_id asset_id;
// The texture to sample. // The texture to sample.
SDL_Texture* texture; SDL_Texture* texture;
// The resolution of the texture. // The resolution of the texture.
@ -28,17 +30,25 @@ void _spritesheet_destroy_asset(void* self_void) {
free(self_void); free(self_void);
} }
Spritesheet* spritesheet_from_texture(const char* texture_name, IVector frame_resolution) { Spritesheet* spritesheet_load(const char* texture_name, IVector frame_resolution) {
SDL_Texture* texture = IMG_LoadTexture(g_renderer, texture_name);
if(texture == NULL)
return NULL;
else
return spritesheet_from_texture(texture, frame_resolution);
}
Spritesheet* spritesheet_from_texture(SDL_Texture* texture, IVector frame_resolution) {
Spritesheet* self = malloc(sizeof(Spritesheet)); Spritesheet* self = malloc(sizeof(Spritesheet));
if(self == NULL) { if(self == NULL) {
return NULL; return NULL;
} }
store_asset(self, _spritesheet_destroy_asset); self->asset_id = store_asset(self, _spritesheet_destroy_asset);
// Load the texture image and query it's size // Load the texture image and query it's size
self->texture = IMG_LoadTexture(g_renderer, texture_name); self->texture = texture;
SDL_QueryTexture(self->texture, NULL, NULL, &self->resolution.x, &self->resolution.y); SDL_QueryTexture(self->texture, NULL, NULL, &self->resolution.x, &self->resolution.y);
self->animation_type = ANIMTYPE_ONCE; self->animation_type = ANIMTYPE_ONCE;
@ -51,10 +61,7 @@ Spritesheet* spritesheet_from_texture(const char* texture_name, IVector frame_re
} }
void spritesheet_destroy(Spritesheet* self) { void spritesheet_destroy(Spritesheet* self) {
asset_id id = get_asset_id(self); free_asset(self->asset_id);
if(id != 0) {
free_asset(id);
}
} }
SDL_Texture* spritesheet_get_texture(const Spritesheet* self) { SDL_Texture* spritesheet_get_texture(const Spritesheet* self) {
@ -70,3 +77,7 @@ SDL_Rect spritesheet_get_frame_rect(const Spritesheet* self, size_t index) {
self->frame_size.x, self->frame_size.y self->frame_size.x, self->frame_size.y
}; };
} }
IVector spritesheet_get_resolution(const Spritesheet* self) {
return self->resolution;
}

View file

@ -12,10 +12,12 @@ enum AnimationType {
typedef struct Spritesheet Spritesheet; typedef struct Spritesheet Spritesheet;
extern Spritesheet* spritesheet_from_texture(const char* texture_name, IVector frame_resolution); extern Spritesheet* spritesheet_load(const char* texture_name, IVector frame_resolution);
extern Spritesheet* spritesheet_from_texture(SDL_Texture* texture, IVector frame_resolution);
extern void spritesheet_destroy(Spritesheet* self); extern void spritesheet_destroy(Spritesheet* self);
extern SDL_Texture* spritesheet_get_texture(const Spritesheet* self); extern SDL_Texture* spritesheet_get_texture(const Spritesheet* self);
extern SDL_Rect spritesheet_get_frame_rect(const Spritesheet* self, size_t index); extern SDL_Rect spritesheet_get_frame_rect(const Spritesheet* self, size_t index);
extern IVector spritesheet_get_resolution(const Spritesheet* self);
#endif // !_fencer_spritesheet_h #endif // !_fencer_spritesheet_h

View file

@ -1,109 +1,114 @@
#include "tilemap.h" #include "tilemap.h"
#include "debug.h"
#include "tileset.h"
#include "assets.h"
#include "camera.h" #include "camera.h"
#include "program.h" #include "level.h"
#include <stdio.h> #include "render.h"
#include "transform.h"
#include <SDL2/SDL_image.h> #include <SDL2/SDL_image.h>
#include <cjson/cJSON.h>
#define XML(__str) (const xmlChar*)__str struct TileInstance {
Transform transform;
TileDef* tiledef;
};
struct Tilemap tilemap_load(const char* tilemap_file) { struct Tilemap {
struct Tilemap self = { Transform transform;
.dimensions = {0,0},
.tiles = NULL Tileset* set;
TileInstance* map;
size_t map_num;
IVector map_size;
};
Tilemap* tilemap_from_autolayer(cJSON* json) {
cJSON* const tileset = cJSON_GetObjectItem(json, "__tilesetDefUid");
if(tileset == NULL || !cJSON_IsNumber(tileset)) {
// no tileset means we cannot point at tile definitions later
LOG_ERROR("Could not find __tilesetDefUid while loading tilemap");
return NULL;
}
cJSON* const tiles = cJSON_GetObjectItem(json, "autoLayerTiles");
if(tiles == NULL || !cJSON_IsArray(tiles)) {
LOG_ERROR("Could not find autoLayerTiles while loading tilemap");
return NULL;
}
cJSON* const wid = cJSON_GetObjectItem(json, "__cWid");
cJSON* const hei = cJSON_GetObjectItem(json, "__cHei");
if(wid == NULL || hei == NULL || !cJSON_IsNumber(wid) || !cJSON_IsNumber(hei)) {
// no width and height mean we cannot allocate the tile map
LOG_ERROR("Could not find __cWid or __cHei while loading tilemap");
return NULL;
}
cJSON* const grid = cJSON_GetObjectItem(json, "__gridSize");
if(grid == NULL || !cJSON_IsNumber(grid)) {
// can't know how to scale sprites
LOG_ERROR("Could not find __gridSize while loading tilemap");
return NULL;
}
// the minimum requirements for a valid tilemap are met
// allocate a tilemap and load the tileset
Tilemap* self = malloc(sizeof(Tilemap));
self->transform = IdentityTransform;
self->set = tileset_load(tileset->valueint);
self->map_size = (IVector) {
.x = wid->valueint,
.y = hei->valueint
}; };
self->map_num = json_array_len(tiles);
self->map = malloc(self->map_num * sizeof(TileInstance));
if(self->map == NULL) {
tileset_destroy(self->set);
free(self);
LOG_ERROR("Failed to allocate map memory");
return NULL;
}
const double px_to_ws = 1.0 / grid->valuedouble;
cJSON* tile; TileInstance* writer = self->map;
cJSON_ArrayForEach(tile, tiles) {
cJSON* t = cJSON_GetObjectItem(tile, "t");
writer->tiledef = tileset_get_tiledef(self->set, t->valueint);
writer->transform = IdentityTransform;
cJSON* px = cJSON_GetObjectItem(tile, "px");
writer->transform.position = vmulff(json_array_to_vector(px), px_to_ws);
// sprite_get_spritesheet(tiledef_get_sprite(writer->tiledef));
// LOG_INFO("Loading tile");
// LOG_INFO("tid = %d", t->valueint);
// LOG_INFO("transform =");
// LOG_INFO(".position = %f %f", writer->transform.position.x, writer->transform.position.y);
// LOG_INFO(".scale = %f %f", writer->transform.scale.x, writer->transform.scale.y);
++writer;
}
return self; return self;
} }
static inline void tilemap_draw(Tilemap* self) {
int is_path_char(int n) { Transform tiletrans = self->transform;
return isalnum(n) || n == '/'; TileInstance* tile;
}
struct Tileset tileset_load(const char* filename) { for(int i = 0; i < self->map_num; ++i) {
char* texture_path = NULL; tile = self->map + i;
char* writer = NULL; tiletrans = transform_apply(self->transform, tile->transform);
char num_buffer[6]; Sprite* sprite = tiledef_get_sprite(tile->tiledef);
num_buffer[5] = '\0'; // LOG_INFO("sprite: %p", sprite);
int n = 0; // LOG_INFO("trans: %f %f ; %f %f ; %f",
struct Tileset self = { // tiletrans.position.x, tiletrans.position.y, tiletrans.scale.x, tiletrans.scale.y, tiletrans.rotation);
.texture = NULL, // LOG_INFO("self->transform: %f %f ; %f %f ; %f",
.tile_size = {0,0} // self->transform.position.x, self->transform.position.y, self->transform.scale.x, self->transform.scale.y, self->transform.rotation);
}; if(sprite != NULL)
size_t len = 1; sprite_draw(sprite, tiletrans);
FILE* fs = fopen(filename, "r");
do {
n = fgetc(fs);
if(is_path_char(n)) {
++len;
}
} while(n != ',');
texture_path = malloc(len * sizeof(char));
rewind(fs);
writer = texture_path;
do {
n = fgetc(fs);
if(is_path_char(n)) {
*writer = n;
++writer;
} else if(n == ',') {
*writer = '\0';
}
} while(n != ',');
self.texture = IMG_LoadTexture(g_renderer, texture_path);
SDL_QueryTexture(self.texture, NULL, NULL, &self.texture_resolution.x, &self.texture_resolution.y);
self.shear = floor((float)self.texture_resolution.x / self.tile_size.x);
writer = num_buffer;
do {
n = fgetc(fs);
if(isdigit(n) || n == '-') {
*writer= n;
++writer;
} else if(n == ',' || feof(fs) || n == '\n') {
*writer = '\0';
writer = num_buffer;
if(self.tile_size.x == 0) {
self.tile_size.x = atoi(num_buffer);
} else {
self.tile_size.y = atoi(num_buffer);
}
}
} while(!feof(fs));
fclose(fs);
return self;
}
SDL_Rect tileset_index_to_rect(struct Tileset* self, size_t index) {
SDL_Rect rect = {0,0, self->tile_size.x, self->tile_size.y};
rect.x = (index % self->shear) * rect.w;
rect.y = (index / self->shear) * rect.h;
return rect;
}
void tilemap_render(struct Tilemap* self) {
size_t num_tiles = self->dimensions.x * self->dimensions.y;
SDL_Rect source_rect = {0, 0, self->tileset.tile_size.x, self->tileset.tile_size.y};
SDL_FRect world_dest_rect = { .w = 1, .h = 1 };
for(int i = 0; i < num_tiles; ++i) {
source_rect = tileset_index_to_rect(&self->tileset, self->tiles[i]);
world_dest_rect.x = (i % self->dimensions.x) * world_dest_rect.w;
world_dest_rect.y = (float)floor((float)i / self->dimensions.y) * world_dest_rect.h;
SDL_FRect camera_dest_rect = camera_world_to_screen_space(&g_camera, &world_dest_rect);
SDL_RenderCopyF(g_renderer, self->tileset.texture, &source_rect, &camera_dest_rect);
} }
} }

View file

@ -1,27 +1,19 @@
#ifndef _fencer_tilemap_h #ifndef _fencer_tilemap_h
#define _fencer_tilemap_h #define _fencer_tilemap_h
#include "vmath.h" #include "spritesheet.h"
#include "render.h" #include "tileset.h"
#include <SDL2/SDL.h> #include "level.h"
struct Tileset { typedef struct TileInstance TileInstance;
SDL_Texture* texture; typedef struct Tilemap Tilemap;
IVector tile_size;
IVector texture_resolution;
int shear;
};
struct Tilemap {
IVector dimensions;
int* tiles;
struct Tileset tileset;
};
extern struct Tilemap tilemap_load(const char* tilemap_file); extern Tilemap* tilemap_from_autolayer(cJSON* json);
extern struct Tileset tileset_load(const char* filename); extern void tilemap_destroy(Tilemap* self);
extern SDL_Rect tileset_index_to_rect(struct Tileset* self, size_t index);
extern void tilemap_render(struct Tilemap* map); extern void tilemap_set_tileset(Tilemap* self, Tileset* set);
extern void tilemap_draw(Tilemap* tilemap);
#endif // !_fencer_tilemap_h #endif // !_fencer_tilemap_h

184
src/tileset.c Normal file
View file

@ -0,0 +1,184 @@
#include "tileset.h"
#include "debug.h"
#include "spritesheet.h"
#include "assets.h"
#include "render.h"
#include "SDL2/SDL_image.h"
struct TileDef {
size_t tid;
Sprite* sprite;
// Shape* collision;
};
struct Tileset {
size_t uid;
Spritesheet* atlas;
TileDef* tiledefs;
size_t tiledefs_len;
};
typedef struct TilesetStore {
Tileset* set;
size_t iid;
} TilesetStore;
static TilesetStore* _tilesets = NULL;
static size_t _tilesets_len = 0;
static size_t _tilesets_cap = 0;
static
int _tilesets_resize_if_needed(size_t required_cap) {
if(required_cap < _tilesets_cap) {
return 1;
}
size_t needed = _tilesets_cap ? _tilesets_cap : 2;
while(needed < required_cap) {
needed *= 2;
}
TilesetStore* new = realloc(_tilesets, needed * sizeof(TilesetStore));
if(new == NULL) {
LOG_ERROR("Failed to resize tileset store array.");
return 0;
}
_tilesets_cap = needed;
_tilesets = new;
return 1;
}
static
void _tileset_deallocate(void* self_void) {
Tileset* self = self_void;
TilesetStore* store = _tilesets;
for(; store < _tilesets + _tilesets_len; ++store) {
if(store->set == self) {
break;
}
}
size_t diff = _tilesets_len - (size_t)(store - _tilesets);
memmove(store, store+1, diff-1);
--_tilesets_len;
spritesheet_destroy(self->atlas);
free(self->tiledefs);
}
static
void _tileset_store(Tileset* self) {
_tilesets_resize_if_needed(_tilesets_len + 1);
_tilesets[_tilesets_len].set = self;
_tilesets[_tilesets_len].iid = self->uid;
}
Tileset* tileset_from_json(cJSON* json) {
cJSON* uid = cJSON_GetObjectItem(json, "uid");
if(uid == NULL || !cJSON_IsNumber(uid)) {
LOG_ERROR("Failed to find uid while loading tileset");
return NULL;
}
cJSON* path = cJSON_GetObjectItem(json, "relPath");
if(path == NULL || !cJSON_IsString(path)) {
LOG_ERROR("Failed to find relPath while loading tileset");
return NULL;
}
cJSON* gridsize = cJSON_GetObjectItem(json, "tileGridSize");
if(gridsize == NULL || !cJSON_IsNumber(gridsize)) {
LOG_ERROR("Failed to find tileGridSize while loading tileset");
return NULL;
}
SDL_Surface* atlas_surface = IMG_Load(path->valuestring);
if(atlas_surface == NULL) {
LOG_ERROR("Failed to load atlas image while loading tileset");
return NULL;
}
Tileset* self = malloc(sizeof(Tileset));
SDL_Texture* texture = SDL_CreateTextureFromSurface(g_renderer, atlas_surface);
IVector grid = {gridsize->valueint, gridsize->valueint};
if(self == NULL) {
LOG_ERROR("Failed to allocate space for Tileset");
return NULL;
}
_tileset_store(self);
*self = (Tileset) {
.uid = uid->valueint,
.atlas = spritesheet_from_texture(texture, grid),
};
IVector resolution = spritesheet_get_resolution(self->atlas);
self->tiledefs_len = resolution.x / grid.x * resolution.y / grid.y;
self->tiledefs = malloc(self->tiledefs_len * sizeof(TileDef));
LOG_INFO("tiledefs_len: %zu", self->tiledefs_len);
LOG_INFO("resolution: %d, %d", resolution.x, resolution.y);
LOG_INFO("grid: %d, %d", grid.x, grid.y);
for(size_t tid = 0; tid < self->tiledefs_len; ++tid) {
self->tiledefs[tid] = (TileDef) {
.tid = tid,
.sprite = sprite_from_spritesheet(self->atlas, tid)
};
// TODO: generate/read collision information
}
SDL_FreeSurface(atlas_surface);
return self;
}
Tileset* tileset_load(size_t uid) {
for(TilesetStore* store = _tilesets; store < _tilesets + _tilesets_len; ++store) {
if(store->iid == uid) {
return store->set;
}
}
cJSON* defs = cJSON_GetObjectItem(g_levels_json, "defs");
if(defs == NULL) {
LOG_ERROR("Failed to find defs element in levels json");
return NULL;
}
cJSON* tilesets = cJSON_GetObjectItem(defs, "tilesets");
if(tilesets == NULL) {
LOG_ERROR("Failed to find tilesets def region in levels json");
return NULL;
}
cJSON* tileset = NULL;
cJSON_ArrayForEach(tileset, tilesets) {
cJSON* tileset_uid = cJSON_GetObjectItem(tileset, "uid");
if(tileset_uid == NULL) continue;
LOG_INFO("finding uid: %d", tileset_uid->valueint);
if(uid == tileset_uid->valueint) {
break;
}
}
if(tileset == NULL) {
LOG_ERROR("Failed to find a tileset with the uid matching %zu", uid);
return NULL;
}
return tileset_from_json(tileset);
}
void tileset_destroy(Tileset* self) {
_tileset_deallocate(self);
}
TileDef* tileset_get_tiledef(Tileset* self, size_t t) {
return &self->tiledefs[t];
}
Sprite* tiledef_get_sprite(const TileDef* self) {
return self->sprite;
}

17
src/tileset.h Normal file
View file

@ -0,0 +1,17 @@
#ifndef _fencer_tileset_h
#define _fencer_tileset_h
#include "cjson/cJSON.h"
#include "sprite.h"
typedef struct TileDef TileDef;
typedef struct Tileset Tileset;
extern Tileset* tileset_from_json(cJSON* json);
extern Tileset* tileset_load(size_t uid);
extern TileDef* tileset_get_tiledef(Tileset* self, size_t t);
extern void tileset_destroy(Tileset* self);
extern Sprite* tiledef_get_sprite(const TileDef* self);
#endif // !_fencer_tileset_h

View file

@ -12,12 +12,17 @@ struct Transform {
#define IdentityTransform (Transform){ZeroVector, OneVector, 0.0f} #define IdentityTransform (Transform){ZeroVector, OneVector, 0.0f}
static inline Transform transform_apply(Transform parent, Transform child);
static inline Transform transform_invert(Transform a);
static inline Vector transform_direction(Transform* self, Vector direction);
static inline Vector transform_point(Transform* self, Vector point);
static inline static inline
Transform transform_apply(Transform a, Transform b) { Transform transform_apply(Transform parent, Transform child) {
return (Transform) { return (Transform) {
.position = vaddf(a.position, b.position), .position = transform_point(&parent, child.position),
.scale = vmulf(a.scale, b.scale), .scale = vmulf(parent.scale, child.scale),
.rotation = a.rotation + b.rotation .rotation = parent.rotation + child.rotation
}; };
} }