aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-02-14 18:02:47 -0500
committeriamcheeseman <[hidden email]>2026-02-14 18:02:47 -0500
commit93c27830060788dea1c364465d29e44d05a3064e (patch)
tree4a8e1f6628026a4fb82c8a1c6084f2e35750cc28
parent1ff729f696c895f81f0cf0d1b8a2cca1d6e43eb8 (diff)
Only process keys that are bound to an action
-rw-r--r--.gitignore2
-rwxr-xr-xrun_release.sh2
-rw-r--r--src/assets.odin10
-rw-r--r--src/frame_callbacks.odin4
-rw-r--r--src/fw/fw.odin3
-rw-r--r--src/fw/input.odin50
-rw-r--r--src/fw/renderer.odin8
-rw-r--r--src/input.odin11
-rw-r--r--src/main.odin7
-rw-r--r--src/phys/body.odin1
-rw-r--r--src/phys/world.odin24
-rw-r--r--src/player.odin5
-rw-r--r--src/sprite.odin4
-rw-r--r--src/verlet.odin1
14 files changed, 87 insertions, 45 deletions
diff --git a/.gitignore b/.gitignore
index 2776b1f..07d3653 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
.compiled-res/
+*-ignore*
*.tiled-session
+*.bin
diff --git a/run_release.sh b/run_release.sh
index bad1ad2..9c730a3 100755
--- a/run_release.sh
+++ b/run_release.sh
@@ -1 +1 @@
-./run.sh "-debug -sanitize:address" "-debug -sanitize:address"
+./run.sh "-o:size"
diff --git a/src/assets.odin b/src/assets.odin
index 5183a91..1e96f0e 100644
--- a/src/assets.odin
+++ b/src/assets.odin
@@ -71,15 +71,15 @@ images: [Image_Id]Image_Resource = {
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 = {"jump_trans"={from = 16, to = 16}, "sleep"={from = 19, to = 22}, "run"={from = 6, to = 13}, "idle"={from = 0, to = 5}, "jump_up"={from = 14, to = 15}, "jump_down"={from = 17, to = 18}}},
+ .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 = {"run"={from = 6, to = 13}, "jump_down"={from = 17, to = 18}, "jump_up"={from = 14, to = 15}, "sleep"={from = 19, to = 22}, "idle"={from = 0, to = 5}, "jump_trans"={from = 16, to = 16}}},
}
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, 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 = {194, 200}, size = {26, 55}, 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 = 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 = .Rope, tile_id = nil, pos = {487, 185}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=2, "length"=6}}, {type = .Rope, tile_id = nil, pos = {217, 153}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/small_lamp.png", "node_length"=2}}, {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 = 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 = .Rope, tile_id = nil, pos = {139, 249}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/windchimes_1.png", "node_length"=2}}, {type = .Rope, tile_id = nil, pos = {183, 249}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=2, "length"=6}}, {type = .Rope, tile_id = nil, pos = {134, 48}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=7, "length"=15}}, {type = .Rope, tile_id = nil, pos = {232, 47}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=15, "image"="res/img/windchimes_0.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {70, 59}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=10, "length"=15, "image"="res/img/windchimes_1.png"}}, {type = .Rope, tile_id = nil, pos = {174, 32}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=10, "length"=15}}, {type = .Rope, tile_id = nil, pos = {269, 72}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=10, "length"=15}}, {type = .Rope, tile_id = nil, pos = {206, 30}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=8, "length"=15, "image"="res/img/windchimes_0.png"}}, {type = .Rope, tile_id = nil, pos = {115, 45}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=15, "image"="res/img/small_lamp.png"}}, {type = .Rope, tile_id = nil, pos = {91, 61}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=15, "image"="res/img/small_lamp.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {191, 31}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/small_lamp.png", "node_length"=5, "length"=15}}, {type = .Rope, tile_id = nil, pos = {286, 86}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=15, "image"="res/img/small_lamp.png"}}, {type = .Upgrade, tile_id = nil, pos = {160, 240}, size = {0, 0}, parallax = {0, 0}, properties = {"type"=0, "image"="res/img/dash_pickup.qoi"}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
+ .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 = {194, 200}, size = {26, 55}, 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 = 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 = .Rope, tile_id = nil, pos = {487, 185}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/windchimes_0.png", "node_length"=2}}, {type = .Rope, tile_id = nil, pos = {217, 153}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/small_lamp.png", "node_length"=2}}, {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 = 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 = .Rope, tile_id = nil, pos = {139, 249}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=2, "length"=6}}, {type = .Rope, tile_id = nil, pos = {183, 249}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=2, "length"=6, "image"="res/img/windchimes_1.png"}}, {type = .Rope, tile_id = nil, pos = {134, 48}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=7, "length"=15}}, {type = .Rope, tile_id = nil, pos = {232, 47}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=15, "image"="res/img/windchimes_0.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {70, 59}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=10, "length"=15}}, {type = .Rope, tile_id = nil, pos = {174, 32}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=10, "length"=15}}, {type = .Rope, tile_id = nil, pos = {269, 72}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=15, "image"="res/img/windchimes_1.png", "node_length"=10}}, {type = .Rope, tile_id = nil, pos = {206, 30}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=8, "length"=15}}, {type = .Rope, tile_id = nil, pos = {115, 45}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=15, "image"="res/img/small_lamp.png"}}, {type = .Rope, tile_id = nil, pos = {91, 61}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/small_lamp.png", "node_length"=5, "length"=15}}, {type = .Rope, tile_id = nil, pos = {191, 31}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=15, "image"="res/img/small_lamp.png"}}, {type = .Rope, tile_id = nil, pos = {286, 86}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/small_lamp.png", "node_length"=5, "length"=15}}, {type = .Upgrade, tile_id = nil, pos = {160, 240}, size = {0, 0}, parallax = {0, 0}, properties = {"type"=0, "image"="res/img/dash_pickup.qoi"}}, }, 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 = {36, 152}, size = {26, 55}, 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 = {}}, {type = .Rope, tile_id = nil, pos = {58, 105}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/windchimes_1.png", "node_length"=2}}, }, 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={{type = .Prop, tile_id = 49, pos = {132, 616}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {32, 488}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {204, 328}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {260, 168}, size = {-32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {228, 184}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {108, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {160, 200}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {108, 264}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {168, 280}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {284, 376}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {216, 376}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {184, 376}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {140, 392}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {232, 376}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {156, 392}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 46, pos = {128, 200}, size = {29, 14}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {44, 248}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {252, 504}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {284, 504}, size = {-32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {236, 504}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {24, 472}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {84, 348}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {176, 252}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {280, 236}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {236, 264}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {28, 144}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {132, 56}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {84, 72}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {224, 68}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {252, 88}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {156, 60}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {132, 80}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {108, 364}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {100, 380}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {36, 356}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {92, 356}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {180, 476}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {72, 552}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {36, 576}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {48, 548}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {56, 556}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {68, 552}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {88, 540}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {132, 540}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {108, 556}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {208, 460}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {136, 344}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {56, 344}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {20, 332}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {204, 364}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {188, 248}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {148, 232}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {136, 228}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {120, 44}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {144, 60}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {168, 52}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {180, 44}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {52, 76}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Rope, tile_id = nil, pos = {104, 520}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/small_lamp.png", "node_length"=5, "length"=6}}, {type = .Rope, tile_id = nil, pos = {200, 440}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/small_lamp.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {108, 40}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=9, "image"="res/img/windchimes_1.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {176, 24}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=15, "image"="res/img/windchimes_0.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {244, 40}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=5, "length"=8}}, {type = .Rope, tile_id = nil, pos = {68, 48}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=6, "image"="res/img/windchimes_0.png"}}, {type = .Rope, tile_id = nil, pos = {144, 24}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=12, "image"="res/img/windchimes_0.png"}}, }, 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 = .Prop, tile_id = 45, pos = {52, 184}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {68, 172}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {156, 160}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {192, 167}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {264, 184}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {200, 188}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {228, 196}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {108, 168}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {60, 176}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {124, 152}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {88, 156}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {164, 160}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {208, 184}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {220, 188}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {240, 184}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {252, 172}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 46, pos = {148, 280}, size = {29, 14}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {244, 280}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {28, 296}, size = {-32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {280, 268}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {208, 280}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {80, 296}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {112, 296}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 53, pos = {184, 280}, size = {-26, 55}, parallax = {0, 0}, properties = {}}, {type = .Rope, tile_id = nil, pos = {84, 136}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=10, "image"="res/img/windchimes_0.png"}}, {type = .Rope, tile_id = nil, pos = {151, 120}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=10, "image"="res/img/windchimes_0.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {113, 133}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=5, "length"=6}}, {type = .Rope, tile_id = nil, pos = {201, 136}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/windchimes_0.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {233, 144}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=12, "image"="res/img/windchimes_1.png"}}, {type = .Rope, tile_id = nil, pos = {188, 233}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/windchimes_0.png", "node_length"=2}}, {type = .Prop, tile_id = 52, pos = {228, 280}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {64, 296}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {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={} },
+ .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={{type = .Prop, tile_id = 49, pos = {132, 616}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {32, 488}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {204, 328}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {260, 168}, size = {-32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {228, 184}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {108, 200}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {160, 200}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {108, 264}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {168, 280}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {284, 376}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {216, 376}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {184, 376}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {140, 392}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {232, 376}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {156, 392}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 46, pos = {128, 200}, size = {29, 14}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {44, 248}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {252, 504}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {284, 504}, size = {-32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {236, 504}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {24, 472}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {84, 348}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {176, 252}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {280, 236}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {236, 264}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {28, 144}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {132, 56}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {84, 72}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {224, 68}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {252, 88}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {156, 60}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {132, 80}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {108, 364}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {100, 380}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {36, 356}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {92, 356}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {180, 476}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {72, 552}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {36, 576}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {48, 548}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {56, 556}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {68, 552}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {88, 540}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {132, 540}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {108, 556}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {208, 460}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {136, 344}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {56, 344}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {20, 332}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {204, 364}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {188, 248}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {148, 232}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {136, 228}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {120, 44}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {144, 60}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {168, 52}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {180, 44}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {52, 76}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Rope, tile_id = nil, pos = {104, 520}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/small_lamp.png", "node_length"=5, "length"=6}}, {type = .Rope, tile_id = nil, pos = {200, 440}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=6, "image"="res/img/small_lamp.png"}}, {type = .Rope, tile_id = nil, pos = {108, 40}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=5, "length"=9}}, {type = .Rope, tile_id = nil, pos = {176, 24}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=5, "length"=15}}, {type = .Rope, tile_id = nil, pos = {244, 40}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=8, "image"="res/img/windchimes_1.png"}}, {type = .Rope, tile_id = nil, pos = {68, 48}, size = {0, 0}, parallax = {0, 0}, properties = {"length"=6, "image"="res/img/windchimes_0.png", "node_length"=5}}, {type = .Rope, tile_id = nil, pos = {144, 24}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=5, "length"=12}}, }, 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 = .Prop, tile_id = 45, pos = {52, 184}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {68, 172}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {156, 160}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {192, 167}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {264, 184}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {200, 188}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {228, 196}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 45, pos = {108, 168}, size = {14, 38}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {60, 176}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {124, 152}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {88, 156}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {164, 160}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {208, 184}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {220, 188}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {240, 184}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 47, pos = {252, 172}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 46, pos = {148, 280}, size = {29, 14}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {244, 280}, size = {32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 49, pos = {28, 296}, size = {-32, 19}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {280, 268}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {208, 280}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {80, 296}, size = {16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 51, pos = {112, 296}, size = {-16, 18}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 53, pos = {184, 280}, size = {-26, 55}, parallax = {0, 0}, properties = {}}, {type = .Rope, tile_id = nil, pos = {84, 136}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=5, "length"=10}}, {type = .Rope, tile_id = nil, pos = {151, 120}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=10, "image"="res/img/windchimes_0.png"}}, {type = .Rope, tile_id = nil, pos = {113, 133}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=5, "length"=6}}, {type = .Rope, tile_id = nil, pos = {201, 136}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=5, "length"=6}}, {type = .Rope, tile_id = nil, pos = {233, 144}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_1.png", "node_length"=5, "length"=12}}, {type = .Rope, tile_id = nil, pos = {188, 233}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=2, "length"=6}}, {type = .Prop, tile_id = 52, pos = {228, 280}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 52, pos = {64, 296}, size = {14, 22}, parallax = {0, 0}, properties = {}}, {type = .Upgrade, tile_id = nil, pos = {160, 241}, size = {0, 0}, parallax = {0, 0}, properties = {"type"=1, "image"="res/img/double_jump_pickup.qoi"}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
}
tiles: []Tile_Resource = {
diff --git a/src/frame_callbacks.odin b/src/frame_callbacks.odin
index 648be94..0a02b22 100644
--- a/src/frame_callbacks.odin
+++ b/src/frame_callbacks.odin
@@ -22,3 +22,7 @@ draw_callbacks := []Draw_Callback{
draw_bullets,
draw_upgrade,
}
+
+fg_draw_callbacks := []Draw_Callback{
+ draw_player_fg, // PLAYER HERE
+}
diff --git a/src/fw/fw.odin b/src/fw/fw.odin
index 556817b..9ab1918 100644
--- a/src/fw/fw.odin
+++ b/src/fw/fw.odin
@@ -28,6 +28,7 @@ Config :: struct {
@(private) last_frame: f64
@(private) dt: f64
+@(require_results)
rgba8 :: proc(r: u8, g: u8, b: u8, a: u8 = 255) -> Color {
return Color{
f32(r) / 255,
@@ -71,6 +72,7 @@ deinit :: proc() {
glfw.Terminate()
}
+@(require_results)
next_frame :: proc() -> bool {
// End the previous frame
if can_flush() {
@@ -90,7 +92,6 @@ next_frame :: proc() -> bool {
glfw.SwapBuffers(window)
glfw.PollEvents()
- _update_input()
// log.debugf("Draw calls: %v", renderer.draw_calls_count)
diff --git a/src/fw/input.odin b/src/fw/input.odin
index 2c15017..3c1236f 100644
--- a/src/fw/input.odin
+++ b/src/fw/input.odin
@@ -1,6 +1,8 @@
package fw
import "core:c"
+import "core:log"
+
import "vendor:glfw"
Keyboard_Input :: union {
@@ -13,57 +15,43 @@ Controller_Input :: union {
Keybind :: struct {
input: Keyboard_Input,
- pressed: bool,
+ was_pressed: bool,
just_pressed: bool,
}
-key_down_last_frame: #sparse [Key]bool
-key_just_down: #sparse [Key]bool
-
-mouse_down_last_frame: #sparse [Mouse_Button]bool
-mouse_just_down: #sparse [Mouse_Button]bool
-
-@(private)
-_update_input :: proc() {
- for key in Key {
- status := glfw.GetKey(window, c.int(key))
- key_pressed := status == glfw.PRESS
- key_just_down[key] = key_pressed && !key_down_last_frame[key]
+update_keybind :: proc(keybind: ^Keybind) {
+ pressed: bool
- key_down_last_frame[key] = key_pressed
+ switch val in keybind.input {
+ case Key:
+ pressed = glfw.GetKey(window, c.int(val)) == glfw.PRESS
+ case Mouse_Button:
+ pressed = glfw.GetMouseButton(window, c.int(val)) == glfw.PRESS
}
- for mb in Mouse_Button {
- status := glfw.GetMouseButton(window, c.int(mb))
- mouse_pressed := status == glfw.PRESS
- mouse_just_down[mb] = mouse_pressed && !mouse_down_last_frame[mb]
-
- mouse_down_last_frame[mb] = mouse_pressed
- }
+ keybind.just_pressed = !keybind.was_pressed && pressed
+ keybind.was_pressed = pressed
}
+@(require_results)
is_keybind_down :: proc(keybind: Keybind) -> bool {
switch val in keybind.input {
case Key:
return glfw.GetKey(window, c.int(val)) == glfw.PRESS
case Mouse_Button:
return glfw.GetMouseButton(window, c.int(val)) == glfw.PRESS
+ case:
+ log.warn("Keybind input is invalid")
+ return false
}
-
- assert(false)
- return false
}
+@(require_results)
is_keybind_just_down :: proc(keybind: Keybind) -> bool {
- switch val in keybind.input {
- case Key: return key_just_down[val]
- case Mouse_Button: return mouse_just_down[val]
- }
-
- assert(false)
- return false
+ return keybind.just_pressed
}
+@(require_results)
get_mouse_pos :: proc() -> (mouse_pos: Vec2) {
w_width, w_height := glfw.GetWindowSize(window)
mx, my := glfw.GetCursorPos(window)
diff --git a/src/fw/renderer.odin b/src/fw/renderer.odin
index 7653938..75d2c38 100644
--- a/src/fw/renderer.odin
+++ b/src/fw/renderer.odin
@@ -13,6 +13,8 @@ RED :: Color{1, 0, 0, 1}
GREEN :: Color{0, 1, 0, 1}
BLUE :: Color{0, 0, 1, 1}
+Image :: image.Image
+
Index :: u16
Renderer_Backend :: enum {
@@ -130,6 +132,7 @@ set_camera_pos :: proc(pos: Vec2) {
renderer.view = linalg.matrix4_translate(-Vec3{pos.x, pos.y, 0})
}
+@(require_results)
get_camera_pos :: #force_inline proc() -> Vec2 {
return renderer.camera_pos
}
@@ -164,6 +167,7 @@ _add_index :: #force_inline proc(i: u16, start: Index) {
append(&renderer.draw_call.indices, start + i)
}
+@(require_results)
can_flush :: proc() -> bool {
return renderer.draw_call.vertex_mode != .None &&
len(renderer.draw_call.vertices) != 0 &&
@@ -190,7 +194,8 @@ try_batch_calls :: proc(
}
}
-create_texture_from_image :: #force_inline proc(img: ^image.Image) -> Texture {
+@(require_results)
+create_texture_from_image :: #force_inline proc(img: ^Image) -> Texture {
return create_texture(
img.pixels.buf[:],
{i32(img.width), i32(img.height)},
@@ -198,6 +203,7 @@ create_texture_from_image :: #force_inline proc(img: ^image.Image) -> Texture {
)
}
+@(require_results)
create_texture :: proc(data: []u8, size: Vec2i, channels: i32) -> Texture {
texture := Texture{
size = size,
diff --git a/src/input.odin b/src/input.odin
index ee90fcd..ba773a3 100644
--- a/src/input.odin
+++ b/src/input.odin
@@ -23,3 +23,14 @@ init_keybinds :: proc() {
actions.toggle_fullscreen.input = .F11
actions.exit.input = .Escape
}
+
+update_keybinds :: proc() {
+ fw.update_keybind(&actions.move_left)
+ fw.update_keybind(&actions.move_right)
+ fw.update_keybind(&actions.jump)
+ fw.update_keybind(&actions.dash)
+ fw.update_keybind(&actions.shoot)
+ fw.update_keybind(&actions.toggle_debug_mode)
+ fw.update_keybind(&actions.toggle_fullscreen)
+ fw.update_keybind(&actions.exit)
+}
diff --git a/src/main.odin b/src/main.odin
index 4993d3c..9bc047e 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -51,6 +51,8 @@ init :: proc() {
}
frame :: proc() {
+ update_keybinds()
+
if fw.is_keybind_just_down(actions.toggle_debug_mode) {
state.debug_mode = !state.debug_mode
}
@@ -88,10 +90,13 @@ frame :: proc() {
)
- draw_room(current_room.id)
for cb in draw_callbacks {
cb()
}
+ draw_room(current_room.id)
+ for cb in fg_draw_callbacks {
+ cb()
+ }
fw.draw_rect_gradient(
{0, 0},
diff --git a/src/phys/body.odin b/src/phys/body.odin
index 4793e42..ed8f6b5 100644
--- a/src/phys/body.odin
+++ b/src/phys/body.odin
@@ -49,6 +49,7 @@ Body :: struct {
mask: Layer_Set,
}
+@(require_results)
make_body :: proc(
rect: Rect,
layers := Layer_Set{.Hard},
diff --git a/src/phys/world.odin b/src/phys/world.odin
index b760f51..4a10590 100644
--- a/src/phys/world.odin
+++ b/src/phys/world.odin
@@ -107,6 +107,7 @@ _get_body :: proc(h: Body_Handle, location := #caller_location) -> ^Body {
return &world.bodies[h.idx]
}
+@(require_results)
iterate_bodies :: proc(it: ^int) -> (Body_Handle, bool) {
for it^ < len(world.bodies) {
if world.bodies[it^].handle.uses > 0 {
@@ -157,11 +158,29 @@ remove_body :: proc(h: Body_Handle) {
world.bodies[h.idx] = {}
}
+is_colliding :: proc{
+ is_body_colliding,
+ is_raycast_colliding,
+}
+
+@(require_results)
+is_raycast_colliding :: proc(rc: Raycast) -> bool {
+ // TODO: TEMP
+ return len(get_colliding_bodies(rc, allocator = context.temp_allocator)) > 0
+}
+
+@(require_results)
+is_body_colliding :: proc(h: Body_Handle) -> bool {
+ // TODO: TEMP
+ return len(get_colliding_bodies(h, allocator = context.temp_allocator)) > 0
+}
+
get_colliding_bodies :: proc{
get_colliding_bodies_body_vs_body,
get_colliding_bodies_raycast_vs_body,
}
+@(require_results)
get_colliding_bodies_raycast_vs_body :: proc(
rc: Raycast,
allocator := context.allocator
@@ -190,6 +209,7 @@ get_colliding_bodies_raycast_vs_body :: proc(
return bodies[:]
}
+@(require_results)
get_colliding_bodies_body_vs_body :: proc(
h: Body_Handle,
allocator := context.allocator
@@ -304,6 +324,7 @@ update_body :: proc(h: Body_Handle) {
set_position(h, res_pos)
}
+@(require_results)
get_velocity :: proc(h: Body_Handle) -> Vec2 {
return _get_body(h).vel
}
@@ -312,6 +333,7 @@ set_velocity :: proc(h: Body_Handle, vel: Vec2) {
_get_body(h).vel = vel
}
+@(require_results)
get_position :: proc(h: Body_Handle) -> Vec2 {
return _get_body(h).pos
}
@@ -331,10 +353,12 @@ set_position :: proc(h: Body_Handle, new_pos: Vec2) {
}
}
+@(require_results)
get_collisions :: proc(h: Body_Handle) -> bit_set[Collision_Type;u8] {
return _get_body(h).collisions
}
+@(require_results)
get_rect :: proc(h: Body_Handle) -> Rect {
return _get_body(h).rect
}
diff --git a/src/player.odin b/src/player.odin
index 135bcf6..2f82e2f 100644
--- a/src/player.odin
+++ b/src/player.odin
@@ -123,8 +123,7 @@ _default_state :: proc(dt: f32) {
rel_mouse_pos := fw.get_mouse_pos() - pos
- // if fw.is_keybind_just_down(actions.shoot) {
- if fw.is_keybind_down(actions.shoot) {
+ if fw.is_keybind_just_down(actions.shoot) {
mouse_dir := linalg.normalize0(rel_mouse_pos + {0, PLAYER_GUN_HEIGHT})
bullet_pos := pos
@@ -309,7 +308,9 @@ draw_player :: proc() {
if player.state != .Dash {
draw_sprite(player.gun.sprite)
}
+}
+draw_player_fg :: proc() {
rc_start := phys.get_position(player.body)
dir := Vec2{math.cos(player.gun.sprite.rotation), math.sin(player.gun.sprite.rotation)}
bodies := phys.get_colliding_bodies(phys.make_raycast(rc_start, dir), allocator = context.temp_allocator)
diff --git a/src/sprite.odin b/src/sprite.odin
index 4d82813..da236e7 100644
--- a/src/sprite.odin
+++ b/src/sprite.odin
@@ -24,7 +24,7 @@ init_sprite :: proc(
sprite: ^Sprite,
image_id: Image_Id,
anim_id: Maybe(Animation_Id) = nil,
-) -> bool {
+) {
sprite.image = get_image(image_id)
switch id in anim_id {
@@ -40,8 +40,6 @@ init_sprite :: proc(
sprite.height = i32(sprite.image.size.y)
sprite.scale = Vec2{1, 1}
-
- return true
}
set_sprite_active_tag :: proc(sprite: ^Sprite, tag_name: string) {
diff --git a/src/verlet.odin b/src/verlet.odin
index 0336bef..da88d42 100644
--- a/src/verlet.odin
+++ b/src/verlet.odin
@@ -21,6 +21,7 @@ Verlet_Rope :: struct {
node_length: f32,
}
+@(require_results)
create_verlet_node :: proc(pos: Vec2, is_static := false) -> Verlet_Node {
return Verlet_Node{
pos = pos,