aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-01-17 13:10:38 -0500
committeriamcheeseman <[hidden email]>2026-01-17 13:10:47 -0500
commiteee06361048e34f6ca21348e8776636da95ef3f8 (patch)
tree7db94de6a1adeac5baf462c963ba53e6fcc31856
parentf60ae3ed7160a4f3c523b2f56ad06dfc8319aca4 (diff)
add props
-rw-r--r--res/img/carrabasset_big_trunk.pngbin0 -> 389 bytes
-rw-r--r--res/img/carrabasset_vines_0.pngbin0 -> 715 bytes
-rw-r--r--res/img/carrabasset_vines_1.pngbin0 -> 512 bytes
-rw-r--r--res/img/carrabasset_vines_2.pngbin0 -> 631 bytes
-rw-r--r--res/img/carrabassett_big_bush_0.pngbin0 -> 645 bytes
-rw-r--r--res/img/carrabassett_props.pngbin0 -> 5165 bytes
-rw-r--r--res/img/carrabassett_small_bush_0.pngbin0 -> 435 bytes
-rw-r--r--res/img/carrabassett_small_trunk.pngbin0 -> 284 bytes
-rw-r--r--res/img/lamp_post_0.pngbin0 -> 410 bytes
-rw-r--r--res/img/small_lamp.pngbin0 -> 164 bytes
-rw-r--r--res/img/windchimes_0.pngbin0 -> 196 bytes
-rw-r--r--res/img/windchimes_1.pngbin0 -> 250 bytes
-rw-r--r--res/props.tsj78
-rw-r--r--res/rooms/carrabassett0.tmj642
-rw-r--r--res/rooms/carrabassett1.tmj380
-rw-r--r--res/rooms/carrabassett2.tmj223
-rw-r--r--res/rooms/carrabassett3.tmj2
-rw-r--r--res/rooms/carrabassett4.tmj2
-rw-r--r--src/assets.odin200
-rw-r--r--src/draw.odin7
-rw-r--r--src/frame_callbacks.odin5
-rw-r--r--src/main.odin7
-rw-r--r--src/prop.odin160
-rw-r--r--src/resources.odin11
-rw-r--r--src/world.odin7
-rw-r--r--tools/compile_assets/loaders.odin5
-rw-r--r--tools/compile_assets/main.odin19
-rw-r--r--tools/compile_assets/tiled.odin175
28 files changed, 1749 insertions, 174 deletions
diff --git a/res/img/carrabasset_big_trunk.png b/res/img/carrabasset_big_trunk.png
new file mode 100644
index 0000000..689fdf6
--- /dev/null
+++ b/res/img/carrabasset_big_trunk.png
Binary files differ
diff --git a/res/img/carrabasset_vines_0.png b/res/img/carrabasset_vines_0.png
new file mode 100644
index 0000000..97e2482
--- /dev/null
+++ b/res/img/carrabasset_vines_0.png
Binary files differ
diff --git a/res/img/carrabasset_vines_1.png b/res/img/carrabasset_vines_1.png
new file mode 100644
index 0000000..e2116d2
--- /dev/null
+++ b/res/img/carrabasset_vines_1.png
Binary files differ
diff --git a/res/img/carrabasset_vines_2.png b/res/img/carrabasset_vines_2.png
new file mode 100644
index 0000000..2a43b05
--- /dev/null
+++ b/res/img/carrabasset_vines_2.png
Binary files differ
diff --git a/res/img/carrabassett_big_bush_0.png b/res/img/carrabassett_big_bush_0.png
new file mode 100644
index 0000000..fc11931
--- /dev/null
+++ b/res/img/carrabassett_big_bush_0.png
Binary files differ
diff --git a/res/img/carrabassett_props.png b/res/img/carrabassett_props.png
new file mode 100644
index 0000000..5b28a5b
--- /dev/null
+++ b/res/img/carrabassett_props.png
Binary files differ
diff --git a/res/img/carrabassett_small_bush_0.png b/res/img/carrabassett_small_bush_0.png
new file mode 100644
index 0000000..dc926e4
--- /dev/null
+++ b/res/img/carrabassett_small_bush_0.png
Binary files differ
diff --git a/res/img/carrabassett_small_trunk.png b/res/img/carrabassett_small_trunk.png
new file mode 100644
index 0000000..bfef5d5
--- /dev/null
+++ b/res/img/carrabassett_small_trunk.png
Binary files differ
diff --git a/res/img/lamp_post_0.png b/res/img/lamp_post_0.png
new file mode 100644
index 0000000..c7efa8e
--- /dev/null
+++ b/res/img/lamp_post_0.png
Binary files differ
diff --git a/res/img/small_lamp.png b/res/img/small_lamp.png
new file mode 100644
index 0000000..120a22d
--- /dev/null
+++ b/res/img/small_lamp.png
Binary files differ
diff --git a/res/img/windchimes_0.png b/res/img/windchimes_0.png
new file mode 100644
index 0000000..9e1ba66
--- /dev/null
+++ b/res/img/windchimes_0.png
Binary files differ
diff --git a/res/img/windchimes_1.png b/res/img/windchimes_1.png
new file mode 100644
index 0000000..892a768
--- /dev/null
+++ b/res/img/windchimes_1.png
Binary files differ
diff --git a/res/props.tsj b/res/props.tsj
new file mode 100644
index 0000000..dba886b
--- /dev/null
+++ b/res/props.tsj
@@ -0,0 +1,78 @@
+{ "columns":0,
+ "grid":
+ {
+ "height":1,
+ "orientation":"orthogonal",
+ "width":1
+ },
+ "margin":0,
+ "name":"props",
+ "spacing":0,
+ "tilecount":10,
+ "tiledversion":"1.11.2",
+ "tileheight":55,
+ "tiles":[
+ {
+ "id":0,
+ "image":"img\/carrabasset_vines_0.png",
+ "imageheight":38,
+ "imagewidth":14
+ },
+ {
+ "id":1,
+ "image":"img\/carrabasset_big_trunk.png",
+ "imageheight":14,
+ "imagewidth":29
+ },
+ {
+ "id":2,
+ "image":"img\/carrabasset_vines_1.png",
+ "imageheight":22,
+ "imagewidth":14
+ },
+ {
+ "id":4,
+ "image":"img\/carrabassett_big_bush_0.png",
+ "imageheight":19,
+ "imagewidth":32
+ },
+ {
+ "id":6,
+ "image":"img\/carrabassett_small_bush_0.png",
+ "imageheight":18,
+ "imagewidth":16
+ },
+ {
+ "id":7,
+ "image":"img\/carrabassett_small_trunk.png",
+ "imageheight":22,
+ "imagewidth":14
+ },
+ {
+ "id":8,
+ "image":"img\/lamp_post_0.png",
+ "imageheight":55,
+ "imagewidth":26
+ },
+ {
+ "id":9,
+ "image":"img\/small_lamp.png",
+ "imageheight":9,
+ "imagewidth":5
+ },
+ {
+ "id":10,
+ "image":"img\/windchimes_0.png",
+ "imageheight":16,
+ "imagewidth":9
+ },
+ {
+ "id":11,
+ "image":"img\/windchimes_1.png",
+ "imageheight":25,
+ "imagewidth":9
+ }],
+ "tilewidth":32,
+ "type":"tileset",
+ "version":"1.10"
+} \ No newline at end of file
diff --git a/res/rooms/carrabassett0.tmj b/res/rooms/carrabassett0.tmj
index a765631..803f112 100644
--- a/res/rooms/carrabassett0.tmj
+++ b/res/rooms/carrabassett0.tmj
@@ -3,6 +3,630 @@
"infinite":false,
"layers":[
{
+ "draworder":"topdown",
+ "id":5,
+ "name":"Props",
+ "objects":[
+ {
+ "gid":53,
+ "height":55,
+ "id":10,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":26,
+ "x":340,
+ "y":200
+ },
+ {
+ "gid":54,
+ "height":9,
+ "id":11,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":5,
+ "x":360,
+ "y":168
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":12,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":352,
+ "y":200
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":13,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":412,
+ "y":200
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":14,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":364,
+ "y":200
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":15,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":172,
+ "y":200
+ },
+ {
+ "gid":46,
+ "height":14,
+ "id":16,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":29,
+ "x":224,
+ "y":200
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":17,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":220,
+ "y":92
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":18,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":296,
+ "y":92
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":19,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":340,
+ "y":76
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":20,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":416,
+ "y":60
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":21,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":492,
+ "y":76
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":22,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":432,
+ "y":76
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":23,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":352,
+ "y":92
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":24,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":236,
+ "y":108
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":25,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":80,
+ "y":124
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":30,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":528,
+ "y":100
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":31,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":472,
+ "y":88
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":33,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":512,
+ "y":96
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":34,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":60,
+ "y":124
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":35,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":44,
+ "y":148
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":37,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":24,
+ "y":180
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":38,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":148,
+ "y":96
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":40,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":260,
+ "y":92
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":42,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":164,
+ "y":88
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":43,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":128,
+ "y":100
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":44,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":20,
+ "y":280
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":45,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":304,
+ "y":200
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":46,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":260,
+ "y":200
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":47,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":284,
+ "y":200
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":48,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":132,
+ "y":248
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":49,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":96,
+ "y":248
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":50,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":64,
+ "y":280
+ },
+ {
+ "gid":52,
+ "height":22,
+ "id":51,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":116,
+ "y":248
+ },
+ {
+ "gid":52,
+ "height":22,
+ "id":52,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":300,
+ "y":200
+ },
+ {
+ "gid":52,
+ "height":22,
+ "id":53,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":448,
+ "y":232
+ },
+ {
+ "gid":55,
+ "height":16,
+ "id":56,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":9,
+ "x":484,
+ "y":208
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":57,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":540,
+ "y":152
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":58,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":612,
+ "y":152
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":59,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":576,
+ "y":152
+ },
+
+ {
+ "gid":47,
+ "height":22,
+ "id":60,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":556,
+ "y":124
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":61,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":572,
+ "y":136
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":62,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":588,
+ "y":124
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":65,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":580,
+ "y":132
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":67,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":504,
+ "y":80
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":68,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":424,
+ "y":68
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":69,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":248,
+ "y":100
+ },
+ {
+ "gid":2147483701,
+ "height":55,
+ "id":71,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":26,
+ "x":484,
+ "y":232
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":80,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":400,
+ "y":172
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":81,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":412,
+ "y":156
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":82,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":436,
+ "y":172
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ {
"data":[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 19, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
@@ -10,11 +634,11 @@
40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 19, 31, 19, 19, 19, 31, 19, 31, 19, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 21, 31, 31, 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40,
40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 31, 31, 31, 19, 19, 31,
- 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20, 20, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 19, 31, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 9, 20, 9, 9,
- 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 39, 40, 40, 40, 40, 40, 40,
- 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 31, 31, 28, 40, 40, 40, 40, 40, 40,
+ 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40,
+ 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40,
40, 32, 0, 0, 0, 0, 0, 0, 0, 41, 9, 20, 20, 20, 18, 20, 20, 9, 20, 9, 20, 9, 20, 20, 9, 9, 18, 6, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40,
27, 17, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40,
17, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 9, 9, 20, 20, 9, 39, 40, 40, 40, 40, 40, 40,
@@ -48,7 +672,7 @@
"visible":true,
"width":0,
"x":240,
- "y":184
+ "y":200
},
{
"height":48,
@@ -67,8 +691,8 @@
"x":0,
"y":0
}],
- "nextlayerid":3,
- "nextobjectid":4,
+ "nextlayerid":6,
+ "nextobjectid":83,
"orientation":"orthogonal",
"renderorder":"right-down",
"tiledversion":"1.11.2",
@@ -77,6 +701,10 @@
{
"firstgid":1,
"source":"..\/tileset.tsj"
+ },
+ {
+ "firstgid":45,
+ "source":"..\/props.tsj"
}],
"tilewidth":16,
"type":"map",
diff --git a/res/rooms/carrabassett1.tmj b/res/rooms/carrabassett1.tmj
index 91274b9..dbefbe3 100644
--- a/res/rooms/carrabassett1.tmj
+++ b/res/rooms/carrabassett1.tmj
@@ -3,6 +3,378 @@
"infinite":false,
"layers":[
{
+ "draworder":"topdown",
+ "id":5,
+ "name":"Props",
+ "objects":[
+ {
+ "gid":49,
+ "height":19,
+ "id":19,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":92,
+ "y":296
+ },
+ {
+ "gid":46,
+ "height":14,
+ "id":7,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":29,
+ "x":144,
+ "y":296
+ },
+ {
+ "gid":2147483701,
+ "height":55,
+ "id":9,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":26,
+ "x":180,
+ "y":296
+ },
+ {
+ "gid":56,
+ "height":25,
+ "id":10,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":9,
+ "x":179,
+ "y":281
+ },
+ {
+ "gid":56,
+ "height":25,
+ "id":11,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":9,
+ "x":134,
+ "y":281
+ },
+ {
+ "gid":53,
+ "height":55,
+ "id":8,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":26,
+ "x":116,
+ "y":296
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":13,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":127,
+ "y":296
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":14,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":181,
+ "y":296
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":15,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":224,
+ "y":296
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":16,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":252,
+ "y":296
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":17,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":292,
+ "y":280
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":18,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":48,
+ "y":280
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":20,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":80,
+ "y":104
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":24,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":88,
+ "y":100
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":25,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":100,
+ "y":96
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":26,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":108,
+ "y":88
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":27,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":116,
+ "y":88
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":29,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":96,
+ "y":96
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":30,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":192,
+ "y":76
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":32,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":272,
+ "y":128
+ },
+
+ {
+ "gid":45,
+ "height":38,
+ "id":33,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":244,
+ "y":100
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":34,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":228,
+ "y":72
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":35,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":264,
+ "y":104
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":36,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":284,
+ "y":128
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":37,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":40,
+ "y":108
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":38,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":56,
+ "y":92
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":39,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":68,
+ "y":108
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":40,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":24,
+ "y":172
+ },
+ {
+ "gid":52,
+ "height":22,
+ "id":41,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":272,
+ "y":280
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":42,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":24,
+ "y":200
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ {
"data":[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 28, 40, 40, 40, 40, 40, 40,
@@ -68,8 +440,8 @@
"x":0,
"y":0
}],
- "nextlayerid":3,
- "nextobjectid":7,
+ "nextlayerid":6,
+ "nextobjectid":43,
"orientation":"orthogonal",
"renderorder":"right-down",
"tiledversion":"1.11.2",
@@ -78,6 +450,10 @@
{
"firstgid":1,
"source":"..\/tileset.tsj"
+ },
+ {
+ "firstgid":45,
+ "source":"..\/props.tsj"
}],
"tilewidth":16,
"type":"map",
diff --git a/res/rooms/carrabassett2.tmj b/res/rooms/carrabassett2.tmj
index 837862a..118837f 100644
--- a/res/rooms/carrabassett2.tmj
+++ b/res/rooms/carrabassett2.tmj
@@ -3,6 +3,221 @@
"infinite":false,
"layers":[
{
+ "draworder":"topdown",
+ "id":3,
+ "name":"Props",
+ "objects":[
+ {
+ "gid":45,
+ "height":38,
+ "id":1,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":4,
+ "y":124
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":2,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":32,
+ "y":104
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":3,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":128,
+ "y":72
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":4,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":212,
+ "y":104
+ },
+ {
+ "gid":47,
+ "height":22,
+ "id":5,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":104,
+ "y":124
+ },
+ {
+ "gid":45,
+ "height":38,
+ "id":6,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":116,
+ "y":140
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":7,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":180,
+ "y":136
+ },
+ {
+ "gid":53,
+ "height":55,
+ "id":8,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":26,
+ "x":32,
+ "y":152
+ },
+ {
+ "gid":56,
+ "height":25,
+ "id":9,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":9,
+ "x":52,
+ "y":136
+ },
+ {
+ "gid":52,
+ "height":22,
+ "id":10,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":14,
+ "x":84,
+ "y":152
+ },
+ {
+ "gid":49,
+ "height":19,
+ "id":11,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":32,
+ "x":88,
+ "y":72
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":12,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":120,
+ "y":88
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":14,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":56,
+ "y":56
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":15,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":128,
+ "y":152
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":16,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":20,
+ "y":152
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":17,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":40,
+ "y":152
+ },
+ {
+ "gid":51,
+ "height":18,
+ "id":18,
+ "name":"",
+ "rotation":0,
+ "type":"",
+ "visible":true,
+ "width":16,
+ "x":52,
+ "y":152
+ }],
+ "opacity":1,
+ "type":"objectgroup",
+ "visible":true,
+ "x":0,
+ "y":0
+ },
+ {
"data":[40, 40, 40, 8, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 8, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 8, 0, 0, 10, 31, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
@@ -33,8 +248,8 @@
"x":0,
"y":0
}],
- "nextlayerid":2,
- "nextobjectid":1,
+ "nextlayerid":4,
+ "nextobjectid":19,
"orientation":"orthogonal",
"renderorder":"right-down",
"tiledversion":"1.11.2",
@@ -43,6 +258,10 @@
{
"firstgid":1,
"source":"..\/tileset.tsj"
+ },
+ {
+ "firstgid":45,
+ "source":"..\/props.tsj"
}],
"tilewidth":16,
"type":"map",
diff --git a/res/rooms/carrabassett3.tmj b/res/rooms/carrabassett3.tmj
index ed79838..4e9891e 100644
--- a/res/rooms/carrabassett3.tmj
+++ b/res/rooms/carrabassett3.tmj
@@ -53,7 +53,7 @@
"x":0,
"y":0
}],
- "nextlayerid":2,
+ "nextlayerid":3,
"nextobjectid":1,
"orientation":"orthogonal",
"renderorder":"right-down",
diff --git a/res/rooms/carrabassett4.tmj b/res/rooms/carrabassett4.tmj
index acb18b1..d9e6df7 100644
--- a/res/rooms/carrabassett4.tmj
+++ b/res/rooms/carrabassett4.tmj
@@ -68,7 +68,7 @@
"x":0,
"y":0
}],
- "nextlayerid":3,
+ "nextlayerid":4,
"nextobjectid":3,
"orientation":"orthogonal",
"renderorder":"right-down",
diff --git a/src/assets.odin b/src/assets.odin
index 592937b..d9a647a 100644
--- a/src/assets.odin
+++ b/src/assets.odin
@@ -8,11 +8,23 @@ package demonchime
Image_Id :: enum {
Bullet,
+ Carrabasset_Big_Trunk,
+ Carrabasset_Vines_0,
+ Carrabasset_Vines_1,
+ Carrabasset_Vines_2,
+ Carrabassett_Big_Bush_0,
+ Carrabassett_Props,
+ Carrabassett_Small_Bush_0,
+ Carrabassett_Small_Trunk,
Dash_Pickup,
Double_Jump_Pickup,
+ Lamp_Post_0,
Pistol,
Player,
+ Small_Lamp,
Tilesets,
+ Windchimes_0,
+ Windchimes_1,
}
Animation_Id :: enum {
@@ -28,131 +40,102 @@ Room_Id :: enum {
Carrabassett4,
}
-Tileset_Id :: enum {
- Tileset,
-}
-
Object_Type :: enum {
Collision,
Player_Spawn,
+ Prop,
Upgrade,
}
images: [Image_Id]Image_Resource = {
.Bullet = {data = #load("../res/img/bullet.qoi"), anim = .None},
+ .Carrabasset_Big_Trunk = {data = #load("../.compiled-res/carrabasset_big_trunk.qoi"), anim = .None},
+ .Carrabasset_Vines_0 = {data = #load("../.compiled-res/carrabasset_vines_0.qoi"), anim = .None},
+ .Carrabasset_Vines_1 = {data = #load("../.compiled-res/carrabasset_vines_1.qoi"), anim = .None},
+ .Carrabasset_Vines_2 = {data = #load("../.compiled-res/carrabasset_vines_2.qoi"), anim = .None},
+ .Carrabassett_Big_Bush_0 = {data = #load("../.compiled-res/carrabassett_big_bush_0.qoi"), anim = .None},
+ .Carrabassett_Props = {data = #load("../.compiled-res/carrabassett_props.qoi"), anim = .None},
+ .Carrabassett_Small_Bush_0 = {data = #load("../.compiled-res/carrabassett_small_bush_0.qoi"), anim = .None},
+ .Carrabassett_Small_Trunk = {data = #load("../.compiled-res/carrabassett_small_trunk.qoi"), anim = .None},
.Dash_Pickup = {data = #load("../res/img/dash_pickup.qoi"), anim = .None},
.Double_Jump_Pickup = {data = #load("../res/img/double_jump_pickup.qoi"), anim = .None},
+ .Lamp_Post_0 = {data = #load("../.compiled-res/lamp_post_0.qoi"), anim = .None},
.Pistol = {data = #load("../res/img/pistol.qoi"), anim = .None},
.Player = {data = #load("../.compiled-res/player-sheet.qoi"), anim = .Player},
+ .Small_Lamp = {data = #load("../.compiled-res/small_lamp.qoi"), anim = .None},
.Tilesets = {data = #load("../.compiled-res/tilesets.qoi"), anim = .None},
+ .Windchimes_0 = {data = #load("../.compiled-res/windchimes_0.qoi"), anim = .None},
+ .Windchimes_1 = {data = #load("../.compiled-res/windchimes_1.qoi"), anim = .None},
}
animations: [Animation_Id]Animation_Resource = {
.None = {frame_count=1, frame_durations={100}, tags={}},
- .Player = {frame_count = 23, frame_durations = {100, 100, 100, 100, 100, 100, 75, 75, 75, 75, 75, 75, 75, 75, 100, 100, 100, 100, 100, 100, 100, 100, 100}, tags = {"idle"={from = 0, to = 5}, "jump_trans"={from = 16, to = 16}, "run"={from = 6, to = 13}, "jump_down"={from = 17, to = 18}, "jump_up"={from = 14, to = 15}, "sleep"={from = 19, to = 22}}},
+ .Player = {frame_count = 23, frame_durations = {100, 100, 100, 100, 100, 100, 75, 75, 75, 75, 75, 75, 75, 75, 100, 100, 100, 100, 100, 100, 100, 100, 100}, tags = {"jump_up"={from = 14, to = 15}, "run"={from = 6, to = 13}, "jump_trans"={from = 16, to = 16}, "jump_down"={from = 17, to = 18}, "idle"={from = 0, to = 5}, "sleep"={from = 19, to = 22}}},
}
rooms: [Room_Id]Room_Resource = {
- .Carrabassett0 = {width=40, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 19, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 11, 0, 0, 0, 0, 16, 19, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 19, 31, 19, 19, 19, 31, 19, 31, 19, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 31, 31, 31, 19, 19, 31, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 9, 20, 9, 9, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 39, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 31, 31, 28, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 41, 9, 20, 20, 20, 18, 20, 20, 9, 20, 9, 20, 9, 20, 20, 9, 9, 18, 6, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 17, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 9, 9, 20, 20, 9, 39, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 5, 20, 20, 18, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 20, 9, 20, 18, 20, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Player_Spawn, pos = {240, 184}, size = {0, 0}, parallax = {0, 0}, properties = {}}, {type = .Collision, pos = {0, 0}, size = {48, 48}, parallax = {0, 0}, properties = {}}, }, background_image=nil},
- .Carrabassett1 = {width=20, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 17, 0, 0, 0, 16, 19, 28, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 17, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 38, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 43, 9, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 18, 20, 20, 40, 40, 40, 40, 40, 43, 9, 9, 9, 9, 9, 9, 18, 9, 18, 18, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Upgrade, pos = {160, 240}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/dash_pickup.qoi", "type"=0}}, }, background_image=nil},
- .Carrabassett2 = {width=20, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 8, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 8, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 8, 0, 0, 10, 31, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 20, 42, 0, 0, 0, 10, 19, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 19, 28, 38, 18, 6, 0, 0, 0, 0, 10, 19, 28, 40, 40, 40, 40, 40, 27, 17, 0, 0, 10, 28, 40, 38, 20, 42, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 17, 0, 0, 0, 0, 16, 19, 31, 19, 17, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 39, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 18, 9, 9, 39, 40, 40, 40, 40, 40, 40, 20, 9, 18, 9, 9, 9, 20, 20, 9, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={}, background_image=nil},
- .Carrabassett3 = {width=20, height=40, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 19, 31, 19, 19, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 19, 31, 17, 0, 0, 0, 0, 0, 16, 19, 28, 40, 40, 40, 40, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 28, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20, 9, 39, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 18, 9, 18, 39, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 41, 20, 20, 18, 18, 39, 40, 40, 40, 40, 40, 21, 28, 40, 40, 32, 0, 0, 0, 0, 10, 31, 31, 19, 19, 28, 40, 40, 40, 40, 27, 17, 7, 40, 40, 43, 42, 0, 0, 0, 0, 0, 0, 0, 0, 10, 19, 19, 19, 31, 17, 0, 7, 40, 40, 40, 38, 18, 18, 20, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 38, 20, 20, 18, 6, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 6, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 6, 0, 0, 0, 0, 0, 7, 40, 40, 21, 28, 40, 21, 31, 28, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 7, 40, 40, 32, 16, 19, 17, 0, 16, 19, 19, 31, 28, 40, 38, 9, 20, 6, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 31, 19, 19, 17, 0, 0, 7, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20, 18, 9, 9, 18, 20, 39, 40, 40, 43, 6, 0, 0, 0, 0, 0, 41, 20, 20, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 42, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 20, 20, 42, 0, 10, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 19, 19, 28, 40, 8, 0, 0, 0, 10, 31, 19, 31, 28, 40, 40, 40, 40, 40, 40, 32, 0, 0, 10, 19, 17, 0, 0, 0, 0, 0, 0, 0, 16, 31, 31, 31, 19, 31, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 38, 9, 9, 9, 20, 20, 18, 18, 9, 9, 42, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 8, 0, 0, 5, 20, 20, 9, 9, 18, 40, 40, 40, 21, 31, 31, 19, 31, 31, 19, 19, 17, 0, 5, 39, 40, 40, 40, 40, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 40, 40, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 41, 20, 18, 20, 39, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 6, 0, 0, 0, 0, 41, 9, 9, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 6, 0, 0, 41, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={}, background_image=nil},
- .Carrabassett4 = {width=20, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 19, 19, 17, 0, 10, 31, 19, 31, 28, 40, 40, 40, 40, 40, 40, 40, 21, 31, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 31, 19, 28, 40, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 20, 9, 20, 20, 9, 9, 39, 40, 40, 18, 9, 20, 18, 20, 9, 9, 9, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Upgrade, pos = {160, 241}, size = {0, 0}, parallax = {0, 0}, properties = {"type"=1, "image"="res/img/double_jump_pickup.qoi"}}, }, background_image=nil},
-}
-
-tilesets: [Tileset_Id]Tileset_Resource = {
- .Tileset = {tiles={45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88}, image=.Tilesets},
+ .Carrabassett0 = {width=40, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 19, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 11, 0, 0, 0, 0, 16, 19, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 19, 31, 19, 19, 19, 31, 19, 31, 19, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 31, 31, 31, 19, 19, 31, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20, 20, 18, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 19, 31, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 9, 20, 9, 9, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 41, 9, 20, 20, 20, 18, 20, 20, 9, 20, 9, 20, 9, 20, 20, 9, 9, 18, 6, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 17, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 9, 9, 20, 20, 9, 39, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 5, 20, 20, 18, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 20, 9, 20, 18, 20, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Prop, tile_id = 53, pos = {340, 200}, size = {26, 55}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 54, pos = {360, 168}, size = {5, 9}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {352, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {412, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {364, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {172, 200}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 46, pos = {224, 200}, size = {29, 14}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {220, 92}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {296, 92}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {340, 76}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {416, 60}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {492, 76}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {432, 76}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {352, 92}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {236, 108}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {80, 124}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {528, 100}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {472, 88}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {512, 96}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {60, 124}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {44, 148}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {24, 180}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {148, 96}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {260, 92}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {164, 88}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {128, 100}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {20, 280}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {304, 200}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {260, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {284, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {132, 248}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {96, 248}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {64, 280}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {116, 248}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {300, 200}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {448, 232}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 55, pos = {484, 208}, size = {9, 16}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {540, 152}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {612, 152}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {576, 152}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {556, 124}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {572, 136}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {588, 124}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {580, 132}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {504, 80}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {424, 68}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {248, 100}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 53, pos = {484, 232}, size = {-26, 55}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {400, 172}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {412, 156}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {436, 172}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Player_Spawn, tile_id = nil, pos = {240, 200}, size = {0, 0}, parallax = {0, 0}, properties = {}}, {type = .Collision, tile_id = nil, pos = {0, 0}, size = {48, 48}, parallax = {0, 0}, properties = {}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
+ .Carrabassett1 = {width=20, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 31, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 17, 0, 0, 0, 16, 19, 28, 40, 40, 40, 40, 40, 40, 40, 27, 31, 31, 17, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 40, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 38, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 43, 9, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 18, 20, 20, 40, 40, 40, 40, 40, 43, 9, 9, 9, 9, 9, 9, 18, 9, 18, 18, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Prop, tile_id = 49, pos = {92, 296}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 46, pos = {144, 296}, size = {29, 14}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 53, pos = {180, 296}, size = {-26, 55}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 56, pos = {179, 281}, size = {9, 25}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 56, pos = {134, 281}, size = {9, 25}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 53, pos = {116, 296}, size = {26, 55}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {127, 296}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {181, 296}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {224, 296}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {252, 296}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {292, 280}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {48, 280}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {80, 104}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {88, 100}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {100, 96}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {108, 88}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {116, 88}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {96, 96}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {192, 76}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {272, 128}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {244, 100}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {228, 72}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {264, 104}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {284, 128}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {40, 108}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {56, 92}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {68, 108}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {24, 172}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {272, 280}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {24, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Upgrade, tile_id = nil, pos = {160, 240}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/dash_pickup.qoi", "type"=0}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
+ .Carrabassett2 = {width=20, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 8, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 8, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 8, 0, 0, 10, 31, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 20, 42, 0, 0, 0, 10, 19, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 27, 31, 19, 28, 38, 18, 6, 0, 0, 0, 0, 10, 19, 28, 40, 40, 40, 40, 40, 27, 17, 0, 0, 10, 28, 40, 38, 20, 42, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 17, 0, 0, 0, 0, 16, 19, 31, 19, 17, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 39, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 18, 9, 9, 39, 40, 40, 40, 40, 40, 40, 20, 9, 18, 9, 9, 9, 20, 20, 9, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Prop, tile_id = 45, pos = {4, 124}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {32, 104}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {128, 72}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {212, 104}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {104, 124}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {116, 140}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {180, 136}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 53, pos = {32, 152}, size = {26, 55}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 56, pos = {52, 136}, size = {9, 25}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {84, 152}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {88, 72}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {120, 88}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {56, 56}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {128, 152}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {20, 152}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {40, 152}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {52, 152}, size = {16, 18}, parallax = {0, 0}, properties = {}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
+ .Carrabassett3 = {width=20, height=40, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 19, 31, 19, 19, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 19, 31, 17, 0, 0, 0, 0, 0, 16, 19, 28, 40, 40, 40, 40, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 28, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20, 9, 39, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 18, 9, 18, 39, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 41, 20, 20, 18, 18, 39, 40, 40, 40, 40, 40, 21, 28, 40, 40, 32, 0, 0, 0, 0, 10, 31, 31, 19, 19, 28, 40, 40, 40, 40, 27, 17, 7, 40, 40, 43, 42, 0, 0, 0, 0, 0, 0, 0, 0, 10, 19, 19, 19, 31, 17, 0, 7, 40, 40, 40, 38, 18, 18, 20, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 38, 20, 20, 18, 6, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 6, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 6, 0, 0, 0, 0, 0, 7, 40, 40, 21, 28, 40, 21, 31, 28, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 7, 40, 40, 32, 16, 19, 17, 0, 16, 19, 19, 31, 28, 40, 38, 9, 20, 6, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 31, 19, 19, 17, 0, 0, 7, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 20, 18, 9, 9, 18, 20, 39, 40, 40, 43, 6, 0, 0, 0, 0, 0, 41, 20, 20, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 42, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 20, 20, 42, 0, 10, 19, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 27, 19, 19, 28, 40, 8, 0, 0, 0, 10, 31, 19, 31, 28, 40, 40, 40, 40, 40, 40, 32, 0, 0, 10, 19, 17, 0, 0, 0, 0, 0, 0, 0, 16, 31, 31, 31, 19, 31, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 38, 9, 9, 9, 20, 20, 18, 18, 9, 9, 42, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 8, 0, 0, 5, 20, 20, 9, 9, 18, 40, 40, 40, 21, 31, 31, 19, 31, 31, 19, 19, 17, 0, 5, 39, 40, 40, 40, 40, 40, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 40, 40, 40, 40, 40, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 41, 20, 18, 20, 39, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 38, 6, 0, 0, 0, 0, 41, 9, 9, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43, 6, 0, 0, 41, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={}, background_color=Color{0, 0, 0, 1}, background_images={} },
+ .Carrabassett4 = {width=20, height=20, tile_width=16, tile_height=16, layers={{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 28, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 21, 31, 19, 19, 17, 0, 10, 31, 19, 31, 28, 40, 40, 40, 40, 40, 40, 40, 21, 31, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 31, 19, 28, 40, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 40, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 27, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18, 9, 20, 9, 20, 20, 9, 9, 39, 40, 40, 18, 9, 20, 18, 20, 9, 9, 9, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}}, objects={{type = .Upgrade, tile_id = nil, pos = {160, 241}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/double_jump_pickup.qoi", "type"=1}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
}
tiles: []Tile_Resource = {
- {tileset=.Tileset, rect=Rect{start = {0, 0}, size = {16, 16}}, id=1, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 0}, size = {16, 16}}, id=2, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 0}, size = {16, 16}}, id=3, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 0}, size = {16, 16}}, id=4, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 0}, size = {16, 16}}, id=5, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {80, 0}, size = {16, 16}}, id=6, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {96, 0}, size = {16, 16}}, id=7, collisions={Rect{start = {8, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {112, 0}, size = {16, 16}}, id=8, collisions={Rect{start = {0, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 0}, size = {16, 16}}, id=9, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 0}, size = {16, 16}}, id=10, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {160, 0}, size = {16, 16}}, id=11, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {0, 16}, size = {16, 16}}, id=12, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 16}, size = {16, 16}}, id=13, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 16}, size = {16, 16}}, id=14, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 16}, size = {16, 16}}, id=15, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 16}, size = {16, 16}}, id=16, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {80, 16}, size = {16, 16}}, id=17, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {96, 16}, size = {16, 16}}, id=18, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {112, 16}, size = {16, 16}}, id=19, collisions={Rect{start = {0, 0}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 16}, size = {16, 16}}, id=20, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 16}, size = {16, 16}}, id=21, collisions={Rect{start = {8, 0}, size = {8, 8}}, Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {160, 16}, size = {16, 16}}, id=22, collisions={Rect{start = {8, 8}, size = {8, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {0, 32}, size = {16, 16}}, id=23, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 32}, size = {16, 16}}, id=24, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 32}, size = {16, 16}}, id=25, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 32}, size = {16, 16}}, id=26, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 32}, size = {16, 16}}, id=27, collisions={Rect{start = {8, 0}, size = {8, 8}}, Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {80, 32}, size = {16, 16}}, id=28, collisions={Rect{start = {8, 8}, size = {8, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {96, 32}, size = {16, 16}}, id=29, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {112, 32}, size = {16, 16}}, id=30, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 32}, size = {16, 16}}, id=31, collisions={Rect{start = {0, 0}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 32}, size = {16, 16}}, id=32, collisions={Rect{start = {0, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {160, 32}, size = {16, 16}}, id=33, collisions={Rect{start = {8, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {0, 48}, size = {16, 16}}, id=34, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 48}, size = {16, 16}}, id=35, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 48}, size = {16, 16}}, id=36, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 48}, size = {16, 16}}, id=37, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 48}, size = {16, 16}}, id=38, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {80, 48}, size = {16, 16}}, id=39, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {8, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {96, 48}, size = {16, 16}}, id=40, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {112, 48}, size = {16, 16}}, id=41, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 48}, size = {16, 16}}, id=42, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 48}, size = {16, 16}}, id=43, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {160, 48}, size = {16, 16}}, id=44, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {8, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {0, 0}, size = {16, 16}}, id=45, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 0}, size = {16, 16}}, id=46, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 0}, size = {16, 16}}, id=47, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 0}, size = {16, 16}}, id=48, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 0}, size = {16, 16}}, id=49, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {80, 0}, size = {16, 16}}, id=50, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {96, 0}, size = {16, 16}}, id=51, collisions={Rect{start = {8, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {112, 0}, size = {16, 16}}, id=52, collisions={Rect{start = {0, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 0}, size = {16, 16}}, id=53, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 0}, size = {16, 16}}, id=54, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {160, 0}, size = {16, 16}}, id=55, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {0, 16}, size = {16, 16}}, id=56, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 16}, size = {16, 16}}, id=57, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 16}, size = {16, 16}}, id=58, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 16}, size = {16, 16}}, id=59, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 16}, size = {16, 16}}, id=60, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {80, 16}, size = {16, 16}}, id=61, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {96, 16}, size = {16, 16}}, id=62, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {112, 16}, size = {16, 16}}, id=63, collisions={Rect{start = {0, 0}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 16}, size = {16, 16}}, id=64, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 16}, size = {16, 16}}, id=65, collisions={Rect{start = {8, 0}, size = {8, 8}}, Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {160, 16}, size = {16, 16}}, id=66, collisions={Rect{start = {8, 8}, size = {8, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {0, 32}, size = {16, 16}}, id=67, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 32}, size = {16, 16}}, id=68, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 32}, size = {16, 16}}, id=69, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 32}, size = {16, 16}}, id=70, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 32}, size = {16, 16}}, id=71, collisions={Rect{start = {8, 0}, size = {8, 8}}, Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {80, 32}, size = {16, 16}}, id=72, collisions={Rect{start = {8, 8}, size = {8, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {96, 32}, size = {16, 16}}, id=73, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {112, 32}, size = {16, 16}}, id=74, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 32}, size = {16, 16}}, id=75, collisions={Rect{start = {0, 0}, size = {16, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 32}, size = {16, 16}}, id=76, collisions={Rect{start = {0, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {160, 32}, size = {16, 16}}, id=77, collisions={Rect{start = {8, 0}, size = {8, 16}}}},
- {tileset=.Tileset, rect=Rect{start = {0, 48}, size = {16, 16}}, id=78, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {16, 48}, size = {16, 16}}, id=79, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {32, 48}, size = {16, 16}}, id=80, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {48, 48}, size = {16, 16}}, id=81, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {64, 48}, size = {16, 16}}, id=82, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {80, 48}, size = {16, 16}}, id=83, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {8, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {96, 48}, size = {16, 16}}, id=84, collisions={}},
- {tileset=.Tileset, rect=Rect{start = {112, 48}, size = {16, 16}}, id=85, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {128, 48}, size = {16, 16}}, id=86, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {144, 48}, size = {16, 16}}, id=87, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
- {tileset=.Tileset, rect=Rect{start = {160, 48}, size = {16, 16}}, id=88, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {8, 0}, size = {8, 8}}}},
+ 1 = {image=.Tilesets, rect=Rect{start = {0, 0}, size = {16, 16}}, id=1, collisions={}},
+ 2 = {image=.Tilesets, rect=Rect{start = {16, 0}, size = {16, 16}}, id=2, collisions={}},
+ 3 = {image=.Tilesets, rect=Rect{start = {32, 0}, size = {16, 16}}, id=3, collisions={}},
+ 4 = {image=.Tilesets, rect=Rect{start = {48, 0}, size = {16, 16}}, id=4, collisions={}},
+ 5 = {image=.Tilesets, rect=Rect{start = {64, 0}, size = {16, 16}}, id=5, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
+ 6 = {image=.Tilesets, rect=Rect{start = {80, 0}, size = {16, 16}}, id=6, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
+ 7 = {image=.Tilesets, rect=Rect{start = {96, 0}, size = {16, 16}}, id=7, collisions={Rect{start = {8, 0}, size = {8, 16}}}},
+ 8 = {image=.Tilesets, rect=Rect{start = {112, 0}, size = {16, 16}}, id=8, collisions={Rect{start = {0, 0}, size = {8, 16}}}},
+ 9 = {image=.Tilesets, rect=Rect{start = {128, 0}, size = {16, 16}}, id=9, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
+ 10 = {image=.Tilesets, rect=Rect{start = {144, 0}, size = {16, 16}}, id=10, collisions={}},
+ 11 = {image=.Tilesets, rect=Rect{start = {160, 0}, size = {16, 16}}, id=11, collisions={}},
+ 12 = {image=.Tilesets, rect=Rect{start = {0, 16}, size = {16, 16}}, id=12, collisions={}},
+ 13 = {image=.Tilesets, rect=Rect{start = {16, 16}, size = {16, 16}}, id=13, collisions={}},
+ 14 = {image=.Tilesets, rect=Rect{start = {32, 16}, size = {16, 16}}, id=14, collisions={}},
+ 15 = {image=.Tilesets, rect=Rect{start = {48, 16}, size = {16, 16}}, id=15, collisions={}},
+ 16 = {image=.Tilesets, rect=Rect{start = {64, 16}, size = {16, 16}}, id=16, collisions={}},
+ 17 = {image=.Tilesets, rect=Rect{start = {80, 16}, size = {16, 16}}, id=17, collisions={}},
+ 18 = {image=.Tilesets, rect=Rect{start = {96, 16}, size = {16, 16}}, id=18, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
+ 19 = {image=.Tilesets, rect=Rect{start = {112, 16}, size = {16, 16}}, id=19, collisions={Rect{start = {0, 0}, size = {16, 8}}}},
+ 20 = {image=.Tilesets, rect=Rect{start = {128, 16}, size = {16, 16}}, id=20, collisions={Rect{start = {0, 8}, size = {16, 8}}}},
+ 21 = {image=.Tilesets, rect=Rect{start = {144, 16}, size = {16, 16}}, id=21, collisions={Rect{start = {8, 0}, size = {8, 8}}, Rect{start = {0, 8}, size = {8, 8}}}},
+ 22 = {image=.Tilesets, rect=Rect{start = {160, 16}, size = {16, 16}}, id=22, collisions={Rect{start = {8, 8}, size = {8, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
+ 23 = {image=.Tilesets, rect=Rect{start = {0, 32}, size = {16, 16}}, id=23, collisions={}},
+ 24 = {image=.Tilesets, rect=Rect{start = {16, 32}, size = {16, 16}}, id=24, collisions={}},
+ 25 = {image=.Tilesets, rect=Rect{start = {32, 32}, size = {16, 16}}, id=25, collisions={}},
+ 26 = {image=.Tilesets, rect=Rect{start = {48, 32}, size = {16, 16}}, id=26, collisions={}},
+ 27 = {image=.Tilesets, rect=Rect{start = {64, 32}, size = {16, 16}}, id=27, collisions={Rect{start = {8, 0}, size = {8, 8}}, Rect{start = {0, 8}, size = {8, 8}}}},
+ 28 = {image=.Tilesets, rect=Rect{start = {80, 32}, size = {16, 16}}, id=28, collisions={Rect{start = {8, 8}, size = {8, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
+ 29 = {image=.Tilesets, rect=Rect{start = {96, 32}, size = {16, 16}}, id=29, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
+ 30 = {image=.Tilesets, rect=Rect{start = {112, 32}, size = {16, 16}}, id=30, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
+ 31 = {image=.Tilesets, rect=Rect{start = {128, 32}, size = {16, 16}}, id=31, collisions={Rect{start = {0, 0}, size = {16, 8}}}},
+ 32 = {image=.Tilesets, rect=Rect{start = {144, 32}, size = {16, 16}}, id=32, collisions={Rect{start = {0, 0}, size = {8, 16}}}},
+ 33 = {image=.Tilesets, rect=Rect{start = {160, 32}, size = {16, 16}}, id=33, collisions={Rect{start = {8, 0}, size = {8, 16}}}},
+ 34 = {image=.Tilesets, rect=Rect{start = {0, 48}, size = {16, 16}}, id=34, collisions={}},
+ 35 = {image=.Tilesets, rect=Rect{start = {16, 48}, size = {16, 16}}, id=35, collisions={}},
+ 36 = {image=.Tilesets, rect=Rect{start = {32, 48}, size = {16, 16}}, id=36, collisions={}},
+ 37 = {image=.Tilesets, rect=Rect{start = {48, 48}, size = {16, 16}}, id=37, collisions={}},
+ 38 = {image=.Tilesets, rect=Rect{start = {64, 48}, size = {16, 16}}, id=38, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
+ 39 = {image=.Tilesets, rect=Rect{start = {80, 48}, size = {16, 16}}, id=39, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {8, 0}, size = {8, 8}}}},
+ 40 = {image=.Tilesets, rect=Rect{start = {96, 48}, size = {16, 16}}, id=40, collisions={}},
+ 41 = {image=.Tilesets, rect=Rect{start = {112, 48}, size = {16, 16}}, id=41, collisions={Rect{start = {8, 8}, size = {8, 8}}}},
+ 42 = {image=.Tilesets, rect=Rect{start = {128, 48}, size = {16, 16}}, id=42, collisions={Rect{start = {0, 8}, size = {8, 8}}}},
+ 43 = {image=.Tilesets, rect=Rect{start = {144, 48}, size = {16, 16}}, id=43, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {0, 0}, size = {8, 8}}}},
+ 44 = {image=.Tilesets, rect=Rect{start = {160, 48}, size = {16, 16}}, id=44, collisions={Rect{start = {0, 8}, size = {16, 8}}, Rect{start = {8, 0}, size = {8, 8}}}},
+ 45 = {image=.Carrabasset_Vines_0, rect=Rect{start = {0, 0}, size = {14, 38}}, id=45, collisions={}},
+ 46 = {image=.Carrabasset_Big_Trunk, rect=Rect{start = {0, 0}, size = {29, 14}}, id=46, collisions={}},
+ 47 = {image=.Carrabasset_Vines_1, rect=Rect{start = {0, 0}, size = {14, 22}}, id=47, collisions={}},
+ 49 = {image=.Carrabassett_Big_Bush_0, rect=Rect{start = {0, 0}, size = {32, 19}}, id=49, collisions={}},
+ 51 = {image=.Carrabassett_Small_Bush_0, rect=Rect{start = {0, 0}, size = {16, 18}}, id=51, collisions={}},
+ 52 = {image=.Carrabassett_Small_Trunk, rect=Rect{start = {0, 0}, size = {14, 22}}, id=52, collisions={}},
+ 53 = {image=.Lamp_Post_0, rect=Rect{start = {0, 0}, size = {26, 55}}, id=53, collisions={}},
+ 54 = {image=.Small_Lamp, rect=Rect{start = {0, 0}, size = {5, 9}}, id=54, collisions={}},
+ 55 = {image=.Windchimes_0, rect=Rect{start = {0, 0}, size = {9, 16}}, id=55, collisions={}},
+ 56 = {image=.Windchimes_1, rect=Rect{start = {0, 0}, size = {9, 25}}, id=56, collisions={}},
}
world: []Room_Position_Resource = {
@@ -167,7 +150,6 @@ Resource_Id :: union {
Image_Id,
Animation_Id,
Room_Id,
- Tileset_Id,
}
path_to_resource_id: map[string]Resource_Id = {
@@ -176,10 +158,22 @@ path_to_resource_id: map[string]Resource_Id = {
"res/rooms/carrabassett0.tmj" = Room_Id.Carrabassett0,
"res/rooms/carrabassett1.tmj" = Room_Id.Carrabassett1,
"res/rooms/carrabassett3.tmj" = Room_Id.Carrabassett3,
+ "res/img/carrabasset_vines_2.png" = Image_Id.Carrabasset_Vines_2,
"res/img/dash_pickup.qoi" = Image_Id.Dash_Pickup,
+ "res/img/carrabassett_small_bush_0.png" = Image_Id.Carrabassett_Small_Bush_0,
"res/img/player.ase" = Image_Id.Player,
+ "res/img/carrabasset_vines_1.png" = Image_Id.Carrabasset_Vines_1,
+ "res/img/windchimes_1.png" = Image_Id.Windchimes_1,
+ "res/img/carrabassett_big_bush_0.png" = Image_Id.Carrabassett_Big_Bush_0,
"res/img/bullet.qoi" = Image_Id.Bullet,
+ "res/img/small_lamp.png" = Image_Id.Small_Lamp,
+ "res/img/lamp_post_0.png" = Image_Id.Lamp_Post_0,
+ "res/img/carrabasset_vines_0.png" = Image_Id.Carrabasset_Vines_0,
"res/img/double_jump_pickup.qoi" = Image_Id.Double_Jump_Pickup,
+ "res/img/carrabassett_small_trunk.png" = Image_Id.Carrabassett_Small_Trunk,
+ "res/img/carrabasset_big_trunk.png" = Image_Id.Carrabasset_Big_Trunk,
"res/img/pistol.qoi" = Image_Id.Pistol,
+ "res/img/windchimes_0.png" = Image_Id.Windchimes_0,
+ "res/img/carrabassett_props.png" = Image_Id.Carrabassett_Props,
"res/img/tilesets.png" = Image_Id.Tilesets,
}
diff --git a/src/draw.odin b/src/draw.odin
index 43d8c0a..d821a10 100644
--- a/src/draw.odin
+++ b/src/draw.odin
@@ -2,8 +2,10 @@ package demonchime
import "core:c"
import "core:math"
+import "core:math/linalg"
import rl "vendor:raylib"
+import rlgl "vendor:raylib/rlgl"
Color :: [4]f32
@@ -11,6 +13,11 @@ SCREEN_WIDTH :: 320
SCREEN_HEIGHT :: 320
SCREEN_SIZE :: Vec2{SCREEN_WIDTH, SCREEN_HEIGHT}
+// @(default_calling_convention = "c")
+// foreign lib {
+// DrawTexturePoly :: proc(texture: rl.Texture2D, center: rl.Vector2, points: [^]rl.Vector2, textcoords: [^]rl.Vector2, point_count: c.int, color: Color) --- // Draw a regular polygon (Vector version)
+// }
+
renderer: struct {
screen: rl.RenderTexture2D,
tint: Color,
diff --git a/src/frame_callbacks.odin b/src/frame_callbacks.odin
index c264da6..5991ddf 100644
--- a/src/frame_callbacks.odin
+++ b/src/frame_callbacks.odin
@@ -7,10 +7,13 @@ update_callbacks := []Update_Callback{
update_player,
update_bullets,
update_upgrade,
+ update_wiggle_props,
}
draw_callbacks := []Draw_Callback{
- draw_player,
+ draw_props,
+ draw_wiggle_props,
+ draw_player, // PLAYER HERE
draw_bullets,
draw_upgrade,
}
diff --git a/src/main.odin b/src/main.odin
index 6e299c8..1d3de1a 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -26,6 +26,8 @@ state: struct {
debug_mode: bool,
camera_target: Vec2,
camera: rl.Camera2D,
+ prop_list: Entity_List(Prop),
+ wiggle_prop_list: Entity_List(Wiggle_Prop),
platform_list: Entity_List(Platform),
bullet_list: Entity_List(Bullet),
}
@@ -86,7 +88,7 @@ frame :: proc() {
cam.target = linalg.round(cam.target)
rl.BeginMode2D(cam)
- renderer.tint = {0.2, 0.2, 0.2, 1}
+ renderer.tint = get_room(current_room.id).background_color
draw_rect({
{0, 0},
{f32(current_room.width), f32(current_room.height)},
@@ -96,7 +98,6 @@ frame :: proc() {
for cb in draw_callbacks {
cb()
}
-
draw_room(current_room.id)
rl.DrawRectangleGradientH(
@@ -165,6 +166,8 @@ cleanup :: proc() {
deinit_player()
delete_entity_list(state.platform_list)
delete_entity_list(state.bullet_list)
+ delete_entity_list(state.prop_list)
+ delete_entity_list(state.wiggle_prop_list)
phys.destroy_world()
}
diff --git a/src/prop.odin b/src/prop.odin
new file mode 100644
index 0000000..d46f181
--- /dev/null
+++ b/src/prop.odin
@@ -0,0 +1,160 @@
+package demonchime
+
+import "core:math/linalg"
+import "core:log"
+
+import rl "vendor:raylib"
+
+import "phys"
+
+Prop :: struct {
+ handle: Entity_Handle,
+ image_id: Image_Id,
+ pos: Vec2,
+ scale: Vec2,
+}
+
+make_prop :: proc(prop: Prop) -> (Entity_Handle, ^Prop) {
+ return make_entity(&state.prop_list, prop)
+}
+
+draw_props :: proc() {
+ iter := iter_entity_list(state.prop_list)
+ for p in entity_list_iter(&iter) {
+ image := get_image(p.image_id)
+ draw_texture(
+ image,
+ p.pos,
+ scale = p.scale,
+ )
+ }
+}
+
+Wiggle_Prop :: struct {
+ handle: Entity_Handle,
+ image_id: Image_Id,
+ pos: Vec2,
+ scale: Vec2,
+ offset: Vec2,
+ rotation: f32,
+ rotation_factor: f32,
+}
+
+make_wiggle_prop :: proc(prop: Wiggle_Prop) -> (Entity_Handle, ^Wiggle_Prop) {
+ return make_entity(&state.wiggle_prop_list, prop)
+}
+
+update_wiggle_props :: proc(dt: f32) {
+ iter := iter_entity_list(state.wiggle_prop_list)
+ for p in entity_list_iter(&iter) {
+ player_vel := phys.get_velocity(player.body)
+ player_pos := phys.get_position(player.body)
+
+ image := get_image(p.image_id)
+ dist := linalg.length(p.pos - player_pos)
+ dist = f32(max(image.width, image.height)) - dist
+ if dist < 0 {
+ dist = 0
+ }
+ p.rotation = player_vel.x / PLAYER_SPEED * dist * p.rotation_factor
+ }
+}
+
+draw_wiggle_props :: proc() {
+ iter := iter_entity_list(state.wiggle_prop_list)
+ for p in entity_list_iter(&iter) {
+ draw_texture_full(
+ get_image(p.image_id),
+ p.pos,
+ p.offset,
+ p.rotation,
+ p.scale,
+ )
+ }
+}
+
+clear_props :: proc() {
+ p_iter := iter_entity_list(state.prop_list)
+ for p in entity_list_iter(&p_iter) {
+ delete_entity(&state.prop_list, p.handle)
+ }
+
+ wp_iter := iter_entity_list(state.wiggle_prop_list)
+ for p in entity_list_iter(&wp_iter) {
+ delete_entity(&state.wiggle_prop_list, p.handle)
+ }
+}
+
+object_spawner_prop :: proc(obj: Object_Resource) {
+ tile_id, has_tile_id := obj.tile_id.(u32)
+ if !has_tile_id || tile_id == 0 {
+ log.warn("Prop does not have a tile id!")
+ return
+ }
+
+
+ tile := tiles[tile_id]
+ img := get_image(tile.image)
+
+ pos := obj.pos - Vec2{0, f32(img.height)}
+ scale := Vec2{1, 1}
+ if obj.size.x < 0 {
+ scale.x = -1
+ // pos.x -= f32(img.width)
+ }
+ if obj.size.y < 0 {
+ scale.y = -1
+ // pos.y -= f32(img.height)
+ }
+
+ #partial switch tile.image {
+ case .Carrabasset_Vines_0, .Carrabasset_Vines_1, .Carrabasset_Vines_2:
+ offset := linalg.round(Vec2{
+ f32(img.width) * 0.5,
+ 0,
+ })
+
+ rotation_factor: f32 = 1
+ #partial switch tile.image {
+ case .Carrabasset_Vines_0:
+ rotation_factor = 0.25
+ }
+
+ make_wiggle_prop(Wiggle_Prop{
+ image_id = tile.image,
+ pos = pos,
+ scale = scale,
+ offset = offset,
+ rotation_factor = -rotation_factor,
+ })
+ case .Carrabassett_Small_Bush_0, .Carrabassett_Big_Bush_0:
+ offset := linalg.round(Vec2{
+ f32(img.width) * 0.5,
+ f32(img.height),
+ })
+
+ rotation_factor: f32 = 1
+ #partial switch tile.image {
+ case .Carrabassett_Big_Bush_0:
+ rotation_factor = 0.25
+ }
+
+ make_wiggle_prop(Wiggle_Prop{
+ image_id = tile.image,
+ pos = pos + Vec2{0, f32(img.height)},
+ scale = scale,
+ offset = offset,
+ rotation_factor = rotation_factor,
+ })
+ case:
+ make_prop(Prop{
+ image_id = tile.image,
+ pos = pos,
+ scale = scale,
+ })
+ }
+}
+
+on_room_open_props :: proc(room_id: Room_Id) {
+ clear_props()
+}
diff --git a/src/resources.odin b/src/resources.odin
index 7051fcf..315551d 100644
--- a/src/resources.odin
+++ b/src/resources.odin
@@ -30,12 +30,18 @@ Animation_Resource :: struct {
Object_Resource :: struct {
type: Object_Type,
+ tile_id: Maybe(u32),
pos: Vec2,
size: Vec2,
parallax: Vec2,
properties: map[string]Tiled_Property,
}
+Backgrond_Image :: struct {
+ image_id: Image_Id,
+ parallax: Vec2,
+}
+
Room_Resource :: struct {
width: i32,
height: i32,
@@ -43,11 +49,12 @@ Room_Resource :: struct {
tile_height: i32,
layers: [][]u32,
objects: []Object_Resource,
- background_image: Maybe(Image_Id),
+ background_color: Color,
+ background_images: []Backgrond_Image,
}
Tile_Resource :: struct {
- tileset: Tileset_Id,
+ image: Image_Id,
rect: Rect,
id: u32,
collisions: []Rect,
diff --git a/src/world.odin b/src/world.odin
index d9848c6..85a85f0 100644
--- a/src/world.odin
+++ b/src/world.odin
@@ -13,11 +13,13 @@ object_spawners := [Object_Type]Object_Spawner{
.Player_Spawn = object_spawner_player_spawn,
.Collision = object_spawner_collision,
.Upgrade = object_spawner_upgrade,
+ .Prop = object_spawner_prop,
}
room_open_cb := []Room_Change_Callback{
on_room_open_platforms,
on_room_open_bullets,
+ on_room_open_props,
}
room_close_cb := []Room_Change_Callback{
@@ -96,9 +98,8 @@ open_room :: proc(id: Room_Id) -> bool {
draw_room :: proc(id: Room_Id) {
draw_tile :: proc(x: i32, y: i32, tile_id: u32) {
tile := tiles[tile_id]
- tileset := tilesets[tile.tileset]
rl.DrawTexturePro(
- get_image(tileset.image),
+ get_image(tile.image),
rl.Rectangle {
x = f32(tile.rect.start.x),
y = f32(tile.rect.start.y),
@@ -131,7 +132,7 @@ iterate_room_tiles :: proc(id: Room_Id, callback: Room_Iterate_Callback) {
for cell, i in layer {
if cell > 0 {
- callback(x, y, cell - 1)
+ callback(x, y, cell)
}
x += room.tile_width
diff --git a/tools/compile_assets/loaders.odin b/tools/compile_assets/loaders.odin
index 097c483..eadbc44 100644
--- a/tools/compile_assets/loaders.odin
+++ b/tools/compile_assets/loaders.odin
@@ -21,7 +21,10 @@ load_room :: proc(path: string, file: ^os.File, _: ^os.File) {
}
load_tileset :: proc(path: string, _: ^os.File, _: ^os.File) {
- load_json_tileset(path)
+ tileset_name := filepath.stem(path)
+ if tileset_name not_in tileset_gids {
+ load_json_tileset(path)
+ }
}
load_qoi :: proc(path: string, qoi: ^os.File, output: ^os.File) {
diff --git a/tools/compile_assets/main.odin b/tools/compile_assets/main.odin
index 67121fd..d8d8942 100644
--- a/tools/compile_assets/main.odin
+++ b/tools/compile_assets/main.odin
@@ -4,6 +4,7 @@ import os "core:os/os2"
import "core:fmt"
import "core:path/filepath"
import "core:strings"
+import "core:strconv"
import "core:sort"
COMPILED_DIR :: ".compiled-res/"
@@ -29,9 +30,6 @@ Animation_Id :: enum {
Room_Id :: enum {
<room-enum>}
-Tileset_Id :: enum {
-<tileset-enum>}
-
Object_Type :: enum {
<object-types>}
@@ -44,9 +42,6 @@ animations: [Animation_Id]Animation_Resource = {
rooms: [Room_Id]Room_Resource = {
<room-load>}
-tilesets: [Tileset_Id]Tileset_Resource = {
-<tileset-load>}
-
tiles: []Tile_Resource = {
<tiles-load>}
@@ -57,7 +52,6 @@ Resource_Id :: union {
Image_Id,
Animation_Id,
Room_Id,
- Tileset_Id,
}
path_to_resource_id: map[string]Resource_Id = {
@@ -69,7 +63,7 @@ animations: map[string]string
rooms: map[string]string
tiles: [dynamic]string
-tilesets: map[string]string
+loaded_tilesets: map[string]struct{}
world: [dynamic]string
@@ -311,21 +305,24 @@ main :: proc() {
content = create_enum(content, "<image-enum>", images)
content = create_enum(content, "<anim-enum>", animations)
content = create_enum(content, "<room-enum>", rooms)
- content = create_enum(content, "<tileset-enum>", tilesets)
content = create_loads(content, "images", "<image-load>", images)
content = create_loads(content, "animations", "<anim-load>", animations)
content = create_loads(content, "rooms", "<room-load>", rooms)
- content = create_loads(content, "tilesets", "<tileset-load>", tilesets)
tile_loads := ""
for tile, i in tiles {
- if i == 0 {
+ if i == 0 || tile == "" {
continue
}
+ buf: [4]u8
+ i_str := strconv.write_int(buf[:], i64(i), 10)
+
tile_loads = strings.concatenate({
tile_loads,
" ",
+ i_str,
+ " = ",
tile,
",\n",
}, allocator = context.temp_allocator)
diff --git a/tools/compile_assets/tiled.odin b/tools/compile_assets/tiled.odin
index a5b6bed..196cb49 100644
--- a/tools/compile_assets/tiled.odin
+++ b/tools/compile_assets/tiled.odin
@@ -5,6 +5,8 @@ import "core:fmt"
import "core:encoding/json"
import "core:path/filepath"
import "core:strings"
+import "core:math/bits"
+import "core:strconv"
Rect :: struct {
start: [2]f32,
@@ -70,7 +72,7 @@ Json_Layer :: struct {
Json_Object :: struct {
ellipse: bool,
- gid: i32,
+ gid: u32,
width: f64,
height: f64,
id: i32,
@@ -240,7 +242,35 @@ Gids :: struct {
last: u32,
}
-gids: map[string]Gids
+tileset_gids: map[string]Gids
+
+load_json_color :: proc(hex_str: string) -> [4]f32 {
+ if len(hex_str) == 0 {
+ return {0, 0, 0, 1}
+ }
+
+ hex, hex_ok := strconv.parse_u64(hex_str[1:], 16)
+ if !hex_ok {
+ return {0, 0, 0, 1}
+ }
+
+ a := u8((hex >> 24) & 0xFF)
+ r := u8((hex >> 16) & 0xFF)
+ g := u8((hex >> 8) & 0xFF)
+ b := u8(hex & 0xFF)
+
+ if len(hex_str[1:]) == 2*3 {
+ // If there wasn't an alpha channel included, assume max
+ a = bits.U8_MAX
+ }
+
+ return {
+ f32(r) / bits.U8_MAX,
+ f32(g) / bits.U8_MAX,
+ f32(b) / bits.U8_MAX,
+ f32(a) / bits.U8_MAX,
+ }
+}
load_json_world :: proc(path: string) {
json_text, read_err := os.read_entire_file(path, context.temp_allocator)
@@ -277,13 +307,13 @@ load_json_world :: proc(path: string) {
}
create_tile :: proc(
- tileset_enum: string,
+ image_enum: string,
rect: Rect,
collisions: []Rect,
) -> string {
line := fmt.aprintf(
- "{{tileset=.%v, rect=%w, id=%w, collisions=%w}}",
- tileset_enum,
+ "{{image=.%v, rect=%w, id=%w, collisions=%w}}",
+ image_enum,
rect,
len(tiles),
collisions,
@@ -292,7 +322,54 @@ create_tile :: proc(
return line
}
+load_json_imageset :: proc(path: string, json_dat: Json_Tileset) {
+ last_id: i32 = 0
+
+ for tile in json_dat.tiles {
+ image_enum := strings.to_ada_case(
+ filepath.stem(tile.image),
+ context.temp_allocator,
+ )
+
+ collisions := make([dynamic]Rect, context.temp_allocator)
+
+ for object in tile.objectgroup.objects {
+ append(
+ &collisions,
+ Rect{
+ start = {f32(object.x), f32(object.y)},
+ size = {f32(object.width), f32(object.height)}
+ },
+ )
+ }
+
+ // Fill in any gaps with dummy tiles
+ // TODO: Find a solution that doesn't involve filling my exe with zeroed
+ // data
+ for i in 1..<(tile.id - last_id) {
+ append(&tiles, "")
+ }
+
+ create_tile(
+ image_enum,
+ Rect{
+ start = {0, 0},
+ size = {f32(tile.imagewidth), f32(tile.imageheight)},
+ },
+ collisions[:],
+ )
+
+ last_id = tile.id
+ }
+}
+
load_json_tileset :: proc(path: string) {
+ if filepath.stem(path) in loaded_tilesets {
+ return
+ }
+
+ loaded_tilesets[filepath.stem(path)] = {}
+
json_text, read_err := os.read_entire_file(path, context.temp_allocator)
if read_err != nil {
die("Could not load tileset %v (%v)", path, read_err)
@@ -308,30 +385,29 @@ load_json_tileset :: proc(path: string) {
die("Failed to parse tileset %v (%v)", path, unmarshal_err)
}
- tileset_enum := strings.to_ada_case(
- filepath.stem(path),
- allocator = context.temp_allocator,
- )
-
- image_enum := strings.to_ada_case(
- filepath.stem(json_dat.image),
- allocator = context.temp_allocator,
- )
-
- tiles_x := json_dat.imagewidth / json_dat.tilewidth
- tiles_y := json_dat.imageheight / json_dat.tileheight
-
- local_tiles := make([dynamic]string, allocator = context.temp_allocator)
-
- tile_size: [2]f32 = {f32(json_dat.tilewidth), f32(json_dat.tileheight)}
-
first_gid := u32(len(tiles))
- gids[filepath.stem(path)] = {
+ tileset_gids[filepath.stem(path)] = {
first = first_gid,
last = u32(len(tiles) + int(json_dat.tilecount)),
}
+ // No image found; this is a image set
+ if json_dat.imagewidth == 0 &&
+ json_dat.imageheight == 0 &&
+ json_dat.image == "" {
+ load_json_imageset(path, json_dat)
+
+ gids := &tileset_gids[filepath.stem(path)]
+ gids.last = u32(len(tiles))
+ return
+ }
+
+ image_enum := strings.to_ada_case(
+ filepath.stem(json_dat.image),
+ allocator = context.temp_allocator,
+ )
+
collisions := make([][dynamic]Rect, json_dat.tilecount)
defer {
for collision in collisions {
@@ -353,26 +429,25 @@ load_json_tileset :: proc(path: string) {
}
}
+ tiles_x := json_dat.imagewidth / json_dat.tilewidth
+ tiles_y := json_dat.imageheight / json_dat.tileheight
+ tile_size := [2]f32{f32(json_dat.tilewidth), f32(json_dat.tileheight)}
+
for y in 0..<tiles_y {
for x in 0..<tiles_x {
- append(&local_tiles, create_tile(
- tileset_enum,
+ create_tile(
+ image_enum,
Rect{
start = {f32(x * json_dat.tilewidth), f32(y * json_dat.tileheight)},
size = tile_size,
},
collisions[y * tiles_x + x][:],
- ))
+ )
}
}
- gids := make([]u32, len(local_tiles), context.temp_allocator)
- for tile, i in local_tiles {
- gids[i] = first_gid + u32(i)
- }
-
- line := fmt.aprintf("{{tiles=%w, image=.%v}}", gids, image_enum)
- tilesets[filepath.stem(path)] = line
+ gids := &tileset_gids[filepath.stem(path)]
+ gids.last = u32(len(tiles))
}
load_json_room :: proc(path: string, file: ^os.File) {
@@ -396,6 +471,8 @@ load_json_room :: proc(path: string, file: ^os.File) {
tile_width := json_dat.tilewidth
tile_height := json_dat.tileheight
+
+ color := load_json_color(json_dat.backgroundcolor)
tiled_to_real_gid: map[i32]u32
defer delete(tiled_to_real_gid)
@@ -404,14 +481,14 @@ load_json_room :: proc(path: string, file: ^os.File) {
id: i32 = 1
for tileset in json_dat.tilesets {
tileset_name := filepath.stem(tileset.source)
- gid, exists := gids[tileset_name]
+ gid, exists := tileset_gids[tileset_name]
if !exists {
load_json_tileset(strings.concatenate({
filepath.dir(path, context.temp_allocator),
"/",
tileset.source,
}))
- gid = gids[tileset_name]
+ gid = tileset_gids[tileset_name]
}
for i in gid.first..<gid.last {
@@ -449,7 +526,8 @@ load_json_room :: proc(path: string, file: ^os.File) {
parallax := [2]f32{f32(layer.parallaxx), f32(layer.parallaxy)}
for obj in layer.objects {
- type_name := strings.to_ada_case(obj.type)
+ obj_type := obj.type if obj.type != "" else "prop"
+ type_name := strings.to_ada_case(obj_type)
// `object_type_names` now owns `type_name`; freed in main
if type_name in object_type_names {
@@ -491,9 +569,29 @@ load_json_room :: proc(path: string, file: ^os.File) {
properties[property.name] = value
}
+ tile_id: Maybe(u32) = nil
+ if obj.gid != 0 {
+ flip_flags := (obj.gid & 0x80000000) >> 28
+
+ if flip_flags & 0b1000 != 0 {
+ size.x *= -1
+ }
+ if flip_flags & 0b0100 != 0 {
+ size.y *= -1
+ }
+
+ tiled_id := (obj.gid << 4) >> 4
+
+ fmt.printfln("%032b %v %v %032b %x", obj.gid, obj.gid, tiled_id, flip_flags, flip_flags)
+
+ tile_id = tiled_to_real_gid[i32(tiled_id)]
+ // tile_id = u32(obj.gid)
+ }
+
line := fmt.tprintf(
- "{{type = .%v, pos = %w, size = %w, parallax = %w, properties = %w}}",
+ "{{type = .%v, tile_id = %v, pos = %w, size = %w, parallax = %w, properties = %w}}",
type_name,
+ tile_id,
pos,
size,
parallax,
@@ -518,13 +616,14 @@ load_json_room :: proc(path: string, file: ^os.File) {
}
line := fmt.aprintf(
- "{{width=%v, height=%v, tile_width=%v, tile_height=%v, layers=%w, objects={{%v}}, background_image=nil}}",
+ "{{width=%v, height=%v, tile_width=%v, tile_height=%v, layers=%w, objects={{%v}}, background_color=Color%w, background_images={{}} }}",
width,
height,
tile_width,
tile_height,
layers[:],
objects_arr_str,
+ color,
)
rooms[filepath.stem(path)] = line
}