diff --git a/Makefile b/Makefile index deb4c05..c202497 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,11 @@ +version = $(shell egrep "version string = " config/static.go | cut -d'"' -f 2) +BRANCH = $(shell git branch --show-current) +COMMIT = $(shell git rev-parse --short=8 HEAD) +BUILD = $(shell date +%Y.%m.%d.%H%M%S) +#VERSION := $(if $(filter $(BRANCH), development),$(version)-$(BRANCH)-$(COMMIT)-$(BUILD),$(version)) +VERSION := $(version)-$(BRANCH)-$(COMMIT)-$(BUILD) + + all: clean build @echo ok @@ -5,8 +13,8 @@ clean: rm -f openquell build: - go build + go build -ldflags "-X 'openquell/config.VERSION=$(VERSION)'" test: - @echo 1 + @echo $(VERSION) diff --git a/TODO.md b/TODO.md index ac98297..3b834a9 100644 --- a/TODO.md +++ b/TODO.md @@ -22,7 +22,7 @@ slog.Debug("get observer", "minmoves", observer.LevelScore, "file", source.File, "line", source.Line) -- BUG: last level, when dying, you get a congrats message +- Bug: when pushing obstacles around edges, they vanish ## Collider Rework [abandoned: see branch collider-system, fails] diff --git a/assets/levels/openquell.ldtk b/assets/levels/openquell.ldtk index 0e8bbfe..1f01a6a 100644 --- a/assets/levels/openquell.ldtk +++ b/assets/levels/openquell.ldtk @@ -11,7 +11,7 @@ "iid": "267e9380-d7b0-11ee-a97e-35bec9c19d52", "jsonVersion": "1.5.3", "appBuildId": 473703, - "nextUid": 15, + "nextUid": 25, "identifierStyle": "Capitalize", "toc": [], "worldLayout": "Free", @@ -321,6 +321,111 @@ "pivotX": 0, "pivotY": 0, "fieldDefs": [] + }, + { + "identifier": "ObstacleStar", + "uid": 15, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 32, + "height": 32, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#A22633", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 64, "y": 64, "w": 32, "h": 32 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] + }, + { + "identifier": "HiddenDoor", + "uid": 23, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 32, + "height": 32, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#348D3F", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 64, "y": 0, "w": 32, "h": 32 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] + }, + { + "identifier": "Transient", + "uid": 24, + "tags": [], + "exportToToc": false, + "allowOutOfBounds": false, + "doc": null, + "width": 32, + "height": 32, + "resizableX": false, + "resizableY": false, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 0.08, + "lineOpacity": 0, + "hollow": false, + "color": "#2CE8F5", + "renderMode": "Tile", + "showName": true, + "tilesetId": 1, + "tileRenderMode": "FitInside", + "tileRect": { "tilesetUid": 1, "x": 0, "y": 128, "w": 32, "h": 32 }, + "uiTileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", + "pivotX": 0, + "pivotY": 0, + "fieldDefs": [] } ], "tilesets": [ { @@ -487,7 +592,7 @@ "max": null, "regex": null, "acceptFileTypes": null, - "defaultOverride": { "id": "V_Int", "params": [6] }, + "defaultOverride": { "id": "V_Int", "params": [7] }, "textLanguageMode": null, "symmetricalRef": false, "autoChainRef": true, @@ -511,18 +616,18 @@ "__bgColor": "#696A79", "bgColor": null, "useAutoIdentifier": false, - "bgRelPath": null, - "bgPos": null, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", "bgPivotX": 0.5, "bgPivotY": 0.5, "__smartColor": "#ADADB5", - "__bgPos": null, + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, "externalRelPath": null, "fieldInstances": [ - { "__identifier": "level", "__type": "Int", "__value": 1, "__tile": null, "defUid": 11, "realEditorValues": [] }, + { "__identifier": "level", "__type": "Int", "__value": 2, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [2] }] }, { "__identifier": "description", "__type": "String", "__value": "Collect the golden spheres by moving the blue one", "__tile": null, "defUid": 12, "realEditorValues": [] }, { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, - { "__identifier": "minmoves", "__type": "Int", "__value": 6, "__tile": null, "defUid": 14, "realEditorValues": [] } + { "__identifier": "minmoves", "__type": "Int", "__value": 7, "__tile": null, "defUid": 14, "realEditorValues": [] } ], "layerInstances": [ { @@ -681,7 +786,7 @@ "__neighbours": [] }, { - "identifier": "Jump", + "identifier": "Good_flight", "iid": "024390f0-d7b0-11ee-98fb-1bc6ad7e4172", "uid": 6, "worldX": 480, @@ -701,12 +806,12 @@ "externalRelPath": null, "fieldInstances": [ { "__identifier": "level", "__type": "Int", "__value": 2, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [2] }] }, - { "__identifier": "description", "__type": "String", "__value": "you can jump", "__tile": null, "defUid": 12, "realEditorValues": [{ + { "__identifier": "description", "__type": "String", "__value": "you can fly to the other side", "__tile": null, "defUid": 12, "realEditorValues": [{ "id": "V_String", - "params": ["you can jump"] + "params": ["you can fly to the other side"] }] }, { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, - { "__identifier": "minmoves", "__type": "Int", "__value": 4, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [4] }] } + { "__identifier": "minmoves", "__type": "Int", "__value": 6, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [6] }] } ], "layerInstances": [ { @@ -733,22 +838,6 @@ "overrideTilesetUid": null, "gridTiles": [], "entityInstances": [ - { - "__identifier": "ObstacleWest", - "__grid": [6,8], - "__pivot": [0,0], - "__tags": [], - "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, - "__smartColor": "#BE4A2F", - "iid": "8aab4e10-d7b0-11ee-98fb-2171f9170515", - "width": 32, - "height": 32, - "defUid": 7, - "px": [192,256], - "fieldInstances": [], - "__worldX": 672, - "__worldY": 256 - }, { "__identifier": "PlayerPrimary", "__grid": [4,5], @@ -783,31 +872,15 @@ }, { "__identifier": "Collectible", - "__grid": [14,6], + "__grid": [15,6], "__pivot": [0,0], "__tags": [], "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, "__smartColor": "#FEAE34", - "iid": "f7ec8340-d7b0-11ee-98fb-1fa75c7ce959", + "iid": "4fe334b0-d7b0-11ee-8ccf-131b7b178844", "width": 32, "height": 32, "defUid": 4, - "px": [448,192], - "fieldInstances": [], - "__worldX": 928, - "__worldY": 192 - }, - { - "__identifier": "ObstacleSouth", - "__grid": [15,6], - "__pivot": [0,0], - "__tags": [], - "__tile": { "tilesetUid": 1, "x": 32, "y": 64, "w": 32, "h": 32 }, - "__smartColor": "#E43B44", - "iid": "45c2d010-d7b0-11ee-98fb-13d8f32ffff0", - "width": 32, - "height": 32, - "defUid": 10, "px": [480,192], "fieldInstances": [], "__worldX": 960, @@ -858,12 +931,14 @@ { "px": [512,192], "src": [64,0], "f": 0, "t": 2, "d": [136], "a": 1 }, { "px": [224,224], "src": [64,0], "f": 0, "t": 2, "d": [147], "a": 1 }, { "px": [384,224], "src": [64,0], "f": 0, "t": 2, "d": [152], "a": 1 }, + { "px": [96,256], "src": [64,0], "f": 0, "t": 2, "d": [163], "a": 1 }, + { "px": [128,256], "src": [64,0], "f": 0, "t": 2, "d": [164], "a": 1 }, + { "px": [160,256], "src": [64,0], "f": 0, "t": 2, "d": [165], "a": 1 }, + { "px": [192,256], "src": [64,0], "f": 0, "t": 2, "d": [166], "a": 1 }, { "px": [224,256], "src": [64,0], "f": 0, "t": 2, "d": [167], "a": 1 }, { "px": [384,256], "src": [64,0], "f": 0, "t": 2, "d": [172], "a": 1 }, - { "px": [448,256], "src": [64,0], "f": 0, "t": 2, "d": [174], "a": 1 }, { "px": [224,288], "src": [64,0], "f": 0, "t": 2, "d": [187], "a": 1 }, { "px": [384,288], "src": [64,0], "f": 0, "t": 2, "d": [192], "a": 1 }, - { "px": [448,288], "src": [64,0], "f": 0, "t": 2, "d": [194], "a": 1 }, { "px": [96,320], "src": [64,0], "f": 0, "t": 2, "d": [203], "a": 1 }, { "px": [128,320], "src": [64,0], "f": 0, "t": 2, "d": [204], "a": 1 }, { "px": [160,320], "src": [64,0], "f": 0, "t": 2, "d": [205], "a": 1 }, @@ -879,6 +954,1501 @@ } ], "__neighbours": [] + }, + { + "identifier": "More_Flying", + "iid": "93368c60-d7b0-11ee-8ccf-f9b6caf69029", + "uid": 16, + "worldX": 1184, + "worldY": 0, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 3, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [3] }] }, + { "__identifier": "description", "__type": "String", "__value": "Take care and don't miss the walls", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["Take care and don't miss the walls"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [{ + "id": "V_String", + "params": ["background-lila"] + }] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 5, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [5] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "93368c61-d7b0-11ee-8ccf-b906ea38e191", + "levelId": 16, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 8034006, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "PlayerPrimary", + "__grid": [2,3], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "f2e5f0b0-d7b0-11ee-8ccf-694a964ef9e3", + "width": 32, + "height": 32, + "defUid": 3, + "px": [64,96], + "fieldInstances": [], + "__worldX": 1248, + "__worldY": 96 + }, + { + "__identifier": "Collectible", + "__grid": [3,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "6b04ac30-d7b0-11ee-8ccf-cf7206025bb7", + "width": 32, + "height": 32, + "defUid": 4, + "px": [96,160], + "fieldInstances": [], + "__worldX": 1280, + "__worldY": 160 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "93368c62-d7b0-11ee-8ccf-393e0aa3b048", + "levelId": 16, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 453191, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [256,96], "src": [64,0], "f": 0, "t": 2, "d": [68], "a": 1 }, + { "px": [448,128], "src": [64,0], "f": 0, "t": 2, "d": [94], "a": 1 }, + { "px": [416,384], "src": [64,0], "f": 0, "t": 2, "d": [253], "a": 1 }, + { "px": [224,416], "src": [64,0], "f": 0, "t": 2, "d": [267], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "Labyrinth", + "iid": "a2d61220-d7b0-11ee-8ccf-f5cc3603c139", + "uid": 17, + "worldX": 1888, + "worldY": 0, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 4, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [4] }] }, + { "__identifier": "description", "__type": "String", "__value": "Can you find your way out?", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["Can you find your way out?"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 19, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [19] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "a2d63930-d7b0-11ee-8ccf-5d5f9af3478a", + "levelId": 17, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 2847219, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "PlayerPrimary", + "__grid": [6,4], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "9c3f8ee0-d7b0-11ee-8ccf-f1e314a1529a", + "width": 32, + "height": 32, + "defUid": 3, + "px": [192,128], + "fieldInstances": [], + "__worldX": 2080, + "__worldY": 128 + }, + { + "__identifier": "Collectible", + "__grid": [14,4], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "abd59430-d7b0-11ee-8ccf-2f5d9e97d1c2", + "width": 32, + "height": 32, + "defUid": 4, + "px": [448,128], + "fieldInstances": [], + "__worldX": 2336, + "__worldY": 128 + }, + { + "__identifier": "Collectible", + "__grid": [4,13], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "d485afa0-d7b0-11ee-8ccf-af928d225609", + "width": 32, + "height": 32, + "defUid": 4, + "px": [128,416], + "fieldInstances": [], + "__worldX": 2016, + "__worldY": 416 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "a2d63931-d7b0-11ee-8ccf-fd86276f5b0d", + "levelId": 17, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 339229, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [96,96], "src": [64,0], "f": 0, "t": 2, "d": [63], "a": 1 }, + { "px": [128,96], "src": [64,0], "f": 0, "t": 2, "d": [64], "a": 1 }, + { "px": [160,96], "src": [64,0], "f": 0, "t": 2, "d": [65], "a": 1 }, + { "px": [192,96], "src": [64,0], "f": 0, "t": 2, "d": [66], "a": 1 }, + { "px": [224,96], "src": [64,0], "f": 0, "t": 2, "d": [67], "a": 1 }, + { "px": [384,96], "src": [64,0], "f": 0, "t": 2, "d": [72], "a": 1 }, + { "px": [416,96], "src": [64,0], "f": 0, "t": 2, "d": [73], "a": 1 }, + { "px": [448,96], "src": [64,0], "f": 0, "t": 2, "d": [74], "a": 1 }, + { "px": [480,96], "src": [64,0], "f": 0, "t": 2, "d": [75], "a": 1 }, + { "px": [512,96], "src": [64,0], "f": 0, "t": 2, "d": [76], "a": 1 }, + { "px": [96,128], "src": [64,0], "f": 0, "t": 2, "d": [83], "a": 1 }, + { "px": [224,128], "src": [64,0], "f": 0, "t": 2, "d": [87], "a": 1 }, + { "px": [384,128], "src": [64,0], "f": 0, "t": 2, "d": [92], "a": 1 }, + { "px": [512,128], "src": [64,0], "f": 0, "t": 2, "d": [96], "a": 1 }, + { "px": [64,160], "src": [64,0], "f": 0, "t": 2, "d": [102], "a": 1 }, + { "px": [192,160], "src": [64,0], "f": 0, "t": 2, "d": [106], "a": 1 }, + { "px": [256,160], "src": [64,0], "f": 0, "t": 2, "d": [108], "a": 1 }, + { "px": [352,160], "src": [64,0], "f": 0, "t": 2, "d": [111], "a": 1 }, + { "px": [544,160], "src": [64,0], "f": 0, "t": 2, "d": [117], "a": 1 }, + { "px": [64,192], "src": [64,0], "f": 0, "t": 2, "d": [122], "a": 1 }, + { "px": [160,192], "src": [64,0], "f": 0, "t": 2, "d": [125], "a": 1 }, + { "px": [352,192], "src": [64,0], "f": 0, "t": 2, "d": [131], "a": 1 }, + { "px": [416,192], "src": [64,0], "f": 0, "t": 2, "d": [133], "a": 1 }, + { "px": [544,192], "src": [64,0], "f": 0, "t": 2, "d": [137], "a": 1 }, + { "px": [96,224], "src": [64,0], "f": 0, "t": 2, "d": [143], "a": 1 }, + { "px": [224,224], "src": [64,0], "f": 0, "t": 2, "d": [147], "a": 1 }, + { "px": [352,224], "src": [64,0], "f": 0, "t": 2, "d": [151], "a": 1 }, + { "px": [416,224], "src": [64,0], "f": 0, "t": 2, "d": [153], "a": 1 }, + { "px": [448,224], "src": [64,0], "f": 0, "t": 2, "d": [154], "a": 1 }, + { "px": [480,224], "src": [64,0], "f": 0, "t": 2, "d": [155], "a": 1 }, + { "px": [512,224], "src": [64,0], "f": 0, "t": 2, "d": [156], "a": 1 }, + { "px": [96,256], "src": [64,0], "f": 0, "t": 2, "d": [163], "a": 1 }, + { "px": [128,256], "src": [64,0], "f": 0, "t": 2, "d": [164], "a": 1 }, + { "px": [160,256], "src": [64,0], "f": 0, "t": 2, "d": [165], "a": 1 }, + { "px": [192,256], "src": [64,0], "f": 0, "t": 2, "d": [166], "a": 1 }, + { "px": [224,256], "src": [64,0], "f": 0, "t": 2, "d": [167], "a": 1 }, + { "px": [352,256], "src": [64,0], "f": 0, "t": 2, "d": [171], "a": 1 }, + { "px": [352,288], "src": [64,0], "f": 0, "t": 2, "d": [191], "a": 1 }, + { "px": [352,320], "src": [64,0], "f": 0, "t": 2, "d": [211], "a": 1 }, + { "px": [352,352], "src": [64,0], "f": 0, "t": 2, "d": [231], "a": 1 }, + { "px": [64,384], "src": [64,0], "f": 0, "t": 2, "d": [242], "a": 1 }, + { "px": [96,384], "src": [64,0], "f": 0, "t": 2, "d": [243], "a": 1 }, + { "px": [128,384], "src": [64,0], "f": 0, "t": 2, "d": [244], "a": 1 }, + { "px": [160,384], "src": [64,0], "f": 0, "t": 2, "d": [245], "a": 1 }, + { "px": [192,384], "src": [64,0], "f": 0, "t": 2, "d": [246], "a": 1 }, + { "px": [224,384], "src": [64,0], "f": 0, "t": 2, "d": [247], "a": 1 }, + { "px": [256,384], "src": [64,0], "f": 0, "t": 2, "d": [248], "a": 1 }, + { "px": [288,384], "src": [64,0], "f": 0, "t": 2, "d": [249], "a": 1 }, + { "px": [320,384], "src": [64,0], "f": 0, "t": 2, "d": [250], "a": 1 }, + { "px": [352,384], "src": [64,0], "f": 0, "t": 2, "d": [251], "a": 1 }, + { "px": [384,384], "src": [64,0], "f": 0, "t": 2, "d": [252], "a": 1 }, + { "px": [416,384], "src": [64,0], "f": 0, "t": 2, "d": [253], "a": 1 }, + { "px": [448,384], "src": [64,0], "f": 0, "t": 2, "d": [254], "a": 1 }, + { "px": [480,384], "src": [64,0], "f": 0, "t": 2, "d": [255], "a": 1 }, + { "px": [512,384], "src": [64,0], "f": 0, "t": 2, "d": [256], "a": 1 }, + { "px": [544,384], "src": [64,0], "f": 0, "t": 2, "d": [257], "a": 1 }, + { "px": [64,416], "src": [64,0], "f": 0, "t": 2, "d": [262], "a": 1 }, + { "px": [96,416], "src": [64,0], "f": 0, "t": 2, "d": [263], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "First_Enemies", + "iid": "f6b46100-d7b0-11ee-8ccf-c30ddc5a42ec", + "uid": 18, + "worldX": -224, + "worldY": 544, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 5, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [5] }] }, + { "__identifier": "description", "__type": "String", "__value": "Beware of the spikes, they are deadly!", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["Beware of the spikes, they are deadly!"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 5, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [5] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "f6b46101-d7b0-11ee-8ccf-01f8874ac83b", + "levelId": 18, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 6893404, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "PlayerPrimary", + "__grid": [10,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "5d1ca830-d7b0-11ee-8ccf-f5cfae4bd567", + "width": 32, + "height": 32, + "defUid": 3, + "px": [320,224], + "fieldInstances": [], + "__worldX": 96, + "__worldY": 768 + }, + { + "__identifier": "Collectible", + "__grid": [9,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "a39b8830-d7b0-11ee-8ccf-4734d5e9d2c9", + "width": 32, + "height": 32, + "defUid": 4, + "px": [288,224], + "fieldInstances": [], + "__worldX": 64, + "__worldY": 768 + }, + { + "__identifier": "ObstacleEast", + "__grid": [7,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "a63bfca0-d7b0-11ee-8ccf-b38ea3896fae", + "width": 32, + "height": 32, + "defUid": 8, + "px": [224,224], + "fieldInstances": [], + "__worldX": 0, + "__worldY": 768 + }, + { + "__identifier": "ObstacleWest", + "__grid": [13,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#BE4A2F", + "iid": "b6087b40-d7b0-11ee-8ccf-a337d752a74e", + "width": 32, + "height": 32, + "defUid": 7, + "px": [416,224], + "fieldInstances": [], + "__worldX": 192, + "__worldY": 768 + }, + { + "__identifier": "ObstacleSouth", + "__grid": [8,4], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#E43B44", + "iid": "d5991410-d7b0-11ee-8ccf-bb37dd5e5b46", + "width": 32, + "height": 32, + "defUid": 10, + "px": [256,128], + "fieldInstances": [], + "__worldX": 32, + "__worldY": 672 + }, + { + "__identifier": "Collectible", + "__grid": [11,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "dcdf1bc0-d7b0-11ee-8ccf-b55f8ddc98bc", + "width": 32, + "height": 32, + "defUid": 4, + "px": [352,224], + "fieldInstances": [], + "__worldX": 128, + "__worldY": 768 + }, + { + "__identifier": "ObstacleEast", + "__grid": [8,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "ed255e40-d7b0-11ee-8ccf-093827b3e604", + "width": 32, + "height": 32, + "defUid": 8, + "px": [256,256], + "fieldInstances": [], + "__worldX": 32, + "__worldY": 800 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "f6b46102-d7b0-11ee-8ccf-07cad60c5c1f", + "levelId": 18, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 7290487, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [288,32], "src": [64,0], "f": 0, "t": 2, "d": [29], "a": 1 }, + { "px": [256,64], "src": [64,0], "f": 0, "t": 2, "d": [48], "a": 1 }, + { "px": [288,64], "src": [64,0], "f": 0, "t": 2, "d": [49], "a": 1 }, + { "px": [320,64], "src": [64,0], "f": 0, "t": 2, "d": [50], "a": 1 }, + { "px": [224,96], "src": [64,0], "f": 0, "t": 2, "d": [67], "a": 1 }, + { "px": [256,96], "src": [64,0], "f": 0, "t": 2, "d": [68], "a": 1 }, + { "px": [288,96], "src": [64,0], "f": 0, "t": 2, "d": [69], "a": 1 }, + { "px": [320,96], "src": [64,0], "f": 0, "t": 2, "d": [70], "a": 1 }, + { "px": [352,96], "src": [64,0], "f": 0, "t": 2, "d": [71], "a": 1 }, + { "px": [192,128], "src": [64,0], "f": 0, "t": 2, "d": [86], "a": 1 }, + { "px": [224,128], "src": [64,0], "f": 0, "t": 2, "d": [87], "a": 1 }, + { "px": [352,128], "src": [64,0], "f": 0, "t": 2, "d": [91], "a": 1 }, + { "px": [384,128], "src": [64,0], "f": 0, "t": 2, "d": [92], "a": 1 }, + { "px": [160,160], "src": [64,0], "f": 0, "t": 2, "d": [105], "a": 1 }, + { "px": [192,160], "src": [64,0], "f": 0, "t": 2, "d": [106], "a": 1 }, + { "px": [384,160], "src": [64,0], "f": 0, "t": 2, "d": [112], "a": 1 }, + { "px": [416,160], "src": [64,0], "f": 0, "t": 2, "d": [113], "a": 1 }, + { "px": [128,192], "src": [64,0], "f": 0, "t": 2, "d": [124], "a": 1 }, + { "px": [160,192], "src": [64,0], "f": 0, "t": 2, "d": [125], "a": 1 }, + { "px": [416,192], "src": [64,0], "f": 0, "t": 2, "d": [133], "a": 1 }, + { "px": [448,192], "src": [64,0], "f": 0, "t": 2, "d": [134], "a": 1 }, + { "px": [160,224], "src": [64,0], "f": 0, "t": 2, "d": [145], "a": 1 }, + { "px": [192,224], "src": [64,0], "f": 0, "t": 2, "d": [146], "a": 1 }, + { "px": [448,224], "src": [64,0], "f": 0, "t": 2, "d": [154], "a": 1 }, + { "px": [480,224], "src": [64,0], "f": 0, "t": 2, "d": [155], "a": 1 }, + { "px": [192,256], "src": [64,0], "f": 0, "t": 2, "d": [166], "a": 1 }, + { "px": [224,256], "src": [64,0], "f": 0, "t": 2, "d": [167], "a": 1 }, + { "px": [416,256], "src": [64,0], "f": 0, "t": 2, "d": [173], "a": 1 }, + { "px": [448,256], "src": [64,0], "f": 0, "t": 2, "d": [174], "a": 1 }, + { "px": [224,288], "src": [64,0], "f": 0, "t": 2, "d": [187], "a": 1 }, + { "px": [256,288], "src": [64,0], "f": 0, "t": 2, "d": [188], "a": 1 }, + { "px": [384,288], "src": [64,0], "f": 0, "t": 2, "d": [192], "a": 1 }, + { "px": [416,288], "src": [64,0], "f": 0, "t": 2, "d": [193], "a": 1 }, + { "px": [256,320], "src": [64,0], "f": 0, "t": 2, "d": [208], "a": 1 }, + { "px": [288,320], "src": [64,0], "f": 0, "t": 2, "d": [209], "a": 1 }, + { "px": [320,320], "src": [64,0], "f": 0, "t": 2, "d": [210], "a": 1 }, + { "px": [352,320], "src": [64,0], "f": 0, "t": 2, "d": [211], "a": 1 }, + { "px": [384,320], "src": [64,0], "f": 0, "t": 2, "d": [212], "a": 1 }, + { "px": [288,352], "src": [64,0], "f": 0, "t": 2, "d": [229], "a": 1 }, + { "px": [320,352], "src": [64,0], "f": 0, "t": 2, "d": [230], "a": 1 }, + { "px": [352,352], "src": [64,0], "f": 0, "t": 2, "d": [231], "a": 1 }, + { "px": [320,384], "src": [64,0], "f": 0, "t": 2, "d": [250], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "Keep_Moving", + "iid": "21e82f30-d7b0-11ee-8ccf-5de65d665dad", + "uid": 19, + "worldX": 480, + "worldY": 544, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 6, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [6] }] }, + { "__identifier": "description", "__type": "String", "__value": "You can push the enemies around", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["You can push the enemies around"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 5, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [5] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "21e85640-d7b0-11ee-8ccf-934bbcdc8f50", + "levelId": 19, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 8266859, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "PlayerPrimary", + "__grid": [7,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "7a8d5c50-d7b0-11ee-8ccf-ade95c271383", + "width": 32, + "height": 32, + "defUid": 3, + "px": [224,160], + "fieldInstances": [], + "__worldX": 704, + "__worldY": 704 + }, + { + "__identifier": "ObstacleSouth", + "__grid": [10,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#E43B44", + "iid": "88a01d00-d7b0-11ee-8ccf-ab5745607267", + "width": 32, + "height": 32, + "defUid": 10, + "px": [320,160], + "fieldInstances": [], + "__worldX": 800, + "__worldY": 704 + }, + { + "__identifier": "Collectible", + "__grid": [9,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "8b1ab9f0-d7b0-11ee-8ccf-958757e1394a", + "width": 32, + "height": 32, + "defUid": 4, + "px": [288,224], + "fieldInstances": [], + "__worldX": 768, + "__worldY": 768 + }, + { + "__identifier": "ObstacleNorth", + "__grid": [9,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#F77622", + "iid": "941612c0-d7b0-11ee-8ccf-85ddfa694aa3", + "width": 32, + "height": 32, + "defUid": 9, + "px": [288,256], + "fieldInstances": [], + "__worldX": 768, + "__worldY": 800 + }, + { + "__identifier": "ObstacleEast", + "__grid": [7,9], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "a0336c10-d7b0-11ee-8ccf-892258732d11", + "width": 32, + "height": 32, + "defUid": 8, + "px": [224,288], + "fieldInstances": [], + "__worldX": 704, + "__worldY": 832 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "21e87d50-d7b0-11ee-8ccf-0b72273915bf", + "levelId": 19, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 2728341, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [288,64], "src": [64,0], "f": 0, "t": 2, "d": [49], "a": 1 }, + { "px": [320,64], "src": [64,0], "f": 0, "t": 2, "d": [50], "a": 1 }, + { "px": [256,96], "src": [64,0], "f": 0, "t": 2, "d": [68], "a": 1 }, + { "px": [288,96], "src": [64,0], "f": 0, "t": 2, "d": [69], "a": 1 }, + { "px": [320,96], "src": [64,0], "f": 0, "t": 2, "d": [70], "a": 1 }, + { "px": [352,96], "src": [64,0], "f": 0, "t": 2, "d": [71], "a": 1 }, + { "px": [224,128], "src": [64,0], "f": 0, "t": 2, "d": [87], "a": 1 }, + { "px": [256,128], "src": [64,0], "f": 0, "t": 2, "d": [88], "a": 1 }, + { "px": [288,128], "src": [64,0], "f": 0, "t": 2, "d": [89], "a": 1 }, + { "px": [320,128], "src": [64,0], "f": 0, "t": 2, "d": [90], "a": 1 }, + { "px": [352,128], "src": [64,0], "f": 0, "t": 2, "d": [91], "a": 1 }, + { "px": [384,128], "src": [64,0], "f": 0, "t": 2, "d": [92], "a": 1 }, + { "px": [192,160], "src": [64,0], "f": 0, "t": 2, "d": [106], "a": 1 }, + { "px": [416,160], "src": [64,0], "f": 0, "t": 2, "d": [113], "a": 1 }, + { "px": [160,192], "src": [64,0], "f": 0, "t": 2, "d": [125], "a": 1 }, + { "px": [192,192], "src": [64,0], "f": 0, "t": 2, "d": [126], "a": 1 }, + { "px": [416,192], "src": [64,0], "f": 0, "t": 2, "d": [133], "a": 1 }, + { "px": [448,192], "src": [64,0], "f": 0, "t": 2, "d": [134], "a": 1 }, + { "px": [128,224], "src": [64,0], "f": 0, "t": 2, "d": [144], "a": 1 }, + { "px": [160,224], "src": [64,0], "f": 0, "t": 2, "d": [145], "a": 1 }, + { "px": [192,224], "src": [64,0], "f": 0, "t": 2, "d": [146], "a": 1 }, + { "px": [416,224], "src": [64,0], "f": 0, "t": 2, "d": [153], "a": 1 }, + { "px": [448,224], "src": [64,0], "f": 0, "t": 2, "d": [154], "a": 1 }, + { "px": [480,224], "src": [64,0], "f": 0, "t": 2, "d": [155], "a": 1 }, + { "px": [160,256], "src": [64,0], "f": 0, "t": 2, "d": [165], "a": 1 }, + { "px": [192,256], "src": [64,0], "f": 0, "t": 2, "d": [166], "a": 1 }, + { "px": [416,256], "src": [64,0], "f": 0, "t": 2, "d": [173], "a": 1 }, + { "px": [448,256], "src": [64,0], "f": 0, "t": 2, "d": [174], "a": 1 }, + { "px": [192,288], "src": [64,0], "f": 0, "t": 2, "d": [186], "a": 1 }, + { "px": [416,288], "src": [64,0], "f": 0, "t": 2, "d": [193], "a": 1 }, + { "px": [224,320], "src": [64,0], "f": 0, "t": 2, "d": [207], "a": 1 }, + { "px": [256,320], "src": [64,0], "f": 0, "t": 2, "d": [208], "a": 1 }, + { "px": [288,320], "src": [64,0], "f": 0, "t": 2, "d": [209], "a": 1 }, + { "px": [320,320], "src": [64,0], "f": 0, "t": 2, "d": [210], "a": 1 }, + { "px": [352,320], "src": [64,0], "f": 0, "t": 2, "d": [211], "a": 1 }, + { "px": [384,320], "src": [64,0], "f": 0, "t": 2, "d": [212], "a": 1 }, + { "px": [256,352], "src": [64,0], "f": 0, "t": 2, "d": [228], "a": 1 }, + { "px": [288,352], "src": [64,0], "f": 0, "t": 2, "d": [229], "a": 1 }, + { "px": [320,352], "src": [64,0], "f": 0, "t": 2, "d": [230], "a": 1 }, + { "px": [352,352], "src": [64,0], "f": 0, "t": 2, "d": [231], "a": 1 }, + { "px": [288,384], "src": [64,0], "f": 0, "t": 2, "d": [249], "a": 1 }, + { "px": [320,384], "src": [64,0], "f": 0, "t": 2, "d": [250], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "Bloody_Mary", + "iid": "d478ec20-d7b0-11ee-8ccf-0bb58e4983e2", + "uid": 20, + "worldX": 1184, + "worldY": 544, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 7, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [7] }] }, + { "__identifier": "description", "__type": "String", "__value": "Stay alive, please!", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["Stay alive, please!"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 8, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [8] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "d4791330-d7b0-11ee-8ccf-ffc20edee940", + "levelId": 20, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 7481218, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "ObstacleWest", + "__grid": [13,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#BE4A2F", + "iid": "fad92420-d7b0-11ee-8ccf-b13b8ea63424", + "width": 32, + "height": 32, + "defUid": 7, + "px": [416,192], + "fieldInstances": [], + "__worldX": 1600, + "__worldY": 736 + }, + { + "__identifier": "ObstacleEast", + "__grid": [6,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "07fc54b0-d7b0-11ee-8ccf-5343da31b4a9", + "width": 32, + "height": 32, + "defUid": 8, + "px": [192,192], + "fieldInstances": [], + "__worldX": 1376, + "__worldY": 736 + }, + { + "__identifier": "PlayerPrimary", + "__grid": [9,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "0edb8440-d7b0-11ee-8ccf-23b26365b126", + "width": 32, + "height": 32, + "defUid": 3, + "px": [288,192], + "fieldInstances": [], + "__worldX": 1472, + "__worldY": 736 + }, + { + "__identifier": "Collectible", + "__grid": [3,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "af4816f0-d7b0-11ee-8ccf-f707f0bee477", + "width": 32, + "height": 32, + "defUid": 4, + "px": [96,160], + "fieldInstances": [], + "__worldX": 1280, + "__worldY": 704 + }, + { + "__identifier": "ObstacleWest", + "__grid": [5,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#BE4A2F", + "iid": "ba941680-d7b0-11ee-8ccf-87c36d8f8eac", + "width": 32, + "height": 32, + "defUid": 7, + "px": [160,160], + "fieldInstances": [], + "__worldX": 1344, + "__worldY": 704 + }, + { + "__identifier": "ObstacleEast", + "__grid": [9,9], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "f0a0c200-d7b0-11ee-8ccf-71183d61b5f1", + "width": 32, + "height": 32, + "defUid": 8, + "px": [288,288], + "fieldInstances": [], + "__worldX": 1472, + "__worldY": 832 + }, + { + "__identifier": "Collectible", + "__grid": [10,11], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "23632480-d7b0-11ee-8ccf-d163eddfc1d8", + "width": 32, + "height": 32, + "defUid": 4, + "px": [320,352], + "fieldInstances": [], + "__worldX": 1504, + "__worldY": 896 + }, + { + "__identifier": "ObstacleEast", + "__grid": [5,11], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "32e72870-d7b0-11ee-8ccf-0989861ca171", + "width": 32, + "height": 32, + "defUid": 8, + "px": [160,352], + "fieldInstances": [], + "__worldX": 1344, + "__worldY": 896 + }, + { + "__identifier": "Collectible", + "__grid": [4,4], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "3661f750-d7b0-11ee-8ccf-bb2cd30d54aa", + "width": 32, + "height": 32, + "defUid": 4, + "px": [128,128], + "fieldInstances": [], + "__worldX": 1312, + "__worldY": 672 + }, + { + "__identifier": "ObstacleWest", + "__grid": [5,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#BE4A2F", + "iid": "c18d4140-d7b0-11ee-8ccf-b7c4141033fe", + "width": 32, + "height": 32, + "defUid": 7, + "px": [160,256], + "fieldInstances": [], + "__worldX": 1344, + "__worldY": 800 + }, + { + "__identifier": "ObstacleSouth", + "__grid": [9,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#E43B44", + "iid": "ce2fa910-d7b0-11ee-8ccf-b7a5edb91306", + "width": 32, + "height": 32, + "defUid": 10, + "px": [288,160], + "fieldInstances": [], + "__worldX": 1472, + "__worldY": 704 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "d4791331-d7b0-11ee-8ccf-4796221636b5", + "levelId": 20, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 1377122, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [160,64], "src": [64,0], "f": 0, "t": 2, "d": [45], "a": 1 }, + { "px": [288,64], "src": [64,0], "f": 0, "t": 2, "d": [49], "a": 1 }, + { "px": [128,96], "src": [64,0], "f": 0, "t": 2, "d": [64], "a": 1 }, + { "px": [256,96], "src": [64,0], "f": 0, "t": 2, "d": [68], "a": 1 }, + { "px": [96,128], "src": [64,0], "f": 0, "t": 2, "d": [83], "a": 1 }, + { "px": [224,128], "src": [64,0], "f": 0, "t": 2, "d": [87], "a": 1 }, + { "px": [192,160], "src": [64,0], "f": 0, "t": 2, "d": [106], "a": 1 }, + { "px": [32,192], "src": [64,0], "f": 0, "t": 2, "d": [121], "a": 1 }, + { "px": [160,192], "src": [64,0], "f": 0, "t": 2, "d": [125], "a": 1 }, + { "px": [32,224], "src": [64,0], "f": 0, "t": 2, "d": [141], "a": 1 }, + { "px": [32,256], "src": [64,0], "f": 0, "t": 2, "d": [161], "a": 1 }, + { "px": [64,288], "src": [64,0], "f": 0, "t": 2, "d": [182], "a": 1 }, + { "px": [256,320], "src": [64,0], "f": 0, "t": 2, "d": [208], "a": 1 }, + { "px": [288,352], "src": [64,0], "f": 0, "t": 2, "d": [229], "a": 1 }, + { "px": [320,384], "src": [64,0], "f": 0, "t": 2, "d": [250], "a": 1 }, + { "px": [352,416], "src": [64,0], "f": 0, "t": 2, "d": [271], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "Take_Care", + "iid": "09b20910-d7b0-11ee-8ccf-3fe26d19ae37", + "uid": 21, + "worldX": 1888, + "worldY": 544, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 8, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [8] }] }, + { "__identifier": "description", "__type": "String", "__value": "Once Again!", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["Once Again!"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 11, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [11] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "09b23020-d7b0-11ee-8ccf-4fccb114c90d", + "levelId": 21, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 6935532, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "PlayerPrimary", + "__grid": [5,9], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "417a2030-d7b0-11ee-8ccf-c3afcaf4d0cf", + "width": 32, + "height": 32, + "defUid": 3, + "px": [160,288], + "fieldInstances": [], + "__worldX": 2048, + "__worldY": 832 + }, + { + "__identifier": "ObstacleEast", + "__grid": [5,4], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#D77643", + "iid": "48541fa0-d7b0-11ee-8ccf-5788550b76d9", + "width": 32, + "height": 32, + "defUid": 8, + "px": [160,128], + "fieldInstances": [], + "__worldX": 2048, + "__worldY": 672 + }, + { + "__identifier": "Collectible", + "__grid": [7,5], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "53aec530-d7b0-11ee-8ccf-f3b9ab85d060", + "width": 32, + "height": 32, + "defUid": 4, + "px": [224,160], + "fieldInstances": [], + "__worldX": 2112, + "__worldY": 704 + }, + { + "__identifier": "ObstacleSouth", + "__grid": [10,4], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#E43B44", + "iid": "8359fca0-d7b0-11ee-8ccf-dd3fda3d0c4f", + "width": 32, + "height": 32, + "defUid": 10, + "px": [320,128], + "fieldInstances": [], + "__worldX": 2208, + "__worldY": 672 + }, + { + "__identifier": "Collectible", + "__grid": [13,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "8b150d40-d7b0-11ee-8ccf-fd95c8bcb1ea", + "width": 32, + "height": 32, + "defUid": 4, + "px": [416,224], + "fieldInstances": [], + "__worldX": 2304, + "__worldY": 768 + }, + { + "__identifier": "ObstacleStar", + "__grid": [9,8], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#A22633", + "iid": "b8bdbdf0-d7b0-11ee-8ccf-03c9cd536733", + "width": 32, + "height": 32, + "defUid": 15, + "px": [288,256], + "fieldInstances": [], + "__worldX": 2176, + "__worldY": 800 + }, + { + "__identifier": "ObstacleWest", + "__grid": [8,10], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#BE4A2F", + "iid": "d57d5c70-d7b0-11ee-8ccf-2f226d41dffa", + "width": 32, + "height": 32, + "defUid": 7, + "px": [256,320], + "fieldInstances": [], + "__worldX": 2144, + "__worldY": 864 + }, + { + "__identifier": "Collectible", + "__grid": [9,9], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "d7caa7d0-d7b0-11ee-8ccf-a7060a56511e", + "width": 32, + "height": 32, + "defUid": 4, + "px": [288,288], + "fieldInstances": [], + "__worldX": 2176, + "__worldY": 832 + }, + { + "__identifier": "ObstacleNorth", + "__grid": [8,9], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 64, "w": 32, "h": 32 }, + "__smartColor": "#F77622", + "iid": "e0500d50-d7b0-11ee-8ccf-116ff4426e46", + "width": 32, + "height": 32, + "defUid": 9, + "px": [256,288], + "fieldInstances": [], + "__worldX": 2144, + "__worldY": 832 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "09b23021-d7b0-11ee-8ccf-318e20d47de0", + "levelId": 21, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 7293834, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [128,96], "src": [64,0], "f": 0, "t": 2, "d": [64], "a": 1 }, + { "px": [192,96], "src": [64,0], "f": 0, "t": 2, "d": [66], "a": 1 }, + { "px": [224,96], "src": [64,0], "f": 0, "t": 2, "d": [67], "a": 1 }, + { "px": [256,96], "src": [64,0], "f": 0, "t": 2, "d": [68], "a": 1 }, + { "px": [288,96], "src": [64,0], "f": 0, "t": 2, "d": [69], "a": 1 }, + { "px": [320,96], "src": [64,0], "f": 0, "t": 2, "d": [70], "a": 1 }, + { "px": [352,96], "src": [64,0], "f": 0, "t": 2, "d": [71], "a": 1 }, + { "px": [384,96], "src": [64,0], "f": 0, "t": 2, "d": [72], "a": 1 }, + { "px": [416,96], "src": [64,0], "f": 0, "t": 2, "d": [73], "a": 1 }, + { "px": [448,96], "src": [64,0], "f": 0, "t": 2, "d": [74], "a": 1 }, + { "px": [480,96], "src": [64,0], "f": 0, "t": 2, "d": [75], "a": 1 }, + { "px": [128,128], "src": [64,0], "f": 0, "t": 2, "d": [84], "a": 1 }, + { "px": [480,128], "src": [64,0], "f": 0, "t": 2, "d": [95], "a": 1 }, + { "px": [128,160], "src": [64,0], "f": 0, "t": 2, "d": [104], "a": 1 }, + { "px": [352,160], "src": [64,0], "f": 0, "t": 2, "d": [111], "a": 1 }, + { "px": [480,160], "src": [64,0], "f": 0, "t": 2, "d": [115], "a": 1 }, + { "px": [256,192], "src": [64,0], "f": 0, "t": 2, "d": [128], "a": 1 }, + { "px": [480,192], "src": [64,0], "f": 0, "t": 2, "d": [135], "a": 1 }, + { "px": [128,224], "src": [64,0], "f": 0, "t": 2, "d": [144], "a": 1 }, + { "px": [160,224], "src": [64,0], "f": 0, "t": 2, "d": [145], "a": 1 }, + { "px": [192,224], "src": [64,0], "f": 0, "t": 2, "d": [146], "a": 1 }, + { "px": [224,224], "src": [64,0], "f": 0, "t": 2, "d": [147], "a": 1 }, + { "px": [256,224], "src": [64,0], "f": 0, "t": 2, "d": [148], "a": 1 }, + { "px": [288,224], "src": [64,0], "f": 0, "t": 2, "d": [149], "a": 1 }, + { "px": [320,224], "src": [64,0], "f": 0, "t": 2, "d": [150], "a": 1 }, + { "px": [352,224], "src": [64,0], "f": 0, "t": 2, "d": [151], "a": 1 }, + { "px": [480,224], "src": [64,0], "f": 0, "t": 2, "d": [155], "a": 1 }, + { "px": [128,256], "src": [64,0], "f": 0, "t": 2, "d": [164], "a": 1 }, + { "px": [480,256], "src": [64,0], "f": 0, "t": 2, "d": [175], "a": 1 }, + { "px": [128,288], "src": [64,0], "f": 0, "t": 2, "d": [184], "a": 1 }, + { "px": [192,288], "src": [64,0], "f": 0, "t": 2, "d": [186], "a": 1 }, + { "px": [480,288], "src": [64,0], "f": 0, "t": 2, "d": [195], "a": 1 }, + { "px": [128,320], "src": [64,0], "f": 0, "t": 2, "d": [204], "a": 1 }, + { "px": [192,320], "src": [64,0], "f": 0, "t": 2, "d": [206], "a": 1 }, + { "px": [480,320], "src": [64,0], "f": 0, "t": 2, "d": [215], "a": 1 }, + { "px": [128,352], "src": [64,0], "f": 0, "t": 2, "d": [224], "a": 1 }, + { "px": [192,352], "src": [64,0], "f": 0, "t": 2, "d": [226], "a": 1 }, + { "px": [224,352], "src": [64,0], "f": 0, "t": 2, "d": [227], "a": 1 }, + { "px": [256,352], "src": [64,0], "f": 0, "t": 2, "d": [228], "a": 1 }, + { "px": [288,352], "src": [64,0], "f": 0, "t": 2, "d": [229], "a": 1 }, + { "px": [320,352], "src": [64,0], "f": 0, "t": 2, "d": [230], "a": 1 }, + { "px": [352,352], "src": [64,0], "f": 0, "t": 2, "d": [231], "a": 1 }, + { "px": [384,352], "src": [64,0], "f": 0, "t": 2, "d": [232], "a": 1 }, + { "px": [416,352], "src": [64,0], "f": 0, "t": 2, "d": [233], "a": 1 }, + { "px": [448,352], "src": [64,0], "f": 0, "t": 2, "d": [234], "a": 1 }, + { "px": [480,352], "src": [64,0], "f": 0, "t": 2, "d": [235], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] + }, + { + "identifier": "First_Secrets", + "iid": "12deb5a0-d7b0-11ee-8ccf-e73611c6c22b", + "uid": 22, + "worldX": -224, + "worldY": 1088, + "worldDepth": 0, + "pxWid": 640, + "pxHei": 480, + "__bgColor": "#696A79", + "bgColor": null, + "useAutoIdentifier": false, + "bgRelPath": "../sprites/background-lila.png", + "bgPos": "Cover", + "bgPivotX": 0.5, + "bgPivotY": 0.5, + "__smartColor": "#ADADB5", + "__bgPos": { "topLeftPx": [0,0], "scale": [1,1], "cropRect": [0,0,640,480] }, + "externalRelPath": null, + "fieldInstances": [ + { "__identifier": "level", "__type": "Int", "__value": 9, "__tile": null, "defUid": 11, "realEditorValues": [{ "id": "V_Int", "params": [9] }] }, + { "__identifier": "description", "__type": "String", "__value": "Some things don't are as they appear", "__tile": null, "defUid": 12, "realEditorValues": [{ + "id": "V_String", + "params": ["Some things don't are as they appear"] + }] }, + { "__identifier": "background", "__type": "String", "__value": "background-lila", "__tile": null, "defUid": 13, "realEditorValues": [] }, + { "__identifier": "minmoves", "__type": "Int", "__value": 8, "__tile": null, "defUid": 14, "realEditorValues": [{ "id": "V_Int", "params": [8] }] } + ], + "layerInstances": [ + { + "__identifier": "Entities", + "__type": "Entities", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "12dedcb0-d7b0-11ee-8ccf-43b6eb0267a9", + "levelId": 22, + "layerDefUid": 5, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 8594285, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [ + { + "__identifier": "HiddenDoor", + "__grid": [15,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 64, "y": 0, "w": 32, "h": 32 }, + "__smartColor": "#348D3F", + "iid": "aea1bd70-d7b0-11ee-8ccf-4f07c1b316c2", + "width": 32, + "height": 32, + "defUid": 23, + "px": [480,192], + "fieldInstances": [], + "__worldX": 256, + "__worldY": 1280 + }, + { + "__identifier": "PlayerPrimary", + "__grid": [13,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#2F3BBE", + "iid": "b4b51180-d7b0-11ee-8ccf-2d1bf52a8fb8", + "width": 32, + "height": 32, + "defUid": 3, + "px": [416,192], + "fieldInstances": [], + "__worldX": 192, + "__worldY": 1280 + }, + { + "__identifier": "Collectible", + "__grid": [5,7], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "d059ca20-d7b0-11ee-8ccf-4bf2422f5f59", + "width": 32, + "height": 32, + "defUid": 4, + "px": [160,224], + "fieldInstances": [], + "__worldX": -64, + "__worldY": 1312 + }, + { + "__identifier": "Collectible", + "__grid": [6,9], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 32, "y": 32, "w": 32, "h": 32 }, + "__smartColor": "#FEAE34", + "iid": "d4400500-d7b0-11ee-8ccf-2d065d1c4ab1", + "width": 32, + "height": 32, + "defUid": 4, + "px": [192,288], + "fieldInstances": [], + "__worldX": -32, + "__worldY": 1376 + }, + { + "__identifier": "ObstacleWest", + "__grid": [10,6], + "__pivot": [0,0], + "__tags": [], + "__tile": { "tilesetUid": 1, "x": 0, "y": 96, "w": 32, "h": 32 }, + "__smartColor": "#BE4A2F", + "iid": "e8caf610-d7b0-11ee-8ccf-9d5cca1d9a28", + "width": 32, + "height": 32, + "defUid": 7, + "px": [320,192], + "fieldInstances": [], + "__worldX": 96, + "__worldY": 1280 + } + ] + }, + { + "__identifier": "Tiles", + "__type": "Tiles", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 32, + "__opacity": 1, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": 1, + "__tilesetRelPath": "../sprites/map.png", + "iid": "12dedcb1-d7b0-11ee-8ccf-db9f9b23dea3", + "levelId": 22, + "layerDefUid": 2, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [], + "autoLayerTiles": [], + "seed": 1039638, + "overrideTilesetUid": null, + "gridTiles": [ + { "px": [128,128], "src": [64,0], "f": 0, "t": 2, "d": [84], "a": 1 }, + { "px": [160,128], "src": [64,0], "f": 0, "t": 2, "d": [85], "a": 1 }, + { "px": [224,128], "src": [64,0], "f": 0, "t": 2, "d": [87], "a": 1 }, + { "px": [384,128], "src": [64,0], "f": 0, "t": 2, "d": [92], "a": 1 }, + { "px": [416,128], "src": [64,0], "f": 0, "t": 2, "d": [93], "a": 1 }, + { "px": [448,128], "src": [64,0], "f": 0, "t": 2, "d": [94], "a": 1 }, + { "px": [480,128], "src": [64,0], "f": 0, "t": 2, "d": [95], "a": 1 }, + { "px": [128,160], "src": [64,0], "f": 0, "t": 2, "d": [104], "a": 1 }, + { "px": [224,160], "src": [64,0], "f": 0, "t": 2, "d": [107], "a": 1 }, + { "px": [384,160], "src": [64,0], "f": 0, "t": 2, "d": [112], "a": 1 }, + { "px": [480,160], "src": [64,0], "f": 0, "t": 2, "d": [115], "a": 1 }, + { "px": [224,192], "src": [64,0], "f": 0, "t": 2, "d": [127], "a": 1 }, + { "px": [128,224], "src": [64,0], "f": 0, "t": 2, "d": [144], "a": 1 }, + { "px": [224,224], "src": [64,0], "f": 0, "t": 2, "d": [147], "a": 1 }, + { "px": [384,224], "src": [64,0], "f": 0, "t": 2, "d": [152], "a": 1 }, + { "px": [480,224], "src": [64,0], "f": 0, "t": 2, "d": [155], "a": 1 }, + { "px": [128,256], "src": [64,0], "f": 0, "t": 2, "d": [164], "a": 1 }, + { "px": [160,256], "src": [64,0], "f": 0, "t": 2, "d": [165], "a": 1 }, + { "px": [192,256], "src": [64,0], "f": 0, "t": 2, "d": [166], "a": 1 }, + { "px": [224,256], "src": [64,0], "f": 0, "t": 2, "d": [167], "a": 1 }, + { "px": [384,256], "src": [64,0], "f": 0, "t": 2, "d": [172], "a": 1 }, + { "px": [416,256], "src": [64,0], "f": 0, "t": 2, "d": [173], "a": 1 }, + { "px": [448,256], "src": [64,0], "f": 0, "t": 2, "d": [174], "a": 1 }, + { "px": [480,256], "src": [64,0], "f": 0, "t": 2, "d": [175], "a": 1 } + ], + "entityInstances": [] + } + ], + "__neighbours": [] } ], "worlds": [], diff --git a/assets/loader-levels.go b/assets/loader-levels.go index ed8909b..ec59e13 100644 --- a/assets/loader-levels.go +++ b/assets/loader-levels.go @@ -203,8 +203,8 @@ func InitTiles() TileRegistry { "particle-ring-5", "particle-ring-6", }), - "transient": NewTileTranswall([]string{"transwall", "block-orange-32"}), - "hiddendoor": NewTileHiddenDoor([]string{"block-greycolored", "block-greycolored-damaged"}), + "Transient": NewTileTranswall([]string{"transwall", "block-orange-32"}), + "HiddenDoor": NewTileHiddenDoor([]string{"block-greycolored", "block-greycolored-damaged"}), } } diff --git a/config/static.go b/config/static.go index 30e4567..e1d579a 100644 --- a/config/static.go +++ b/config/static.go @@ -14,3 +14,6 @@ const ( const PLAYERSPEED int = 5 const PARTICLE_LOOPWAIT time.Duration = 250 * time.Millisecond const LEVEL_END_WAIT time.Duration = 500 * time.Millisecond +const version string = "1.1.0" + +var VERSION string // maintained by -x diff --git a/game/about_scene.go b/game/about_scene.go index 9a7c7a7..4d2b541 100644 --- a/game/about_scene.go +++ b/game/about_scene.go @@ -4,6 +4,7 @@ import ( "image/color" "log/slog" "openquell/assets" + "openquell/config" "openquell/gameui" "github.com/ebitenui/ebitenui" @@ -27,7 +28,8 @@ Thomas von Dein . Download it on repo.daemon.de/openquell/. Copyright (c) 2024 by Thomas von Dein. -` + +Version: ` func NewAboutScene(game *Game) Scene { scene := &AboutScene{Whoami: About, Game: game, Next: About} @@ -81,7 +83,7 @@ func (scene *AboutScene) SetupUI() { ) about := widget.NewText( - widget.TextOpts.Text(ABOUT, *assets.FontRenderer.FontNormal, blue), + widget.TextOpts.Text(ABOUT+config.VERSION, *assets.FontRenderer.FontNormal, blue), widget.TextOpts.Position(widget.TextPositionStart, widget.TextPositionCenter), ) diff --git a/game/levels.go b/game/levels.go index e87f7d4..d38bc8a 100644 --- a/game/levels.go +++ b/game/levels.go @@ -8,6 +8,7 @@ import ( "openquell/grid" "openquell/observers" "openquell/systems" + "strings" "github.com/hajimehoshi/ebiten/v2" "github.com/mlange-42/arche/ecs" @@ -64,7 +65,7 @@ func NewLevel(game *Game, cellsize int, plan *ldtkgo.Level) *Level { Width: game.ScreenWidth, Height: game.ScreenHeight, Description: plan.PropertyByIdentifier("description").AsString(), - Name: plan.Identifier, + Name: strings.ReplaceAll(plan.Identifier, "_", " "), GridContainer: gridcontainer, Systems: systemlist, } diff --git a/game/nextlevel_scene.go b/game/nextlevel_scene.go index 66617e9..cf8eb2e 100644 --- a/game/nextlevel_scene.go +++ b/game/nextlevel_scene.go @@ -77,7 +77,7 @@ func (scene *NextlevelScene) Draw(screen *ebiten.Image) { func (scene *NextlevelScene) SetupUI() { observer := observers.GetGameObserver(scene.Game.World) slog.Debug("levels", "max", observer.MaxLevels, "current", observer.CurrentLevel) - if observer.MaxLevels == observer.CurrentLevel+1 { + if observer.MaxLevels == observer.CurrentLevel+1 && !observer.Lost { scene.SetupUILast() } else { scene.SetupUIRetry() @@ -120,9 +120,11 @@ func (scene *NextlevelScene) SetupUILast() { func (scene *NextlevelScene) SetupUIRetry() { blue := color.RGBA{0, 255, 128, 255} observer := observers.GetGameObserver(scene.Game.World) + buttonNext := &widget.Button{} rowContainer := gameui.NewRowContainer(false) labeltext := fmt.Sprintf("Great! (Score: %d)", observer.GetLevelScore()) + islast := observer.MaxLevels == observer.CurrentLevel+1 switch observer.Lost { case true: @@ -135,11 +137,13 @@ func (scene *NextlevelScene) SetupUIRetry() { observer.Retry = true }) - buttonNext := gameui.NewMenuButton("Next Level", *assets.FontRenderer.FontNormal, - func(args *widget.ButtonClickedEventArgs) { - scene.SetNext(Play) - observer.Retry = false - }) + if !islast { + buttonNext = gameui.NewMenuButton("Next Level", *assets.FontRenderer.FontNormal, + func(args *widget.ButtonClickedEventArgs) { + scene.SetNext(Play) + observer.Retry = false + }) + } buttonAbort := gameui.NewMenuButton("Abort", *assets.FontRenderer.FontNormal, func(args *widget.ButtonClickedEventArgs) { @@ -152,7 +156,9 @@ func (scene *NextlevelScene) SetupUIRetry() { ) rowContainer.AddChild(label) - rowContainer.AddChild(buttonNext) + if !islast { + rowContainer.AddChild(buttonNext) + } rowContainer.AddChild(buttonRetry) rowContainer.AddChild(buttonAbort) diff --git a/observers/game_observer.go b/observers/game_observer.go index 359a442..9427fed 100644 --- a/observers/game_observer.go +++ b/observers/game_observer.go @@ -4,6 +4,8 @@ import ( "math/rand" "openquell/components" + "log/slog" + "github.com/mlange-42/arche/ecs" "github.com/mlange-42/arche/ecs/event" "github.com/mlange-42/arche/generic" @@ -150,10 +152,18 @@ func (observer *GameObserver) AddScore() { level := observer.CurrentLevel moves := observer.Moves + slog.Debug("AddScore", "moves", observer.Moves) + if observer.Lost { observer.LevelScore[level].Score = 0 + slog.Debug("lost") } else { observer.LevelScore[level].Score = ((observer.LevelScore[level].Min * 100) / moves) / 30 + slog.Debug("won", "score", observer.LevelScore[level].Score, + "Min", observer.LevelScore[level].Min, + "Min-x-100", observer.LevelScore[level].Min*100, + "Min-x-100-moves", (observer.LevelScore[level].Min*100)/moves, + ) } observer.Moves = 0