Save repo in a random state prior to big refactors
This commit is contained in:
		
							
								
								
									
										779
									
								
								src/art/mapdata/maps.ldtk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										779
									
								
								src/art/mapdata/maps.ldtk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,779 @@ | ||||
| { | ||||
| 	"__header__": { | ||||
| 		"fileType": "LDtk Project JSON", | ||||
| 		"app": "LDtk", | ||||
| 		"doc": "https://ldtk.io/json", | ||||
| 		"schema": "https://ldtk.io/files/JSON_SCHEMA.json", | ||||
| 		"appAuthor": "Sebastien 'deepnight' Benard", | ||||
| 		"appVersion": "1.5.3", | ||||
| 		"url": "https://ldtk.io" | ||||
| 	}, | ||||
| 	"iid": "f7ed7e70-c210-11ef-bffb-911ba1dc425d", | ||||
| 	"jsonVersion": "1.5.3", | ||||
| 	"appBuildId": 473703, | ||||
| 	"nextUid": 9, | ||||
| 	"identifierStyle": "Capitalize", | ||||
| 	"toc": [], | ||||
| 	"worldLayout": "Free", | ||||
| 	"worldGridWidth": 256, | ||||
| 	"worldGridHeight": 256, | ||||
| 	"defaultLevelWidth": 256, | ||||
| 	"defaultLevelHeight": 256, | ||||
| 	"defaultPivotX": 0, | ||||
| 	"defaultPivotY": 0, | ||||
| 	"defaultGridSize": 16, | ||||
| 	"defaultEntityWidth": 16, | ||||
| 	"defaultEntityHeight": 16, | ||||
| 	"bgColor": "#40465B", | ||||
| 	"defaultLevelBgColor": "#696A79", | ||||
| 	"minifyJson": false, | ||||
| 	"externalLevels": false, | ||||
| 	"exportTiled": false, | ||||
| 	"simplifiedExport": false, | ||||
| 	"imageExportMode": "None", | ||||
| 	"exportLevelBg": true, | ||||
| 	"pngFilePattern": null, | ||||
| 	"backupOnSave": false, | ||||
| 	"backupLimit": 10, | ||||
| 	"backupRelPath": null, | ||||
| 	"levelNamePattern": "Level_%idx", | ||||
| 	"tutorialDesc": null, | ||||
| 	"customCommands": [], | ||||
| 	"flags": [], | ||||
| 	"defs": { "layers": [ | ||||
| 		{ | ||||
| 			"__type": "Tiles", | ||||
| 			"identifier": "Floor_2", | ||||
| 			"type": "Tiles", | ||||
| 			"uid": 7, | ||||
| 			"doc": null, | ||||
| 			"uiColor": null, | ||||
| 			"gridSize": 32, | ||||
| 			"guideGridWid": 0, | ||||
| 			"guideGridHei": 0, | ||||
| 			"displayOpacity": 1, | ||||
| 			"inactiveOpacity": 1, | ||||
| 			"hideInList": false, | ||||
| 			"hideFieldsWhenInactive": false, | ||||
| 			"canSelectWhenInactive": true, | ||||
| 			"renderInWorldView": true, | ||||
| 			"pxOffsetX": 0, | ||||
| 			"pxOffsetY": 0, | ||||
| 			"parallaxFactorX": 0, | ||||
| 			"parallaxFactorY": 0, | ||||
| 			"parallaxScaling": true, | ||||
| 			"requiredTags": [], | ||||
| 			"excludedTags": [], | ||||
| 			"autoTilesKilledByOtherLayerUid": null, | ||||
| 			"uiFilterTags": [], | ||||
| 			"useAsyncRender": false, | ||||
| 			"intGridValues": [], | ||||
| 			"intGridValuesGroups": [], | ||||
| 			"autoRuleGroups": [], | ||||
| 			"autoSourceLayerDefUid": null, | ||||
| 			"tilesetDefUid": 1, | ||||
| 			"tilePivotX": 0, | ||||
| 			"tilePivotY": 0, | ||||
| 			"biomeFieldUid": null | ||||
| 		}, | ||||
| 		{ | ||||
| 			"__type": "Tiles", | ||||
| 			"identifier": "Walls", | ||||
| 			"type": "Tiles", | ||||
| 			"uid": 6, | ||||
| 			"doc": null, | ||||
| 			"uiColor": null, | ||||
| 			"gridSize": 32, | ||||
| 			"guideGridWid": 0, | ||||
| 			"guideGridHei": 0, | ||||
| 			"displayOpacity": 1, | ||||
| 			"inactiveOpacity": 1, | ||||
| 			"hideInList": false, | ||||
| 			"hideFieldsWhenInactive": false, | ||||
| 			"canSelectWhenInactive": true, | ||||
| 			"renderInWorldView": true, | ||||
| 			"pxOffsetX": 0, | ||||
| 			"pxOffsetY": 0, | ||||
| 			"parallaxFactorX": 0, | ||||
| 			"parallaxFactorY": 0, | ||||
| 			"parallaxScaling": true, | ||||
| 			"requiredTags": [], | ||||
| 			"excludedTags": [], | ||||
| 			"autoTilesKilledByOtherLayerUid": null, | ||||
| 			"uiFilterTags": [], | ||||
| 			"useAsyncRender": false, | ||||
| 			"intGridValues": [], | ||||
| 			"intGridValuesGroups": [], | ||||
| 			"autoRuleGroups": [], | ||||
| 			"autoSourceLayerDefUid": null, | ||||
| 			"tilesetDefUid": 3, | ||||
| 			"tilePivotX": 0, | ||||
| 			"tilePivotY": 0, | ||||
| 			"biomeFieldUid": null | ||||
| 		}, | ||||
| 		{ | ||||
| 			"__type": "Tiles", | ||||
| 			"identifier": "Floor", | ||||
| 			"type": "Tiles", | ||||
| 			"uid": 5, | ||||
| 			"doc": null, | ||||
| 			"uiColor": null, | ||||
| 			"gridSize": 32, | ||||
| 			"guideGridWid": 0, | ||||
| 			"guideGridHei": 0, | ||||
| 			"displayOpacity": 1, | ||||
| 			"inactiveOpacity": 1, | ||||
| 			"hideInList": false, | ||||
| 			"hideFieldsWhenInactive": false, | ||||
| 			"canSelectWhenInactive": true, | ||||
| 			"renderInWorldView": true, | ||||
| 			"pxOffsetX": 0, | ||||
| 			"pxOffsetY": 0, | ||||
| 			"parallaxFactorX": 0, | ||||
| 			"parallaxFactorY": 0, | ||||
| 			"parallaxScaling": true, | ||||
| 			"requiredTags": [], | ||||
| 			"excludedTags": [], | ||||
| 			"autoTilesKilledByOtherLayerUid": null, | ||||
| 			"uiFilterTags": [], | ||||
| 			"useAsyncRender": false, | ||||
| 			"intGridValues": [], | ||||
| 			"intGridValuesGroups": [], | ||||
| 			"autoRuleGroups": [], | ||||
| 			"autoSourceLayerDefUid": null, | ||||
| 			"tilesetDefUid": 2, | ||||
| 			"tilePivotX": 0, | ||||
| 			"tilePivotY": 0, | ||||
| 			"biomeFieldUid": null | ||||
| 		} | ||||
| 	], "entities": [], "tilesets": [ | ||||
| 		{ | ||||
| 			"__cWid": 3, | ||||
| 			"__cHei": 3, | ||||
| 			"identifier": "Intercut", | ||||
| 			"uid": 1, | ||||
| 			"relPath": "../tilesets/intercut.png", | ||||
| 			"embedAtlas": null, | ||||
| 			"pxWid": 96, | ||||
| 			"pxHei": 96, | ||||
| 			"tileGridSize": 32, | ||||
| 			"spacing": 0, | ||||
| 			"padding": 0, | ||||
| 			"tags": [], | ||||
| 			"tagsSourceEnumUid": null, | ||||
| 			"enumTags": [], | ||||
| 			"customData": [], | ||||
| 			"savedSelections": [], | ||||
| 			"cachedPixelData": { "opaqueTiles": "111111111", "averageColors": "f223f223f223f223f223f223f223f223f223" } | ||||
| 		}, | ||||
| 		{ | ||||
| 			"__cWid": 1, | ||||
| 			"__cHei": 1, | ||||
| 			"identifier": "Base", | ||||
| 			"uid": 2, | ||||
| 			"relPath": "../tilesets/base.png", | ||||
| 			"embedAtlas": null, | ||||
| 			"pxWid": 32, | ||||
| 			"pxHei": 32, | ||||
| 			"tileGridSize": 32, | ||||
| 			"spacing": 0, | ||||
| 			"padding": 0, | ||||
| 			"tags": [], | ||||
| 			"tagsSourceEnumUid": null, | ||||
| 			"enumTags": [], | ||||
| 			"customData": [], | ||||
| 			"savedSelections": [], | ||||
| 			"cachedPixelData": { "opaqueTiles": "1", "averageColors": "f111" } | ||||
| 		}, | ||||
| 		{ | ||||
| 			"__cWid": 3, | ||||
| 			"__cHei": 3, | ||||
| 			"identifier": "Walls", | ||||
| 			"uid": 3, | ||||
| 			"relPath": "../tilesets/walls.png", | ||||
| 			"embedAtlas": null, | ||||
| 			"pxWid": 96, | ||||
| 			"pxHei": 96, | ||||
| 			"tileGridSize": 32, | ||||
| 			"spacing": 0, | ||||
| 			"padding": 0, | ||||
| 			"tags": [], | ||||
| 			"tagsSourceEnumUid": null, | ||||
| 			"enumTags": [], | ||||
| 			"customData": [], | ||||
| 			"savedSelections": [], | ||||
| 			"cachedPixelData": { "opaqueTiles": "111111111", "averageColors": "f88af89af88af89af89af89af88af89af88a" } | ||||
| 		}, | ||||
| 		{ | ||||
| 			"__cWid": 1, | ||||
| 			"__cHei": 1, | ||||
| 			"identifier": "Block", | ||||
| 			"uid": 4, | ||||
| 			"relPath": "../tilesets/block.png", | ||||
| 			"embedAtlas": null, | ||||
| 			"pxWid": 32, | ||||
| 			"pxHei": 32, | ||||
| 			"tileGridSize": 32, | ||||
| 			"spacing": 0, | ||||
| 			"padding": 0, | ||||
| 			"tags": [], | ||||
| 			"tagsSourceEnumUid": null, | ||||
| 			"enumTags": [], | ||||
| 			"customData": [], | ||||
| 			"savedSelections": [], | ||||
| 			"cachedPixelData": { "opaqueTiles": "1", "averageColors": "f88a" } | ||||
| 		} | ||||
| 	], "enums": [], "externalEnums": [], "levelFields": [] }, | ||||
| 	"levels": [ | ||||
| 		{ | ||||
| 			"identifier": "Level_0", | ||||
| 			"iid": "f7eda580-c210-11ef-bffb-6b05aa089ccc", | ||||
| 			"uid": 0, | ||||
| 			"worldX": 0, | ||||
| 			"worldY": 0, | ||||
| 			"worldDepth": 0, | ||||
| 			"pxWid": 384, | ||||
| 			"pxHei": 288, | ||||
| 			"__bgColor": "#696A79", | ||||
| 			"bgColor": null, | ||||
| 			"useAutoIdentifier": true, | ||||
| 			"bgRelPath": null, | ||||
| 			"bgPos": null, | ||||
| 			"bgPivotX": 0.5, | ||||
| 			"bgPivotY": 0.5, | ||||
| 			"__smartColor": "#ADADB5", | ||||
| 			"__bgPos": null, | ||||
| 			"externalRelPath": null, | ||||
| 			"fieldInstances": [], | ||||
| 			"layerInstances": [ | ||||
| 				{ | ||||
| 					"__identifier": "Floor_2", | ||||
| 					"__type": "Tiles", | ||||
| 					"__cWid": 12, | ||||
| 					"__cHei": 9, | ||||
| 					"__gridSize": 32, | ||||
| 					"__opacity": 1, | ||||
| 					"__pxTotalOffsetX": 0, | ||||
| 					"__pxTotalOffsetY": 0, | ||||
| 					"__tilesetDefUid": 1, | ||||
| 					"__tilesetRelPath": "../tilesets/intercut.png", | ||||
| 					"iid": "22e79470-c210-11ef-bffb-f789fe121d9f", | ||||
| 					"levelId": 0, | ||||
| 					"layerDefUid": 7, | ||||
| 					"pxOffsetX": 0, | ||||
| 					"pxOffsetY": 0, | ||||
| 					"visible": true, | ||||
| 					"optionalRules": [], | ||||
| 					"intGridCsv": [], | ||||
| 					"autoLayerTiles": [], | ||||
| 					"seed": 7519619, | ||||
| 					"overrideTilesetUid": null, | ||||
| 					"gridTiles": [ | ||||
| 						{ "px": [32,32], "src": [0,0], "f": 0, "t": 0, "d": [13], "a": 1 }, | ||||
| 						{ "px": [64,32], "src": [64,0], "f": 0, "t": 2, "d": [14], "a": 1 }, | ||||
| 						{ "px": [288,32], "src": [0,0], "f": 0, "t": 0, "d": [21], "a": 1 }, | ||||
| 						{ "px": [320,32], "src": [64,0], "f": 0, "t": 2, "d": [22], "a": 1 }, | ||||
| 						{ "px": [32,64], "src": [0,64], "f": 0, "t": 6, "d": [25], "a": 1 }, | ||||
| 						{ "px": [64,64], "src": [32,32], "f": 0, "t": 4, "d": [26], "a": 1 }, | ||||
| 						{ "px": [96,64], "src": [32,0], "f": 0, "t": 1, "d": [27], "a": 1 }, | ||||
| 						{ "px": [128,64], "src": [32,0], "f": 0, "t": 1, "d": [28], "a": 1 }, | ||||
| 						{ "px": [160,64], "src": [32,0], "f": 0, "t": 1, "d": [29], "a": 1 }, | ||||
| 						{ "px": [192,64], "src": [32,0], "f": 0, "t": 1, "d": [30], "a": 1 }, | ||||
| 						{ "px": [224,64], "src": [32,0], "f": 0, "t": 1, "d": [31], "a": 1 }, | ||||
| 						{ "px": [256,64], "src": [32,0], "f": 0, "t": 1, "d": [32], "a": 1 }, | ||||
| 						{ "px": [288,64], "src": [32,32], "f": 0, "t": 4, "d": [33], "a": 1 }, | ||||
| 						{ "px": [320,64], "src": [64,64], "f": 0, "t": 8, "d": [34], "a": 1 }, | ||||
| 						{ "px": [64,96], "src": [0,32], "f": 0, "t": 3, "d": [38], "a": 1 }, | ||||
| 						{ "px": [96,96], "src": [32,32], "f": 0, "t": 4, "d": [39], "a": 1 }, | ||||
| 						{ "px": [128,96], "src": [32,64], "f": 0, "t": 7, "d": [40], "a": 1 }, | ||||
| 						{ "px": [160,96], "src": [32,64], "f": 0, "t": 7, "d": [41], "a": 1 }, | ||||
| 						{ "px": [192,96], "src": [32,64], "f": 0, "t": 7, "d": [42], "a": 1 }, | ||||
| 						{ "px": [224,96], "src": [32,64], "f": 0, "t": 7, "d": [43], "a": 1 }, | ||||
| 						{ "px": [256,96], "src": [32,32], "f": 0, "t": 4, "d": [44], "a": 1 }, | ||||
| 						{ "px": [288,96], "src": [64,32], "f": 0, "t": 5, "d": [45], "a": 1 }, | ||||
| 						{ "px": [64,128], "src": [0,32], "f": 0, "t": 3, "d": [50], "a": 1 }, | ||||
| 						{ "px": [96,128], "src": [64,32], "f": 0, "t": 5, "d": [51], "a": 1 }, | ||||
| 						{ "px": [256,128], "src": [0,32], "f": 0, "t": 3, "d": [56], "a": 1 }, | ||||
| 						{ "px": [288,128], "src": [64,32], "f": 0, "t": 5, "d": [57], "a": 1 }, | ||||
| 						{ "px": [64,160], "src": [0,32], "f": 0, "t": 3, "d": [62], "a": 1 }, | ||||
| 						{ "px": [96,160], "src": [32,32], "f": 0, "t": 4, "d": [63], "a": 1 }, | ||||
| 						{ "px": [128,160], "src": [32,0], "f": 0, "t": 1, "d": [64], "a": 1 }, | ||||
| 						{ "px": [160,160], "src": [32,0], "f": 0, "t": 1, "d": [65], "a": 1 }, | ||||
| 						{ "px": [192,160], "src": [32,0], "f": 0, "t": 1, "d": [66], "a": 1 }, | ||||
| 						{ "px": [224,160], "src": [32,0], "f": 0, "t": 1, "d": [67], "a": 1 }, | ||||
| 						{ "px": [256,160], "src": [32,32], "f": 0, "t": 4, "d": [68], "a": 1 }, | ||||
| 						{ "px": [288,160], "src": [64,32], "f": 0, "t": 5, "d": [69], "a": 1 }, | ||||
| 						{ "px": [32,192], "src": [0,0], "f": 0, "t": 0, "d": [73], "a": 1 }, | ||||
| 						{ "px": [64,192], "src": [32,32], "f": 0, "t": 4, "d": [74], "a": 1 }, | ||||
| 						{ "px": [96,192], "src": [32,64], "f": 0, "t": 7, "d": [75], "a": 1 }, | ||||
| 						{ "px": [128,192], "src": [32,64], "f": 0, "t": 7, "d": [76], "a": 1 }, | ||||
| 						{ "px": [160,192], "src": [32,64], "f": 0, "t": 7, "d": [77], "a": 1 }, | ||||
| 						{ "px": [192,192], "src": [32,64], "f": 0, "t": 7, "d": [78], "a": 1 }, | ||||
| 						{ "px": [224,192], "src": [32,64], "f": 0, "t": 7, "d": [79], "a": 1 }, | ||||
| 						{ "px": [256,192], "src": [32,64], "f": 0, "t": 7, "d": [80], "a": 1 }, | ||||
| 						{ "px": [288,192], "src": [32,32], "f": 0, "t": 4, "d": [81], "a": 1 }, | ||||
| 						{ "px": [320,192], "src": [64,0], "f": 0, "t": 2, "d": [82], "a": 1 }, | ||||
| 						{ "px": [32,224], "src": [0,64], "f": 0, "t": 6, "d": [85], "a": 1 }, | ||||
| 						{ "px": [64,224], "src": [64,64], "f": 0, "t": 8, "d": [86], "a": 1 }, | ||||
| 						{ "px": [288,224], "src": [0,64], "f": 0, "t": 6, "d": [93], "a": 1 }, | ||||
| 						{ "px": [320,224], "src": [64,64], "f": 0, "t": 8, "d": [94], "a": 1 } | ||||
| 					], | ||||
| 					"entityInstances": [] | ||||
| 				}, | ||||
| 				{ | ||||
| 					"__identifier": "Walls", | ||||
| 					"__type": "Tiles", | ||||
| 					"__cWid": 12, | ||||
| 					"__cHei": 9, | ||||
| 					"__gridSize": 32, | ||||
| 					"__opacity": 1, | ||||
| 					"__pxTotalOffsetX": 0, | ||||
| 					"__pxTotalOffsetY": 0, | ||||
| 					"__tilesetDefUid": 3, | ||||
| 					"__tilesetRelPath": "../tilesets/walls.png", | ||||
| 					"iid": "857a8620-c210-11ef-bffb-8318132dc9ca", | ||||
| 					"levelId": 0, | ||||
| 					"layerDefUid": 6, | ||||
| 					"pxOffsetX": 0, | ||||
| 					"pxOffsetY": 0, | ||||
| 					"visible": true, | ||||
| 					"optionalRules": [], | ||||
| 					"intGridCsv": [], | ||||
| 					"autoLayerTiles": [], | ||||
| 					"seed": 8442990, | ||||
| 					"overrideTilesetUid": null, | ||||
| 					"gridTiles": [ | ||||
| 						{ "px": [0,0], "src": [64,64], "f": 0, "t": 8, "d": [0], "a": 1 }, | ||||
| 						{ "px": [128,0], "src": [0,64], "f": 0, "t": 6, "d": [4], "a": 1 }, | ||||
| 						{ "px": [160,0], "src": [32,64], "f": 0, "t": 7, "d": [5], "a": 1 }, | ||||
| 						{ "px": [192,0], "src": [32,64], "f": 0, "t": 7, "d": [6], "a": 1 }, | ||||
| 						{ "px": [224,0], "src": [64,64], "f": 0, "t": 8, "d": [7], "a": 1 }, | ||||
| 						{ "px": [352,0], "src": [0,64], "f": 0, "t": 6, "d": [11], "a": 1 }, | ||||
| 						{ "px": [64,64], "src": [0,0], "f": 0, "t": 0, "d": [26], "a": 1 }, | ||||
| 						{ "px": [96,64], "src": [64,0], "f": 0, "t": 2, "d": [27], "a": 1 }, | ||||
| 						{ "px": [160,64], "src": [0,0], "f": 0, "t": 0, "d": [29], "a": 1 }, | ||||
| 						{ "px": [256,64], "src": [0,0], "f": 0, "t": 0, "d": [32], "a": 1 }, | ||||
| 						{ "px": [64,96], "src": [0,64], "f": 0, "t": 6, "d": [38], "a": 1 }, | ||||
| 						{ "px": [96,96], "src": [64,64], "f": 0, "t": 8, "d": [39], "a": 1 }, | ||||
| 						{ "px": [160,96], "src": [0,64], "f": 0, "t": 6, "d": [41], "a": 1 }, | ||||
| 						{ "px": [256,96], "src": [0,64], "f": 0, "t": 6, "d": [44], "a": 1 }, | ||||
| 						{ "px": [0,256], "src": [64,0], "f": 0, "t": 2, "d": [96], "a": 1 }, | ||||
| 						{ "px": [128,256], "src": [0,0], "f": 0, "t": 0, "d": [100], "a": 1 }, | ||||
| 						{ "px": [160,256], "src": [32,0], "f": 0, "t": 1, "d": [101], "a": 1 }, | ||||
| 						{ "px": [192,256], "src": [32,0], "f": 0, "t": 1, "d": [102], "a": 1 }, | ||||
| 						{ "px": [224,256], "src": [64,0], "f": 0, "t": 2, "d": [103], "a": 1 }, | ||||
| 						{ "px": [352,256], "src": [0,0], "f": 0, "t": 0, "d": [107], "a": 1 } | ||||
| 					], | ||||
| 					"entityInstances": [] | ||||
| 				}, | ||||
| 				{ | ||||
| 					"__identifier": "Floor", | ||||
| 					"__type": "Tiles", | ||||
| 					"__cWid": 12, | ||||
| 					"__cHei": 9, | ||||
| 					"__gridSize": 32, | ||||
| 					"__opacity": 1, | ||||
| 					"__pxTotalOffsetX": 0, | ||||
| 					"__pxTotalOffsetY": 0, | ||||
| 					"__tilesetDefUid": 2, | ||||
| 					"__tilesetRelPath": "../tilesets/base.png", | ||||
| 					"iid": "3c7c9c60-c210-11ef-bffb-dd5644ced100", | ||||
| 					"levelId": 0, | ||||
| 					"layerDefUid": 5, | ||||
| 					"pxOffsetX": 0, | ||||
| 					"pxOffsetY": 0, | ||||
| 					"visible": true, | ||||
| 					"optionalRules": [], | ||||
| 					"intGridCsv": [], | ||||
| 					"autoLayerTiles": [], | ||||
| 					"seed": 8173604, | ||||
| 					"overrideTilesetUid": null, | ||||
| 					"gridTiles": [ | ||||
| 						{ "px": [0,0], "src": [0,0], "f": 0, "t": 0, "d": [0], "a": 1 }, | ||||
| 						{ "px": [32,0], "src": [0,0], "f": 0, "t": 0, "d": [1], "a": 1 }, | ||||
| 						{ "px": [64,0], "src": [0,0], "f": 0, "t": 0, "d": [2], "a": 1 }, | ||||
| 						{ "px": [96,0], "src": [0,0], "f": 0, "t": 0, "d": [3], "a": 1 }, | ||||
| 						{ "px": [128,0], "src": [0,0], "f": 0, "t": 0, "d": [4], "a": 1 }, | ||||
| 						{ "px": [160,0], "src": [0,0], "f": 0, "t": 0, "d": [5], "a": 1 }, | ||||
| 						{ "px": [192,0], "src": [0,0], "f": 0, "t": 0, "d": [6], "a": 1 }, | ||||
| 						{ "px": [224,0], "src": [0,0], "f": 0, "t": 0, "d": [7], "a": 1 }, | ||||
| 						{ "px": [256,0], "src": [0,0], "f": 0, "t": 0, "d": [8], "a": 1 }, | ||||
| 						{ "px": [288,0], "src": [0,0], "f": 0, "t": 0, "d": [9], "a": 1 }, | ||||
| 						{ "px": [320,0], "src": [0,0], "f": 0, "t": 0, "d": [10], "a": 1 }, | ||||
| 						{ "px": [352,0], "src": [0,0], "f": 0, "t": 0, "d": [11], "a": 1 }, | ||||
| 						{ "px": [0,32], "src": [0,0], "f": 0, "t": 0, "d": [12], "a": 1 }, | ||||
| 						{ "px": [32,32], "src": [0,0], "f": 0, "t": 0, "d": [13], "a": 1 }, | ||||
| 						{ "px": [64,32], "src": [0,0], "f": 0, "t": 0, "d": [14], "a": 1 }, | ||||
| 						{ "px": [96,32], "src": [0,0], "f": 0, "t": 0, "d": [15], "a": 1 }, | ||||
| 						{ "px": [128,32], "src": [0,0], "f": 0, "t": 0, "d": [16], "a": 1 }, | ||||
| 						{ "px": [160,32], "src": [0,0], "f": 0, "t": 0, "d": [17], "a": 1 }, | ||||
| 						{ "px": [192,32], "src": [0,0], "f": 0, "t": 0, "d": [18], "a": 1 }, | ||||
| 						{ "px": [224,32], "src": [0,0], "f": 0, "t": 0, "d": [19], "a": 1 }, | ||||
| 						{ "px": [256,32], "src": [0,0], "f": 0, "t": 0, "d": [20], "a": 1 }, | ||||
| 						{ "px": [288,32], "src": [0,0], "f": 0, "t": 0, "d": [21], "a": 1 }, | ||||
| 						{ "px": [320,32], "src": [0,0], "f": 0, "t": 0, "d": [22], "a": 1 }, | ||||
| 						{ "px": [352,32], "src": [0,0], "f": 0, "t": 0, "d": [23], "a": 1 }, | ||||
| 						{ "px": [0,64], "src": [0,0], "f": 0, "t": 0, "d": [24], "a": 1 }, | ||||
| 						{ "px": [32,64], "src": [0,0], "f": 0, "t": 0, "d": [25], "a": 1 }, | ||||
| 						{ "px": [64,64], "src": [0,0], "f": 0, "t": 0, "d": [26], "a": 1 }, | ||||
| 						{ "px": [96,64], "src": [0,0], "f": 0, "t": 0, "d": [27], "a": 1 }, | ||||
| 						{ "px": [128,64], "src": [0,0], "f": 0, "t": 0, "d": [28], "a": 1 }, | ||||
| 						{ "px": [160,64], "src": [0,0], "f": 0, "t": 0, "d": [29], "a": 1 }, | ||||
| 						{ "px": [192,64], "src": [0,0], "f": 0, "t": 0, "d": [30], "a": 1 }, | ||||
| 						{ "px": [224,64], "src": [0,0], "f": 0, "t": 0, "d": [31], "a": 1 }, | ||||
| 						{ "px": [256,64], "src": [0,0], "f": 0, "t": 0, "d": [32], "a": 1 }, | ||||
| 						{ "px": [288,64], "src": [0,0], "f": 0, "t": 0, "d": [33], "a": 1 }, | ||||
| 						{ "px": [320,64], "src": [0,0], "f": 0, "t": 0, "d": [34], "a": 1 }, | ||||
| 						{ "px": [352,64], "src": [0,0], "f": 0, "t": 0, "d": [35], "a": 1 }, | ||||
| 						{ "px": [0,96], "src": [0,0], "f": 0, "t": 0, "d": [36], "a": 1 }, | ||||
| 						{ "px": [32,96], "src": [0,0], "f": 0, "t": 0, "d": [37], "a": 1 }, | ||||
| 						{ "px": [64,96], "src": [0,0], "f": 0, "t": 0, "d": [38], "a": 1 }, | ||||
| 						{ "px": [96,96], "src": [0,0], "f": 0, "t": 0, "d": [39], "a": 1 }, | ||||
| 						{ "px": [128,96], "src": [0,0], "f": 0, "t": 0, "d": [40], "a": 1 }, | ||||
| 						{ "px": [160,96], "src": [0,0], "f": 0, "t": 0, "d": [41], "a": 1 }, | ||||
| 						{ "px": [192,96], "src": [0,0], "f": 0, "t": 0, "d": [42], "a": 1 }, | ||||
| 						{ "px": [224,96], "src": [0,0], "f": 0, "t": 0, "d": [43], "a": 1 }, | ||||
| 						{ "px": [256,96], "src": [0,0], "f": 0, "t": 0, "d": [44], "a": 1 }, | ||||
| 						{ "px": [288,96], "src": [0,0], "f": 0, "t": 0, "d": [45], "a": 1 }, | ||||
| 						{ "px": [320,96], "src": [0,0], "f": 0, "t": 0, "d": [46], "a": 1 }, | ||||
| 						{ "px": [352,96], "src": [0,0], "f": 0, "t": 0, "d": [47], "a": 1 }, | ||||
| 						{ "px": [0,128], "src": [0,0], "f": 0, "t": 0, "d": [48], "a": 1 }, | ||||
| 						{ "px": [32,128], "src": [0,0], "f": 0, "t": 0, "d": [49], "a": 1 }, | ||||
| 						{ "px": [64,128], "src": [0,0], "f": 0, "t": 0, "d": [50], "a": 1 }, | ||||
| 						{ "px": [96,128], "src": [0,0], "f": 0, "t": 0, "d": [51], "a": 1 }, | ||||
| 						{ "px": [128,128], "src": [0,0], "f": 0, "t": 0, "d": [52], "a": 1 }, | ||||
| 						{ "px": [160,128], "src": [0,0], "f": 0, "t": 0, "d": [53], "a": 1 }, | ||||
| 						{ "px": [192,128], "src": [0,0], "f": 0, "t": 0, "d": [54], "a": 1 }, | ||||
| 						{ "px": [224,128], "src": [0,0], "f": 0, "t": 0, "d": [55], "a": 1 }, | ||||
| 						{ "px": [256,128], "src": [0,0], "f": 0, "t": 0, "d": [56], "a": 1 }, | ||||
| 						{ "px": [288,128], "src": [0,0], "f": 0, "t": 0, "d": [57], "a": 1 }, | ||||
| 						{ "px": [320,128], "src": [0,0], "f": 0, "t": 0, "d": [58], "a": 1 }, | ||||
| 						{ "px": [352,128], "src": [0,0], "f": 0, "t": 0, "d": [59], "a": 1 }, | ||||
| 						{ "px": [0,160], "src": [0,0], "f": 0, "t": 0, "d": [60], "a": 1 }, | ||||
| 						{ "px": [32,160], "src": [0,0], "f": 0, "t": 0, "d": [61], "a": 1 }, | ||||
| 						{ "px": [64,160], "src": [0,0], "f": 0, "t": 0, "d": [62], "a": 1 }, | ||||
| 						{ "px": [96,160], "src": [0,0], "f": 0, "t": 0, "d": [63], "a": 1 }, | ||||
| 						{ "px": [128,160], "src": [0,0], "f": 0, "t": 0, "d": [64], "a": 1 }, | ||||
| 						{ "px": [160,160], "src": [0,0], "f": 0, "t": 0, "d": [65], "a": 1 }, | ||||
| 						{ "px": [192,160], "src": [0,0], "f": 0, "t": 0, "d": [66], "a": 1 }, | ||||
| 						{ "px": [224,160], "src": [0,0], "f": 0, "t": 0, "d": [67], "a": 1 }, | ||||
| 						{ "px": [256,160], "src": [0,0], "f": 0, "t": 0, "d": [68], "a": 1 }, | ||||
| 						{ "px": [288,160], "src": [0,0], "f": 0, "t": 0, "d": [69], "a": 1 }, | ||||
| 						{ "px": [320,160], "src": [0,0], "f": 0, "t": 0, "d": [70], "a": 1 }, | ||||
| 						{ "px": [352,160], "src": [0,0], "f": 0, "t": 0, "d": [71], "a": 1 }, | ||||
| 						{ "px": [0,192], "src": [0,0], "f": 0, "t": 0, "d": [72], "a": 1 }, | ||||
| 						{ "px": [32,192], "src": [0,0], "f": 0, "t": 0, "d": [73], "a": 1 }, | ||||
| 						{ "px": [64,192], "src": [0,0], "f": 0, "t": 0, "d": [74], "a": 1 }, | ||||
| 						{ "px": [96,192], "src": [0,0], "f": 0, "t": 0, "d": [75], "a": 1 }, | ||||
| 						{ "px": [128,192], "src": [0,0], "f": 0, "t": 0, "d": [76], "a": 1 }, | ||||
| 						{ "px": [160,192], "src": [0,0], "f": 0, "t": 0, "d": [77], "a": 1 }, | ||||
| 						{ "px": [192,192], "src": [0,0], "f": 0, "t": 0, "d": [78], "a": 1 }, | ||||
| 						{ "px": [224,192], "src": [0,0], "f": 0, "t": 0, "d": [79], "a": 1 }, | ||||
| 						{ "px": [256,192], "src": [0,0], "f": 0, "t": 0, "d": [80], "a": 1 }, | ||||
| 						{ "px": [288,192], "src": [0,0], "f": 0, "t": 0, "d": [81], "a": 1 }, | ||||
| 						{ "px": [320,192], "src": [0,0], "f": 0, "t": 0, "d": [82], "a": 1 }, | ||||
| 						{ "px": [352,192], "src": [0,0], "f": 0, "t": 0, "d": [83], "a": 1 }, | ||||
| 						{ "px": [0,224], "src": [0,0], "f": 0, "t": 0, "d": [84], "a": 1 }, | ||||
| 						{ "px": [32,224], "src": [0,0], "f": 0, "t": 0, "d": [85], "a": 1 }, | ||||
| 						{ "px": [64,224], "src": [0,0], "f": 0, "t": 0, "d": [86], "a": 1 }, | ||||
| 						{ "px": [96,224], "src": [0,0], "f": 0, "t": 0, "d": [87], "a": 1 }, | ||||
| 						{ "px": [128,224], "src": [0,0], "f": 0, "t": 0, "d": [88], "a": 1 }, | ||||
| 						{ "px": [160,224], "src": [0,0], "f": 0, "t": 0, "d": [89], "a": 1 }, | ||||
| 						{ "px": [192,224], "src": [0,0], "f": 0, "t": 0, "d": [90], "a": 1 }, | ||||
| 						{ "px": [224,224], "src": [0,0], "f": 0, "t": 0, "d": [91], "a": 1 }, | ||||
| 						{ "px": [256,224], "src": [0,0], "f": 0, "t": 0, "d": [92], "a": 1 }, | ||||
| 						{ "px": [288,224], "src": [0,0], "f": 0, "t": 0, "d": [93], "a": 1 }, | ||||
| 						{ "px": [320,224], "src": [0,0], "f": 0, "t": 0, "d": [94], "a": 1 }, | ||||
| 						{ "px": [352,224], "src": [0,0], "f": 0, "t": 0, "d": [95], "a": 1 }, | ||||
| 						{ "px": [0,256], "src": [0,0], "f": 0, "t": 0, "d": [96], "a": 1 }, | ||||
| 						{ "px": [32,256], "src": [0,0], "f": 0, "t": 0, "d": [97], "a": 1 }, | ||||
| 						{ "px": [64,256], "src": [0,0], "f": 0, "t": 0, "d": [98], "a": 1 }, | ||||
| 						{ "px": [96,256], "src": [0,0], "f": 0, "t": 0, "d": [99], "a": 1 }, | ||||
| 						{ "px": [128,256], "src": [0,0], "f": 0, "t": 0, "d": [100], "a": 1 }, | ||||
| 						{ "px": [160,256], "src": [0,0], "f": 0, "t": 0, "d": [101], "a": 1 }, | ||||
| 						{ "px": [192,256], "src": [0,0], "f": 0, "t": 0, "d": [102], "a": 1 }, | ||||
| 						{ "px": [224,256], "src": [0,0], "f": 0, "t": 0, "d": [103], "a": 1 }, | ||||
| 						{ "px": [256,256], "src": [0,0], "f": 0, "t": 0, "d": [104], "a": 1 }, | ||||
| 						{ "px": [288,256], "src": [0,0], "f": 0, "t": 0, "d": [105], "a": 1 }, | ||||
| 						{ "px": [320,256], "src": [0,0], "f": 0, "t": 0, "d": [106], "a": 1 }, | ||||
| 						{ "px": [352,256], "src": [0,0], "f": 0, "t": 0, "d": [107], "a": 1 } | ||||
| 					], | ||||
| 					"entityInstances": [] | ||||
| 				} | ||||
| 			], | ||||
| 			"__neighbours": [{ "levelIid": "f2e8f060-c210-11ef-bffb-31fe7a15090b", "dir": "e" }] | ||||
| 		}, | ||||
| 		{ | ||||
| 			"identifier": "Level_1", | ||||
| 			"iid": "f2e8f060-c210-11ef-bffb-31fe7a15090b", | ||||
| 			"uid": 8, | ||||
| 			"worldX": 384, | ||||
| 			"worldY": 0, | ||||
| 			"worldDepth": 0, | ||||
| 			"pxWid": 384, | ||||
| 			"pxHei": 288, | ||||
| 			"__bgColor": "#696A79", | ||||
| 			"bgColor": null, | ||||
| 			"useAutoIdentifier": true, | ||||
| 			"bgRelPath": null, | ||||
| 			"bgPos": null, | ||||
| 			"bgPivotX": 0.5, | ||||
| 			"bgPivotY": 0.5, | ||||
| 			"__smartColor": "#ADADB5", | ||||
| 			"__bgPos": null, | ||||
| 			"externalRelPath": null, | ||||
| 			"fieldInstances": [], | ||||
| 			"layerInstances": [ | ||||
| 				{ | ||||
| 					"__identifier": "Floor_2", | ||||
| 					"__type": "Tiles", | ||||
| 					"__cWid": 12, | ||||
| 					"__cHei": 9, | ||||
| 					"__gridSize": 32, | ||||
| 					"__opacity": 1, | ||||
| 					"__pxTotalOffsetX": 0, | ||||
| 					"__pxTotalOffsetY": 0, | ||||
| 					"__tilesetDefUid": 1, | ||||
| 					"__tilesetRelPath": "../tilesets/intercut.png", | ||||
| 					"iid": "f2e8f061-c210-11ef-bffb-6f89236d491a", | ||||
| 					"levelId": 8, | ||||
| 					"layerDefUid": 7, | ||||
| 					"pxOffsetX": 0, | ||||
| 					"pxOffsetY": 0, | ||||
| 					"visible": true, | ||||
| 					"optionalRules": [], | ||||
| 					"intGridCsv": [], | ||||
| 					"autoLayerTiles": [], | ||||
| 					"seed": 9573822, | ||||
| 					"overrideTilesetUid": null, | ||||
| 					"gridTiles": [ | ||||
| 						{ "px": [32,32], "src": [0,0], "f": 0, "t": 0, "d": [13], "a": 1 }, | ||||
| 						{ "px": [64,32], "src": [32,0], "f": 0, "t": 1, "d": [14], "a": 1 }, | ||||
| 						{ "px": [96,32], "src": [64,0], "f": 0, "t": 2, "d": [15], "a": 1 }, | ||||
| 						{ "px": [256,32], "src": [0,0], "f": 0, "t": 0, "d": [20], "a": 1 }, | ||||
| 						{ "px": [288,32], "src": [32,0], "f": 0, "t": 1, "d": [21], "a": 1 }, | ||||
| 						{ "px": [320,32], "src": [64,0], "f": 0, "t": 2, "d": [22], "a": 1 }, | ||||
| 						{ "px": [32,64], "src": [32,32], "f": 0, "t": 4, "d": [25], "a": 1 }, | ||||
| 						{ "px": [64,64], "src": [32,32], "f": 0, "t": 4, "d": [26], "a": 1 }, | ||||
| 						{ "px": [96,64], "src": [32,32], "f": 0, "t": 4, "d": [27], "a": 1 }, | ||||
| 						{ "px": [256,64], "src": [0,32], "f": 0, "t": 3, "d": [32], "a": 1 }, | ||||
| 						{ "px": [288,64], "src": [32,32], "f": 0, "t": 4, "d": [33], "a": 1 }, | ||||
| 						{ "px": [320,64], "src": [64,32], "f": 0, "t": 5, "d": [34], "a": 1 }, | ||||
| 						{ "px": [32,192], "src": [0,32], "f": 0, "t": 3, "d": [73], "a": 1 }, | ||||
| 						{ "px": [64,192], "src": [32,32], "f": 0, "t": 4, "d": [74], "a": 1 }, | ||||
| 						{ "px": [96,192], "src": [64,32], "f": 0, "t": 5, "d": [75], "a": 1 }, | ||||
| 						{ "px": [256,192], "src": [0,32], "f": 0, "t": 3, "d": [80], "a": 1 }, | ||||
| 						{ "px": [288,192], "src": [32,32], "f": 0, "t": 4, "d": [81], "a": 1 }, | ||||
| 						{ "px": [320,192], "src": [64,0], "f": 0, "t": 2, "d": [82], "a": 1 }, | ||||
| 						{ "px": [32,224], "src": [0,64], "f": 0, "t": 6, "d": [85], "a": 1 }, | ||||
| 						{ "px": [64,224], "src": [32,64], "f": 0, "t": 7, "d": [86], "a": 1 }, | ||||
| 						{ "px": [96,224], "src": [64,64], "f": 0, "t": 8, "d": [87], "a": 1 }, | ||||
| 						{ "px": [256,224], "src": [0,32], "f": 0, "t": 3, "d": [92], "a": 1 }, | ||||
| 						{ "px": [288,224], "src": [32,64], "f": 0, "t": 7, "d": [93], "a": 1 }, | ||||
| 						{ "px": [320,224], "src": [64,64], "f": 0, "t": 8, "d": [94], "a": 1 } | ||||
| 					], | ||||
| 					"entityInstances": [] | ||||
| 				}, | ||||
| 				{ | ||||
| 					"__identifier": "Walls", | ||||
| 					"__type": "Tiles", | ||||
| 					"__cWid": 12, | ||||
| 					"__cHei": 9, | ||||
| 					"__gridSize": 32, | ||||
| 					"__opacity": 1, | ||||
| 					"__pxTotalOffsetX": 0, | ||||
| 					"__pxTotalOffsetY": 0, | ||||
| 					"__tilesetDefUid": 3, | ||||
| 					"__tilesetRelPath": "../tilesets/walls.png", | ||||
| 					"iid": "f2e8f062-c210-11ef-bffb-b3126f971752", | ||||
| 					"levelId": 8, | ||||
| 					"layerDefUid": 6, | ||||
| 					"pxOffsetX": 0, | ||||
| 					"pxOffsetY": 0, | ||||
| 					"visible": true, | ||||
| 					"optionalRules": [], | ||||
| 					"intGridCsv": [], | ||||
| 					"autoLayerTiles": [], | ||||
| 					"seed": 1645397, | ||||
| 					"overrideTilesetUid": null, | ||||
| 					"gridTiles": [ | ||||
| 						{ "px": [160,0], "src": [0,32], "f": 0, "t": 3, "d": [5], "a": 1 }, | ||||
| 						{ "px": [192,0], "src": [64,32], "f": 0, "t": 5, "d": [6], "a": 1 }, | ||||
| 						{ "px": [160,32], "src": [0,32], "f": 0, "t": 3, "d": [17], "a": 1 }, | ||||
| 						{ "px": [192,32], "src": [64,32], "f": 0, "t": 5, "d": [18], "a": 1 }, | ||||
| 						{ "px": [160,64], "src": [0,64], "f": 0, "t": 6, "d": [29], "a": 1 }, | ||||
| 						{ "px": [192,64], "src": [64,64], "f": 0, "t": 8, "d": [30], "a": 1 }, | ||||
| 						{ "px": [0,96], "src": [32,0], "f": 0, "t": 1, "d": [36], "a": 1 }, | ||||
| 						{ "px": [32,96], "src": [32,0], "f": 0, "t": 1, "d": [37], "a": 1 }, | ||||
| 						{ "px": [64,96], "src": [32,0], "f": 0, "t": 1, "d": [38], "a": 1 }, | ||||
| 						{ "px": [96,96], "src": [64,0], "f": 0, "t": 2, "d": [39], "a": 1 }, | ||||
| 						{ "px": [256,96], "src": [0,0], "f": 0, "t": 0, "d": [44], "a": 1 }, | ||||
| 						{ "px": [288,96], "src": [32,0], "f": 0, "t": 1, "d": [45], "a": 1 }, | ||||
| 						{ "px": [320,96], "src": [32,0], "f": 0, "t": 1, "d": [46], "a": 1 }, | ||||
| 						{ "px": [352,96], "src": [32,0], "f": 0, "t": 1, "d": [47], "a": 1 }, | ||||
| 						{ "px": [0,128], "src": [32,32], "f": 0, "t": 4, "d": [48], "a": 1 }, | ||||
| 						{ "px": [32,128], "src": [32,32], "f": 0, "t": 4, "d": [49], "a": 1 }, | ||||
| 						{ "px": [64,128], "src": [32,32], "f": 0, "t": 4, "d": [50], "a": 1 }, | ||||
| 						{ "px": [96,128], "src": [64,32], "f": 0, "t": 5, "d": [51], "a": 1 }, | ||||
| 						{ "px": [256,128], "src": [32,32], "f": 0, "t": 4, "d": [56], "a": 1 }, | ||||
| 						{ "px": [288,128], "src": [32,32], "f": 0, "t": 4, "d": [57], "a": 1 }, | ||||
| 						{ "px": [320,128], "src": [32,32], "f": 0, "t": 4, "d": [58], "a": 1 }, | ||||
| 						{ "px": [352,128], "src": [32,32], "f": 0, "t": 4, "d": [59], "a": 1 }, | ||||
| 						{ "px": [0,160], "src": [32,64], "f": 0, "t": 7, "d": [60], "a": 1 }, | ||||
| 						{ "px": [32,160], "src": [32,64], "f": 0, "t": 7, "d": [61], "a": 1 }, | ||||
| 						{ "px": [64,160], "src": [32,64], "f": 0, "t": 7, "d": [62], "a": 1 }, | ||||
| 						{ "px": [96,160], "src": [64,64], "f": 0, "t": 8, "d": [63], "a": 1 }, | ||||
| 						{ "px": [256,160], "src": [0,64], "f": 0, "t": 6, "d": [68], "a": 1 }, | ||||
| 						{ "px": [288,160], "src": [32,64], "f": 0, "t": 7, "d": [69], "a": 1 }, | ||||
| 						{ "px": [320,160], "src": [32,64], "f": 0, "t": 7, "d": [70], "a": 1 }, | ||||
| 						{ "px": [352,160], "src": [32,64], "f": 0, "t": 7, "d": [71], "a": 1 }, | ||||
| 						{ "px": [160,192], "src": [0,0], "f": 0, "t": 0, "d": [77], "a": 1 }, | ||||
| 						{ "px": [192,192], "src": [64,0], "f": 0, "t": 2, "d": [78], "a": 1 }, | ||||
| 						{ "px": [160,224], "src": [0,32], "f": 0, "t": 3, "d": [89], "a": 1 }, | ||||
| 						{ "px": [192,224], "src": [64,32], "f": 0, "t": 5, "d": [90], "a": 1 }, | ||||
| 						{ "px": [160,256], "src": [0,32], "f": 0, "t": 3, "d": [101], "a": 1 }, | ||||
| 						{ "px": [192,256], "src": [64,32], "f": 0, "t": 5, "d": [102], "a": 1 } | ||||
| 					], | ||||
| 					"entityInstances": [] | ||||
| 				}, | ||||
| 				{ | ||||
| 					"__identifier": "Floor", | ||||
| 					"__type": "Tiles", | ||||
| 					"__cWid": 12, | ||||
| 					"__cHei": 9, | ||||
| 					"__gridSize": 32, | ||||
| 					"__opacity": 1, | ||||
| 					"__pxTotalOffsetX": 0, | ||||
| 					"__pxTotalOffsetY": 0, | ||||
| 					"__tilesetDefUid": 2, | ||||
| 					"__tilesetRelPath": "../tilesets/base.png", | ||||
| 					"iid": "f2e8f063-c210-11ef-bffb-a76072bfa5d6", | ||||
| 					"levelId": 8, | ||||
| 					"layerDefUid": 5, | ||||
| 					"pxOffsetX": 0, | ||||
| 					"pxOffsetY": 0, | ||||
| 					"visible": true, | ||||
| 					"optionalRules": [], | ||||
| 					"intGridCsv": [], | ||||
| 					"autoLayerTiles": [], | ||||
| 					"seed": 1336393, | ||||
| 					"overrideTilesetUid": null, | ||||
| 					"gridTiles": [ | ||||
| 						{ "px": [0,0], "src": [0,0], "f": 0, "t": 0, "d": [0], "a": 1 }, | ||||
| 						{ "px": [32,0], "src": [0,0], "f": 0, "t": 0, "d": [1], "a": 1 }, | ||||
| 						{ "px": [64,0], "src": [0,0], "f": 0, "t": 0, "d": [2], "a": 1 }, | ||||
| 						{ "px": [96,0], "src": [0,0], "f": 0, "t": 0, "d": [3], "a": 1 }, | ||||
| 						{ "px": [128,0], "src": [0,0], "f": 0, "t": 0, "d": [4], "a": 1 }, | ||||
| 						{ "px": [160,0], "src": [0,0], "f": 0, "t": 0, "d": [5], "a": 1 }, | ||||
| 						{ "px": [192,0], "src": [0,0], "f": 0, "t": 0, "d": [6], "a": 1 }, | ||||
| 						{ "px": [224,0], "src": [0,0], "f": 0, "t": 0, "d": [7], "a": 1 }, | ||||
| 						{ "px": [256,0], "src": [0,0], "f": 0, "t": 0, "d": [8], "a": 1 }, | ||||
| 						{ "px": [288,0], "src": [0,0], "f": 0, "t": 0, "d": [9], "a": 1 }, | ||||
| 						{ "px": [320,0], "src": [0,0], "f": 0, "t": 0, "d": [10], "a": 1 }, | ||||
| 						{ "px": [352,0], "src": [0,0], "f": 0, "t": 0, "d": [11], "a": 1 }, | ||||
| 						{ "px": [0,32], "src": [0,0], "f": 0, "t": 0, "d": [12], "a": 1 }, | ||||
| 						{ "px": [32,32], "src": [0,0], "f": 0, "t": 0, "d": [13], "a": 1 }, | ||||
| 						{ "px": [64,32], "src": [0,0], "f": 0, "t": 0, "d": [14], "a": 1 }, | ||||
| 						{ "px": [96,32], "src": [0,0], "f": 0, "t": 0, "d": [15], "a": 1 }, | ||||
| 						{ "px": [128,32], "src": [0,0], "f": 0, "t": 0, "d": [16], "a": 1 }, | ||||
| 						{ "px": [160,32], "src": [0,0], "f": 0, "t": 0, "d": [17], "a": 1 }, | ||||
| 						{ "px": [192,32], "src": [0,0], "f": 0, "t": 0, "d": [18], "a": 1 }, | ||||
| 						{ "px": [224,32], "src": [0,0], "f": 0, "t": 0, "d": [19], "a": 1 }, | ||||
| 						{ "px": [256,32], "src": [0,0], "f": 0, "t": 0, "d": [20], "a": 1 }, | ||||
| 						{ "px": [288,32], "src": [0,0], "f": 0, "t": 0, "d": [21], "a": 1 }, | ||||
| 						{ "px": [320,32], "src": [0,0], "f": 0, "t": 0, "d": [22], "a": 1 }, | ||||
| 						{ "px": [352,32], "src": [0,0], "f": 0, "t": 0, "d": [23], "a": 1 }, | ||||
| 						{ "px": [0,64], "src": [0,0], "f": 0, "t": 0, "d": [24], "a": 1 }, | ||||
| 						{ "px": [32,64], "src": [0,0], "f": 0, "t": 0, "d": [25], "a": 1 }, | ||||
| 						{ "px": [64,64], "src": [0,0], "f": 0, "t": 0, "d": [26], "a": 1 }, | ||||
| 						{ "px": [96,64], "src": [0,0], "f": 0, "t": 0, "d": [27], "a": 1 }, | ||||
| 						{ "px": [128,64], "src": [0,0], "f": 0, "t": 0, "d": [28], "a": 1 }, | ||||
| 						{ "px": [160,64], "src": [0,0], "f": 0, "t": 0, "d": [29], "a": 1 }, | ||||
| 						{ "px": [192,64], "src": [0,0], "f": 0, "t": 0, "d": [30], "a": 1 }, | ||||
| 						{ "px": [224,64], "src": [0,0], "f": 0, "t": 0, "d": [31], "a": 1 }, | ||||
| 						{ "px": [256,64], "src": [0,0], "f": 0, "t": 0, "d": [32], "a": 1 }, | ||||
| 						{ "px": [288,64], "src": [0,0], "f": 0, "t": 0, "d": [33], "a": 1 }, | ||||
| 						{ "px": [320,64], "src": [0,0], "f": 0, "t": 0, "d": [34], "a": 1 }, | ||||
| 						{ "px": [352,64], "src": [0,0], "f": 0, "t": 0, "d": [35], "a": 1 }, | ||||
| 						{ "px": [0,96], "src": [0,0], "f": 0, "t": 0, "d": [36], "a": 1 }, | ||||
| 						{ "px": [32,96], "src": [0,0], "f": 0, "t": 0, "d": [37], "a": 1 }, | ||||
| 						{ "px": [64,96], "src": [0,0], "f": 0, "t": 0, "d": [38], "a": 1 }, | ||||
| 						{ "px": [96,96], "src": [0,0], "f": 0, "t": 0, "d": [39], "a": 1 }, | ||||
| 						{ "px": [128,96], "src": [0,0], "f": 0, "t": 0, "d": [40], "a": 1 }, | ||||
| 						{ "px": [160,96], "src": [0,0], "f": 0, "t": 0, "d": [41], "a": 1 }, | ||||
| 						{ "px": [192,96], "src": [0,0], "f": 0, "t": 0, "d": [42], "a": 1 }, | ||||
| 						{ "px": [224,96], "src": [0,0], "f": 0, "t": 0, "d": [43], "a": 1 }, | ||||
| 						{ "px": [256,96], "src": [0,0], "f": 0, "t": 0, "d": [44], "a": 1 }, | ||||
| 						{ "px": [288,96], "src": [0,0], "f": 0, "t": 0, "d": [45], "a": 1 }, | ||||
| 						{ "px": [320,96], "src": [0,0], "f": 0, "t": 0, "d": [46], "a": 1 }, | ||||
| 						{ "px": [352,96], "src": [0,0], "f": 0, "t": 0, "d": [47], "a": 1 }, | ||||
| 						{ "px": [0,128], "src": [0,0], "f": 0, "t": 0, "d": [48], "a": 1 }, | ||||
| 						{ "px": [32,128], "src": [0,0], "f": 0, "t": 0, "d": [49], "a": 1 }, | ||||
| 						{ "px": [64,128], "src": [0,0], "f": 0, "t": 0, "d": [50], "a": 1 }, | ||||
| 						{ "px": [96,128], "src": [0,0], "f": 0, "t": 0, "d": [51], "a": 1 }, | ||||
| 						{ "px": [128,128], "src": [0,0], "f": 0, "t": 0, "d": [52], "a": 1 }, | ||||
| 						{ "px": [160,128], "src": [0,0], "f": 0, "t": 0, "d": [53], "a": 1 }, | ||||
| 						{ "px": [192,128], "src": [0,0], "f": 0, "t": 0, "d": [54], "a": 1 }, | ||||
| 						{ "px": [224,128], "src": [0,0], "f": 0, "t": 0, "d": [55], "a": 1 }, | ||||
| 						{ "px": [256,128], "src": [0,0], "f": 0, "t": 0, "d": [56], "a": 1 }, | ||||
| 						{ "px": [288,128], "src": [0,0], "f": 0, "t": 0, "d": [57], "a": 1 }, | ||||
| 						{ "px": [320,128], "src": [0,0], "f": 0, "t": 0, "d": [58], "a": 1 }, | ||||
| 						{ "px": [352,128], "src": [0,0], "f": 0, "t": 0, "d": [59], "a": 1 }, | ||||
| 						{ "px": [0,160], "src": [0,0], "f": 0, "t": 0, "d": [60], "a": 1 }, | ||||
| 						{ "px": [32,160], "src": [0,0], "f": 0, "t": 0, "d": [61], "a": 1 }, | ||||
| 						{ "px": [64,160], "src": [0,0], "f": 0, "t": 0, "d": [62], "a": 1 }, | ||||
| 						{ "px": [96,160], "src": [0,0], "f": 0, "t": 0, "d": [63], "a": 1 }, | ||||
| 						{ "px": [128,160], "src": [0,0], "f": 0, "t": 0, "d": [64], "a": 1 }, | ||||
| 						{ "px": [160,160], "src": [0,0], "f": 0, "t": 0, "d": [65], "a": 1 }, | ||||
| 						{ "px": [192,160], "src": [0,0], "f": 0, "t": 0, "d": [66], "a": 1 }, | ||||
| 						{ "px": [224,160], "src": [0,0], "f": 0, "t": 0, "d": [67], "a": 1 }, | ||||
| 						{ "px": [256,160], "src": [0,0], "f": 0, "t": 0, "d": [68], "a": 1 }, | ||||
| 						{ "px": [288,160], "src": [0,0], "f": 0, "t": 0, "d": [69], "a": 1 }, | ||||
| 						{ "px": [320,160], "src": [0,0], "f": 0, "t": 0, "d": [70], "a": 1 }, | ||||
| 						{ "px": [352,160], "src": [0,0], "f": 0, "t": 0, "d": [71], "a": 1 }, | ||||
| 						{ "px": [0,192], "src": [0,0], "f": 0, "t": 0, "d": [72], "a": 1 }, | ||||
| 						{ "px": [32,192], "src": [0,0], "f": 0, "t": 0, "d": [73], "a": 1 }, | ||||
| 						{ "px": [64,192], "src": [0,0], "f": 0, "t": 0, "d": [74], "a": 1 }, | ||||
| 						{ "px": [96,192], "src": [0,0], "f": 0, "t": 0, "d": [75], "a": 1 }, | ||||
| 						{ "px": [128,192], "src": [0,0], "f": 0, "t": 0, "d": [76], "a": 1 }, | ||||
| 						{ "px": [160,192], "src": [0,0], "f": 0, "t": 0, "d": [77], "a": 1 }, | ||||
| 						{ "px": [192,192], "src": [0,0], "f": 0, "t": 0, "d": [78], "a": 1 }, | ||||
| 						{ "px": [224,192], "src": [0,0], "f": 0, "t": 0, "d": [79], "a": 1 }, | ||||
| 						{ "px": [256,192], "src": [0,0], "f": 0, "t": 0, "d": [80], "a": 1 }, | ||||
| 						{ "px": [288,192], "src": [0,0], "f": 0, "t": 0, "d": [81], "a": 1 }, | ||||
| 						{ "px": [320,192], "src": [0,0], "f": 0, "t": 0, "d": [82], "a": 1 }, | ||||
| 						{ "px": [352,192], "src": [0,0], "f": 0, "t": 0, "d": [83], "a": 1 }, | ||||
| 						{ "px": [0,224], "src": [0,0], "f": 0, "t": 0, "d": [84], "a": 1 }, | ||||
| 						{ "px": [32,224], "src": [0,0], "f": 0, "t": 0, "d": [85], "a": 1 }, | ||||
| 						{ "px": [64,224], "src": [0,0], "f": 0, "t": 0, "d": [86], "a": 1 }, | ||||
| 						{ "px": [96,224], "src": [0,0], "f": 0, "t": 0, "d": [87], "a": 1 }, | ||||
| 						{ "px": [128,224], "src": [0,0], "f": 0, "t": 0, "d": [88], "a": 1 }, | ||||
| 						{ "px": [160,224], "src": [0,0], "f": 0, "t": 0, "d": [89], "a": 1 }, | ||||
| 						{ "px": [192,224], "src": [0,0], "f": 0, "t": 0, "d": [90], "a": 1 }, | ||||
| 						{ "px": [224,224], "src": [0,0], "f": 0, "t": 0, "d": [91], "a": 1 }, | ||||
| 						{ "px": [256,224], "src": [0,0], "f": 0, "t": 0, "d": [92], "a": 1 }, | ||||
| 						{ "px": [288,224], "src": [0,0], "f": 0, "t": 0, "d": [93], "a": 1 }, | ||||
| 						{ "px": [320,224], "src": [0,0], "f": 0, "t": 0, "d": [94], "a": 1 }, | ||||
| 						{ "px": [352,224], "src": [0,0], "f": 0, "t": 0, "d": [95], "a": 1 }, | ||||
| 						{ "px": [0,256], "src": [0,0], "f": 0, "t": 0, "d": [96], "a": 1 }, | ||||
| 						{ "px": [32,256], "src": [0,0], "f": 0, "t": 0, "d": [97], "a": 1 }, | ||||
| 						{ "px": [64,256], "src": [0,0], "f": 0, "t": 0, "d": [98], "a": 1 }, | ||||
| 						{ "px": [96,256], "src": [0,0], "f": 0, "t": 0, "d": [99], "a": 1 }, | ||||
| 						{ "px": [128,256], "src": [0,0], "f": 0, "t": 0, "d": [100], "a": 1 }, | ||||
| 						{ "px": [160,256], "src": [0,0], "f": 0, "t": 0, "d": [101], "a": 1 }, | ||||
| 						{ "px": [192,256], "src": [0,0], "f": 0, "t": 0, "d": [102], "a": 1 }, | ||||
| 						{ "px": [224,256], "src": [0,0], "f": 0, "t": 0, "d": [103], "a": 1 }, | ||||
| 						{ "px": [256,256], "src": [0,0], "f": 0, "t": 0, "d": [104], "a": 1 }, | ||||
| 						{ "px": [288,256], "src": [0,0], "f": 0, "t": 0, "d": [105], "a": 1 }, | ||||
| 						{ "px": [320,256], "src": [0,0], "f": 0, "t": 0, "d": [106], "a": 1 }, | ||||
| 						{ "px": [352,256], "src": [0,0], "f": 0, "t": 0, "d": [107], "a": 1 } | ||||
| 					], | ||||
| 					"entityInstances": [] | ||||
| 				} | ||||
| 			], | ||||
| 			"__neighbours": [{ "levelIid": "f7eda580-c210-11ef-bffb-6b05aa089ccc", "dir": "w" }] | ||||
| 		} | ||||
| 	], | ||||
| 	"worlds": [], | ||||
| 	"dummyWorldIid": "f7ed7e71-c210-11ef-bffb-e5502bfa23c6" | ||||
| } | ||||
| @@ -1,71 +0,0 @@ | ||||
| { | ||||
| 	"__header__": { | ||||
| 		"fileType": "LDtk Project JSON", | ||||
| 		"app": "LDtk", | ||||
| 		"doc": "https://ldtk.io/json", | ||||
| 		"schema": "https://ldtk.io/files/JSON_SCHEMA.json", | ||||
| 		"appAuthor": "Sebastien 'deepnight' Benard", | ||||
| 		"appVersion": "1.5.3", | ||||
| 		"url": "https://ldtk.io" | ||||
| 	}, | ||||
| 	"iid": "018dc430-c210-11ef-bffb-99d47c7356b6", | ||||
| 	"jsonVersion": "1.5.3", | ||||
| 	"appBuildId": 473703, | ||||
| 	"nextUid": 1, | ||||
| 	"identifierStyle": "Capitalize", | ||||
| 	"toc": [], | ||||
| 	"worldLayout": "Free", | ||||
| 	"worldGridWidth": 256, | ||||
| 	"worldGridHeight": 256, | ||||
| 	"defaultLevelWidth": 256, | ||||
| 	"defaultLevelHeight": 256, | ||||
| 	"defaultPivotX": 0, | ||||
| 	"defaultPivotY": 0, | ||||
| 	"defaultGridSize": 16, | ||||
| 	"defaultEntityWidth": 16, | ||||
| 	"defaultEntityHeight": 16, | ||||
| 	"bgColor": "#40465B", | ||||
| 	"defaultLevelBgColor": "#696A79", | ||||
| 	"minifyJson": false, | ||||
| 	"externalLevels": false, | ||||
| 	"exportTiled": false, | ||||
| 	"simplifiedExport": false, | ||||
| 	"imageExportMode": "None", | ||||
| 	"exportLevelBg": true, | ||||
| 	"pngFilePattern": null, | ||||
| 	"backupOnSave": false, | ||||
| 	"backupLimit": 10, | ||||
| 	"backupRelPath": null, | ||||
| 	"levelNamePattern": "Level_%idx", | ||||
| 	"tutorialDesc": null, | ||||
| 	"customCommands": [], | ||||
| 	"flags": [], | ||||
| 	"defs": { "layers": [], "entities": [], "tilesets": [], "enums": [], "externalEnums": [], "levelFields": [] }, | ||||
| 	"levels": [ | ||||
| 		{ | ||||
| 			"identifier": "Level_0", | ||||
| 			"iid": "018deb40-c210-11ef-bffb-151cf6f68a2d", | ||||
| 			"uid": 0, | ||||
| 			"worldX": 0, | ||||
| 			"worldY": 0, | ||||
| 			"worldDepth": 0, | ||||
| 			"pxWid": 256, | ||||
| 			"pxHei": 256, | ||||
| 			"__bgColor": "#696A79", | ||||
| 			"bgColor": null, | ||||
| 			"useAutoIdentifier": true, | ||||
| 			"bgRelPath": null, | ||||
| 			"bgPos": null, | ||||
| 			"bgPivotX": 0.5, | ||||
| 			"bgPivotY": 0.5, | ||||
| 			"__smartColor": "#ADADB5", | ||||
| 			"__bgPos": null, | ||||
| 			"externalRelPath": null, | ||||
| 			"fieldInstances": [], | ||||
| 			"layerInstances": [], | ||||
| 			"__neighbours": [] | ||||
| 		} | ||||
| 	], | ||||
| 	"worlds": [], | ||||
| 	"dummyWorldIid": "018dc431-c210-11ef-bffb-cb15d2e5f164" | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								src/art/tilesets/base.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/art/tilesets/base.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 388 B | 
							
								
								
									
										
											BIN
										
									
								
								src/art/tilesets/block.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/art/tilesets/block.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 388 B | 
							
								
								
									
										
											BIN
										
									
								
								src/art/tilesets/intercut.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/art/tilesets/intercut.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 611 B | 
							
								
								
									
										
											BIN
										
									
								
								src/art/tilesets/walls.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/art/tilesets/walls.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 473 B | 
							
								
								
									
										190
									
								
								src/game.ts
									
									
									
									
									
								
							
							
						
						
									
										190
									
								
								src/game.ts
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| import {desiredHeight, desiredWidth, getScreen} from "./screen.ts"; | ||||
| import {BG_OUTER} from "./colors.ts"; | ||||
| import {AlignX, mainFont} from "./font.ts"; | ||||
| import {getInput} from "./input.ts"; | ||||
| import {checkGrid, ConceptualCell, maps, mapSzX, mapSzY} from "./maps.ts"; | ||||
|  | ||||
| type Point = {x: number, y: number} | ||||
|  | ||||
| @@ -25,14 +25,11 @@ class MenuCamera { | ||||
|   } | ||||
| } | ||||
|  | ||||
| type GameState = "Overview" | "Gameplay" | "Thralls"; | ||||
| type GameState = "Gameplay" | "Thralls"; | ||||
|  | ||||
| function getScreenLocation(state: GameState): {x: number, y: number} { | ||||
|   if (state === "Overview") { | ||||
|     return {x: 0.0, y: 0.0} | ||||
|   } | ||||
|   if (state === "Gameplay") { | ||||
|     return {x: 1.0, y: 0.0} | ||||
|     return {x: 0.0, y: 0.0} | ||||
|   } | ||||
|   if (state === "Thralls") { | ||||
|     return {x: 0.0, y: 1.0} | ||||
| @@ -44,20 +41,20 @@ function getScreenLocation(state: GameState): {x: number, y: number} { | ||||
| export class Game { | ||||
|   camera: MenuCamera; | ||||
|   state: GameState; | ||||
|   huntMode: HuntMode; | ||||
|  | ||||
|   constructor() { | ||||
|     this.camera = new MenuCamera({ | ||||
|       position: {x: 0.0, y: 0.0}, | ||||
|       target: {x: 0.0, y: 0.0} | ||||
|     }); | ||||
|     this.state = "Overview"; | ||||
|     this.state = "Gameplay"; | ||||
|  | ||||
|     this.huntMode = HuntMode.generate({depth: 1}); | ||||
|   } | ||||
|  | ||||
|   update() { | ||||
|     if (getInput().isPressed("a") || getInput().isPressed("w")) { | ||||
|       this.state = "Overview" | ||||
|     } | ||||
|     if (getInput().isPressed("d")) { | ||||
|     if (getInput().isPressed("w")) { | ||||
|       this.state = "Gameplay" | ||||
|     } | ||||
|     if (getInput().isPressed("s")) { | ||||
| @@ -68,7 +65,7 @@ export class Game { | ||||
|     this.camera.update(); | ||||
|  | ||||
|     // state-specific updates | ||||
|     this.updateOverview(); | ||||
|     this.updateGameplay(); | ||||
|   } | ||||
|  | ||||
|   draw() { | ||||
| @@ -79,8 +76,7 @@ export class Game { | ||||
|     ctx.fillStyle = BG_OUTER; | ||||
|     ctx.fillRect(0, 0, screen.w, screen.h); | ||||
|  | ||||
|     this.drawOverview(); | ||||
|     // this.drawGameplay(); | ||||
|     this.drawGameplay(); | ||||
|  | ||||
|     // we draw all states at once and pan between them | ||||
|     // mainFont.drawText({ctx: ctx, text: "You have been given a gift.", x: 0, y: 0}) | ||||
| @@ -157,86 +153,106 @@ export class Game { | ||||
|  | ||||
|   } | ||||
|  | ||||
|   updateOverview() { | ||||
|   updateGameplay() { | ||||
|  | ||||
|   } | ||||
|  | ||||
|   drawOverview() { | ||||
|     let region = this.getPaneRegionForGameState("Overview") | ||||
|   drawGameplay() { | ||||
|     let region = this.getPaneRegionForGameState("Gameplay") | ||||
|     let ctx = this.makeCameraContext() | ||||
|     ctx.translate(region.small.position.x, region.small.position.y) | ||||
|  | ||||
|     // ctx.strokeStyle = "#ffffff"; | ||||
|     // ctx.strokeRect(0.5, 0.5, region.small.size.x - 1, region.small.size.y - 1); | ||||
|  | ||||
|     // draw skills menu | ||||
|     for (let [i, skillName] of [ | ||||
|       "Screech", "Stop Talking", "Flatter", "Dazzle", "Chug", "Respect Elders" | ||||
|     ].entries()) { | ||||
|       mainFont.drawText({ctx: ctx, text: skillName, x: 4, y: i * 16, alignX: AlignX.Left}) | ||||
|       mainFont.drawText({ctx: ctx, text: "150", x: 160 - 4, y: i * 16, alignX: AlignX.Right, color: "#ff0"}) | ||||
|     } | ||||
|  | ||||
|     mainFont.drawText({ctx: ctx, text: "Stop embarrassing yourself\naround other immortals.\nKeep to yourself and they\nwon't make fun of you.\n\nCost reduced by INT and AGI", x: 160 + 4, y: 0, forceWidth: 384 - 160 - 8}) | ||||
|  | ||||
|     ctx.globalCompositeOperation = "difference"; | ||||
|     ctx.fillStyle = "#fff" | ||||
|     ctx.fillRect(0, 16, 160, 16); | ||||
|     ctx.fillRect(160, 0, 384 - 160, 96); | ||||
|  | ||||
|     // draw character profile | ||||
|     ctx = this.makeCameraContext(); | ||||
|     ctx.translate(region.small.position.x, region.small.position.y) | ||||
|     // ctx.fillStyle = "#200"; | ||||
|     // ctx.fillRect(0, 96, 384, 192) | ||||
|     // ctx.fillStyle = "#ff0"; ctx.fillRect(176, 176, 32, 16); | ||||
|     // draw ascii art | ||||
|     mainFont.drawText( | ||||
|       {ctx, x: 272, y: 160, text: "       \n; 0  0 \n \\    / \n  \\\\'  \n /      \n .'  '\n/_'     ", color: "#334", alignX: AlignX.Center} | ||||
|     ) | ||||
|     mainFont.drawText( | ||||
|       {ctx, x: 272, y: 160, text: "      \n  0  0  \n   . . ", color: "#fff", alignX: AlignX.Center} | ||||
|     ) | ||||
|     mainFont.drawText( | ||||
|       {ctx, x: 272, y: 160, text: "   ^  ^ \n<; 0  0   ", color: "#448", alignX: AlignX.Center} | ||||
|     ) | ||||
|     mainFont.drawText( | ||||
|       {ctx, x: 272, y: 160, text: "      \n  0  0  ", color: "#f00", alignX: AlignX.Center} | ||||
|     ) | ||||
|  | ||||
|     // draw character name | ||||
|     mainFont.drawText({ctx, x: 4 + 32, y: 96 + 16 + 0, text: "Pyrex"}) | ||||
|     mainFont.drawText({ctx, x: 4 + 32, y: 96 + 16 + 16, text: "Level 6", color: "#ccc"}) | ||||
|  | ||||
|     // draw attributes | ||||
|     for (let [i, {name, value}] of [ | ||||
|       {name: "AGI", value: 10}, | ||||
|       {name: "INT", value: 20}, | ||||
|       {name: "CHA", value: 30}, | ||||
|       {name: "PSI", value: 40}, | ||||
|     ].entries()) { | ||||
|       mainFont.drawText({ctx, x: 32 + 4, y: 96 + 64 + 16 * i, text: name, color: "#fff"}) | ||||
|       mainFont.drawText({ctx, x: 32 + 4 + 32, y: 96 + 64 + 16 * i, text: "" + value, color: "#ccc"}) | ||||
|     } | ||||
|  | ||||
|     mainFont.drawText({ctx, x: 32 + 4, y: 96 + 144, text: "MN ", color: "#fff"}) | ||||
|     mainFont.drawText({ctx, x: 32 + 4 + 24, y: 96 + 144, text: "$400", color: "#ccc"}) | ||||
|     mainFont.drawText({ctx, x: 32 + 4, y: 96 + 160, text: "BLD", color: "#fff"}) | ||||
|     mainFont.drawText({ctx, x: 32 + 4 + 32, y: 96 + 160, text: "10cc", color: "#ccc"}) | ||||
|  | ||||
|     // draw character thoughts | ||||
|     // mainFont.drawText({ctx, x: 256, y: 96 + 16, text: "[I'm peckish!]\n[I must feed.]", alignX: AlignX.Center}) | ||||
|     mainFont.drawText({ctx, x: 272, y: 96 + 16, text: "[Learn Stop Talking?]", alignX: AlignX.Center}) | ||||
|     mainFont.drawText({ctx, x: 272, y: 96 + 32, text: "[Yes] [No]", alignX: AlignX.Center}) | ||||
|  | ||||
|     // draw thralls | ||||
|     ctx.fillStyle = "#f00" | ||||
|     ctx.fillRect(0, 288, 128, 96); | ||||
|     ctx.fillStyle = "#0f0" | ||||
|     ctx.fillRect(128, 288, 128, 96); | ||||
|     ctx.fillStyle = "#00f" | ||||
|     ctx.fillRect(256, 288, 128, 96); | ||||
|   } | ||||
| } | ||||
|  | ||||
| export let game = new Game(); | ||||
| type Stat = "AGI" | "INT" | "CHA" | "PSI"; | ||||
| const ALL_STATS: Array<Stat> = ["AGI", "INT", "CHA", "PSI"]; | ||||
| type MapCellContent = | ||||
|   {type: "statPickup", stat: Stat} | | ||||
|   {type: "stairs"} | | ||||
|   {type: "block"} | ||||
|  | ||||
| type MapCell = { | ||||
|   content: MapCellContent, | ||||
|   revealed: boolean | ||||
| } | ||||
|  | ||||
| class HuntMode { | ||||
|   depth: number | ||||
|   cells: Array<Array<MapCell>> | ||||
|   player: Point | null | ||||
|  | ||||
|   constructor({depth, cells, player}: {depth: number, cells: Array<Array<MapCell>>, player: Point | null}) { | ||||
|     this.depth = depth; | ||||
|     this.cells = cells; | ||||
|     this.player = player; | ||||
|  | ||||
|     checkGrid(this.cells); | ||||
|   } | ||||
|  | ||||
|   static generate({depth}: {depth: number}) { | ||||
|     let mapNames: Array<string> = Object.keys(maps); | ||||
|     let mapName = mapNames[Math.floor(Math.random() * mapNames.length)]; | ||||
|     let map = maps[mapName]; | ||||
|  | ||||
|     let rows = []; | ||||
|     for (let y = 0; y < mapSzY; y++) { | ||||
|       let row = []; | ||||
|       for (let x = 0; x < mapSzX; x++) { | ||||
|         let src = map[y][x]; | ||||
|         row.push(HuntMode.#generateCell(src)) | ||||
|       } | ||||
|       rows.push(row); | ||||
|     } | ||||
|  | ||||
|     if (Math.random() < 0.75) { | ||||
|       while (true) { | ||||
|         let x = Math.floor(Math.random() * mapSzX); | ||||
|         let y = Math.floor(Math.random() * mapSzY); | ||||
|  | ||||
|         let item = rows[y][x]; | ||||
|         if (item.content.type != "block") { | ||||
|           item.content = {type: "stairs"} | ||||
|           break; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return new HuntMode({depth, cells: rows, player: null}) | ||||
|   } | ||||
|  | ||||
|   static #generateCell(conceptual: ConceptualCell): MapCell { | ||||
|     switch (conceptual) { | ||||
|       case "X": | ||||
|         return { content: {type: "block"}, revealed: true}; | ||||
|       case " ": | ||||
|         return { content: HuntMode.#generateContent(true), revealed: true }; | ||||
|       case ".": | ||||
|         return { content: HuntMode.#generateContent(false), revealed: true }; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   static #generateContent(_revealed: boolean): MapCellContent { | ||||
|     // stat pickup | ||||
|     let gsp = (): MapCellContent => { | ||||
|       return {type: "statPickup", stat: choose(ALL_STATS)} | ||||
|     }; | ||||
|     // TODO: Other objects? | ||||
|     return choose([ | ||||
|       gsp, gsp, gsp, gsp | ||||
|     ])(); | ||||
|   } | ||||
|  | ||||
|   get(at: Point) { | ||||
|   } | ||||
| } | ||||
|  | ||||
| function choose<T>(array: Array<T>): T  { | ||||
|   if (array.length == 0) { | ||||
|     throw `array cannot have length 0 for choose` | ||||
|   } | ||||
|   return array[Math.floor(Math.random() * array.length)] | ||||
| } | ||||
|  | ||||
| export let game = new Game(); | ||||
							
								
								
									
										85
									
								
								src/maps.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								src/maps.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| export const mapSzX = 12; | ||||
| export const mapSzY= 9; | ||||
|  | ||||
| export function checkGrid<T>(cells: Array<Array<T>>): Array<Array<T>> { | ||||
|   if (cells.length != mapSzY) { | ||||
|     throw `map must be ${mapSzX}x${mapSzY}` | ||||
|   } | ||||
|  | ||||
|   for (let row of cells.values()) { | ||||
|     if (row.length != mapSzX) { | ||||
|       throw `map must be ${mapSzX}x${mapSzY}`; | ||||
|     } | ||||
|   } | ||||
|   return cells; | ||||
| } | ||||
|  | ||||
| export type ConceptualCell = "X" | "." | " "; | ||||
|  | ||||
| function loadMap(map: Array<string>): Array<Array<ConceptualCell>> { | ||||
|   let newRows: Array<Array<ConceptualCell>> = []; | ||||
|   for (let oldRow of map.values()) { | ||||
|     let newRow: Array<ConceptualCell> = [] | ||||
|     for (let i = 0; i < oldRow.length; i++) { | ||||
|       let char = oldRow.charAt(i); | ||||
|       let cell: ConceptualCell | ||||
|       switch(char) { | ||||
|         case "X": cell = "X"; break; | ||||
|         case ".": cell = "."; break; | ||||
|         case " ": cell = " "; break; | ||||
|         default: | ||||
|           throw `map element not valid: ${char}` | ||||
|       } | ||||
|       newRow.push(cell); | ||||
|     } | ||||
|     newRows.push(newRow); | ||||
|   } | ||||
|   return checkGrid(newRows); | ||||
| } | ||||
|  | ||||
| export let maps: Record<string, Array<Array<ConceptualCell>>> = { | ||||
|   map0: loadMap([ | ||||
|     "XX        XX", | ||||
|     "X.        .X", | ||||
|     "            ", | ||||
|     "            ", | ||||
|     "            ", | ||||
|     "            ", | ||||
|     "            ", | ||||
|     "X.        .X", | ||||
|     "XX        XX", | ||||
|   ]), | ||||
|   map1: loadMap([ | ||||
|     "XX.       XX", | ||||
|     "XXX    X  .X", | ||||
|     ".XX    XX   ", | ||||
|     "       .XX  ", | ||||
|     "            ", | ||||
|     "  XX.       ", | ||||
|     "   XX    XX.", | ||||
|     "X.  X    XXX", | ||||
|     "XX       .XX", | ||||
|   ]), | ||||
|   map2: loadMap([ | ||||
|     "XX  XXXX  XX", | ||||
|     "X. XXXXXX .X", | ||||
|     "   XX..XX   ", | ||||
|     "            ", | ||||
|     "            ", | ||||
|     "            ", | ||||
|     "   XX..XX   ", | ||||
|     "X. XXXXXX .X", | ||||
|     "XX  XXXX  XX", | ||||
|   ]), | ||||
|   map3: loadMap([ | ||||
|     "X   XXXX   X", | ||||
|     " .        . ", | ||||
|     "   .    .   ", | ||||
|     "X   XXXX   X", | ||||
|     "X   XXXX   X", | ||||
|     "X   XXXX   X", | ||||
|     "   .    .   ", | ||||
|     " .        . ", | ||||
|     "X   XXXX   X", | ||||
|   ]), | ||||
| } | ||||
		Reference in New Issue
	
	Block a user