@@ -32,18 +32,16 @@ Levels = {
3232-- 1
3333-- 2
3434-- 3
35- class Barrier
35+ class Barrier extends Box
3636 watch_class @
3737
3838 w : 300
3939 h : 150
4040
4141 row_dist : 130
42+ has_collided : false
4243
4344 new : ( @row ) =>
44- @position !
45-
46- position : =>
4745 h = g. getHeight!
4846 @y = h * (( Ground . width * 0.6 ) + ( 1 - Ground . width))
4947
@@ -55,12 +53,11 @@ class Barrier
5553 @y += @row_dist
5654 @h = @@h + 50
5755
58- draw_origin : =>
59- @x - @w / 2 , @y - @h
56+ @y -= @h
6057
6158 draw_shadow : =>
6259 g. push!
63- g. translate @draw_origin !
60+ g. translate @x , @y
6461
6562 sw = 40
6663 sh = 30
@@ -76,7 +73,7 @@ class Barrier
7673
7774 g. push!
7875
79- g. translate @draw_origin !
76+ g. translate @x , @y
8077
8178 g. setColor 50 , 50 , 50
8279 g. rectangle " fill" , ox, oy, @w , @h
@@ -86,6 +83,9 @@ class Barrier
8683
8784 g. pop!
8885
86+ g. setColor 255 , 255 , 255 , 128
87+ @outline !
88+
8989 update : ( dt, world) =>
9090 b = world. box
9191 grow = 1.5 + @row / 4
@@ -96,7 +96,9 @@ class Barrier
9696 left = cx - hw * grow
9797 right = cx + hw * grow
9898 @progress = world\ block_progress!
99- @x = ( 1 - @progress ) * ( right - left) + left
99+
100+ x = ( 1 - @progress ) * ( right - left) + left
101+ @x = x - @w / 2
100102
101103class World
102104 watch_class @
@@ -174,6 +176,8 @@ class World
174176
175177 setup_block : ( bid) =>
176178 @active_block = @level [ bid]
179+ for i= 1 , 3
180+ @barriers [ i] . has_collided = false
177181
178182 update : ( dt) =>
179183 @traversed += dt * @speed
@@ -206,4 +210,11 @@ class World
206210 for thing in * @collide \ get_touching @player . box
207211 @player \ take_hit thing, @
208212
213+ -- barriers colliding
214+ row = @platform \ row!
215+ if @active_block [ row]
216+ b = @barriers [ row]
217+ if not b. has_collided and b\ touches_box @platform . hitbox
218+ @platform \ take_hit b, @
219+ b. has_collided = true
209220
0 commit comments