aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-01-17 20:43:31 -0500
committeriamcheeseman <[hidden email]>2026-01-17 20:43:31 -0500
commitdbe4c645e08fccb89f7bc1988f7be5c2ea246b31 (patch)
tree9aed80632dacab389d5e1887b289d1834c184cc7
parenta48cdcab8a483ac9c8524cc7fd1613f0d90cf4d4 (diff)
player now only applies a force to verlet
-rw-r--r--res/rooms/carrabassett0.tmj19
-rw-r--r--res/rooms/carrabassett1.tmj2
-rw-r--r--src/assets.odin6
-rw-r--r--src/phys/body.odin12
-rw-r--r--src/phys/world.odin35
-rw-r--r--src/rope.odin16
-rw-r--r--src/verlet.odin5
7 files changed, 66 insertions, 29 deletions
diff --git a/res/rooms/carrabassett0.tmj b/res/rooms/carrabassett0.tmj
index 7ce26aa..6230402 100644
--- a/res/rooms/carrabassett0.tmj
+++ b/res/rooms/carrabassett0.tmj
@@ -613,6 +613,23 @@
"template":"..\/templates\/rope.tj",
"x":217,
"y":153
+ },
+ {
+ "id":91,
+ "properties":[
+ {
+ "name":"length",
+ "type":"int",
+ "value":20
+ },
+ {
+ "name":"node_length",
+ "type":"int",
+ "value":5
+ }],
+ "template":"..\/templates\/rope.tj",
+ "x":515,
+ "y":110
}],
"opacity":1,
"type":"objectgroup",
@@ -686,7 +703,7 @@
"y":0
}],
"nextlayerid":6,
- "nextobjectid":91,
+ "nextobjectid":92,
"orientation":"orthogonal",
"renderorder":"right-down",
"tiledversion":"1.11.2",
diff --git a/res/rooms/carrabassett1.tmj b/res/rooms/carrabassett1.tmj
index 5812f39..8b22682 100644
--- a/res/rooms/carrabassett1.tmj
+++ b/res/rooms/carrabassett1.tmj
@@ -577,7 +577,7 @@
{
"name":"length",
"type":"int",
- "value":15
+ "value":30
},
{
"name":"node_length",
diff --git a/src/assets.odin b/src/assets.odin
index d7dac49..f147d57 100644
--- a/src/assets.odin
+++ b/src/assets.odin
@@ -71,12 +71,12 @@ 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_down"={from = 17, to = 18}, "idle"={from = 0, to = 5}, "sleep"={from = 19, to = 22}, "jump_up"={from = 14, to = 15}, "run"={from = 6, to = 13}, "jump_trans"={from = 16, to = 16}}},
+ .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, 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 = {"node_length"=2, "length"=6, "image"="res/img/windchimes_0.png"}}, {type = .Rope, tile_id = nil, pos = {217, 153}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/small_lamp.png", "node_length"=2, "length"=6}}, {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 = {"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 = {"length"=15, "image"="res/img/windchimes_0.png", "node_length"=7}}, {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 = {"node_length"=10, "length"=15, "image"="res/img/windchimes_1.png"}}, {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 = {"image"="res/img/small_lamp.png", "node_length"=5, "length"=15}}, {type = .Rope, tile_id = nil, pos = {91, 61}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=15, "image"="res/img/small_lamp.png"}}, {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 = {"length"=15, "image"="res/img/small_lamp.png", "node_length"=5}}, {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={} },
+ .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 = .Rope, tile_id = nil, pos = {515, 110}, size = {0, 0}, parallax = {0, 0}, properties = {"image"="res/img/windchimes_0.png", "node_length"=5, "length"=20}}, {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 = {"length"=6, "image"="res/img/windchimes_1.png", "node_length"=2}}, {type = .Rope, tile_id = nil, pos = {134, 48}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=7, "length"=15, "image"="res/img/windchimes_0.png"}}, {type = .Rope, tile_id = nil, pos = {232, 47}, size = {0, 0}, parallax = {0, 0}, properties = {"node_length"=5, "length"=15, "image"="res/img/windchimes_0.png"}}, {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 = {"length"=15, "image"="res/img/windchimes_0.png", "node_length"=8}}, {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 = {"node_length"=5, "length"=15, "image"="res/img/small_lamp.png"}}, {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 = {"length"=30, "image"="res/img/small_lamp.png", "node_length"=5}}, {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 = {36, 152}, size = {26, 55}, parallax = {0, 0}, properties = {}}, {type = .Prop, tile_id = 56, pos = {54, 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 = {"type"=1, "image"="res/img/double_jump_pickup.qoi"}}, }, background_color=Color{0, 0, 0, 1}, background_images={} },
diff --git a/src/phys/body.odin b/src/phys/body.odin
index 6734b2b..5a7838f 100644
--- a/src/phys/body.odin
+++ b/src/phys/body.odin
@@ -63,3 +63,15 @@ aabb_vert :: proc(a: Rect, b: Rect) -> bool {
aabb :: proc(a: Rect, b: Rect) -> bool {
return aabb_hori(a, b) && aabb_vert(a, b)
}
+
+point_aabb_hori :: proc(r: Rect, p: Vec2) -> bool {
+ return r.start.x < p.x && r.start.x + r.size.x > p.x
+}
+
+point_aabb_vert :: proc(r: Rect, p: Vec2) -> bool {
+ return r.start.y < p.y && r.start.y + r.size.y > p.y
+}
+
+point_aabb :: proc(r: Rect, p: Vec2) -> bool {
+ return point_aabb_hori(r, p) && point_aabb_vert(r, p)
+}
diff --git a/src/phys/world.odin b/src/phys/world.odin
index 0f1451c..70309b5 100644
--- a/src/phys/world.odin
+++ b/src/phys/world.odin
@@ -40,8 +40,7 @@ _world_to_bin :: proc(point: Vec2) -> (i32, i32) {
i32(math.floor(point.y / BIN_SIZE))
}
-@(private = "file")
-_get_surrounding_bins :: proc(
+get_surrounding_bins :: proc(
pos: Vec2,
allocator := context.temp_allocator,
) -> []^[dynamic]Body_Handle {
@@ -169,7 +168,7 @@ get_colliding_bodies :: proc(
rect := b.rect
rect.start += b.pos
- bin_list := _get_surrounding_bins(rect.start)
+ bin_list := get_surrounding_bins(rect.start)
for bin in bin_list {
for c_h in bin {
@@ -212,7 +211,7 @@ update_body :: proc(h: Body_Handle) {
res_rect := b.rect
res_rect.start += b.pos + b.vel * dt * p
- bin_list := _get_surrounding_bins(res_rect.start)
+ bin_list := get_surrounding_bins(res_rect.start)
for bin in bin_list {
for c_h in bin {
@@ -234,20 +233,20 @@ update_body :: proc(h: Body_Handle) {
if b.vel.y > 0 {
res_pos.y = c_rect.start.y - b.rect.size.y - b.rect.start.y
b.collisions += {.Down}
- } else {
- res_pos.y = c_rect.start.y + c_rect.size.y - b.rect.start.y
- b.collisions += {.Up}
- }
- b.collisions += {.Vertical}
- } else if aabb_vert(rect, c.rect) {
- if b.vel.x > 0 {
- res_pos.x = c_rect.start.x - b.rect.size.x - b.rect.start.x
- b.collisions += {.Left}
- } else {
- res_pos.x = c_rect.start.x + c_rect.size.x - b.rect.start.x
- b.collisions += {.Right}
- }
- b.collisions += {.Horizontal}
+ } else {
+ res_pos.y = c_rect.start.y + c_rect.size.y - b.rect.start.y
+ b.collisions += {.Up}
+ }
+ b.collisions += {.Vertical}
+ } else if aabb_vert(rect, c.rect) {
+ if b.vel.x > 0 {
+ res_pos.x = c_rect.start.x - b.rect.size.x - b.rect.start.x
+ b.collisions += {.Left}
+ } else {
+ res_pos.x = c_rect.start.x + c_rect.size.x - b.rect.start.x
+ b.collisions += {.Right}
+ }
+ b.collisions += {.Horizontal}
}
}
}
diff --git a/src/rope.odin b/src/rope.odin
index c6ade8d..f779c4e 100644
--- a/src/rope.odin
+++ b/src/rope.odin
@@ -71,11 +71,19 @@ object_spawner_rope :: proc(obj: Object_Resource) {
)
}
+
+ verlet := Verlet_Rope{
+ nodes = nodes,
+ node_length = f32(node_length),
+ }
+
+ // Simulate a few steps to get rid of some silliness
+ for _ in 0..<60 {
+ update_verlet_rope(&verlet)
+ }
+
make_entity(&state.rope_list, Rope{
hanging_id = image_id,
- verlet = Verlet_Rope{
- nodes = nodes,
- node_length = f32(node_length),
- },
+ verlet = verlet,
})
}
diff --git a/src/verlet.odin b/src/verlet.odin
index 239e1b6..7373630 100644
--- a/src/verlet.odin
+++ b/src/verlet.odin
@@ -7,7 +7,7 @@ import rl "vendor:raylib"
import "phys"
-VERLET_STEPS :: 50
+VERLET_STEPS :: 8
VERLET_MIN_DIST_TO_PLAYER :: 8
Verlet_Node :: struct {
@@ -43,7 +43,8 @@ update_verlet_node :: proc(node: ^Verlet_Node) {
player_dist := linalg.distance(node.pos, player_pos)
if player_dist < VERLET_MIN_DIST_TO_PLAYER {
dir := linalg.normalize(node.pos - player_pos)
- node.pos = player_pos + dir * VERLET_MIN_DIST_TO_PLAYER
+ node.accel += dir * 1000
+ // node.pos = player_pos + dir * VERLET_MIN_DIST_TO_PLAYER
}
prev_pos := node.pos