Skip to content

Commit 6f57816

Browse files
committed
examples: add subtle light and shadow effects to give a little depth
examples, breakout: add subtle light and shadow effects for feeling of depth
1 parent e66e996 commit 6f57816

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

examples/breakout/breakout.v

+36-7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ const designed_width = 600
1010
const designed_height = 800
1111
const brick_width = 53
1212
const brick_height = 20
13+
const bevel_size = int(brick_height * 0.18)
14+
const highlight_color = gx.rgba(255, 255, 255, 65)
15+
const shade_color = gx.rgba(0, 0, 0, 65)
1316

1417
struct Brick {
1518
mut:
@@ -127,15 +130,11 @@ fn (mut g Game) draw() {
127130
sgl.scale(f32(ws.width) / f32(designed_width), f32(ws.height) / f32(designed_height),
128131
0)
129132

130-
roffset, rradius := -5, 18
131-
g.ctx.draw_circle_filled(g.paddle_x - roffset, g.height, rradius, gx.blue)
132-
g.ctx.draw_circle_filled(g.paddle_x + g.paddle_w + roffset, g.height, rradius, gx.blue)
133-
g.ctx.draw_rect_filled(g.paddle_x, g.height - g.paddle_h + 2, g.paddle_w, g.paddle_h,
134-
gx.blue)
135-
g.ctx.draw_circle_filled(g.ball_x, g.ball_y, g.ball_r, gx.red)
133+
g.draw_paddle()
134+
g.draw_ball()
136135
for brick in g.bricks {
137136
if brick.alive {
138-
g.ctx.draw_rect_filled(brick.x, brick.y, brick.w, brick.h, brick.c)
137+
g.draw_brick(brick)
139138
}
140139
}
141140
label1 := 'Level: ${g.nlevels:02} Points: ${g.npoints:06}'
@@ -147,6 +146,36 @@ fn (mut g Game) draw() {
147146
g.ctx.end()
148147
}
149148

149+
fn (g &Game) draw_ball() {
150+
g.ctx.draw_circle_filled(g.ball_x, g.ball_y, g.ball_r, gx.red)
151+
mut ball_r_less := g.ball_r
152+
for _ in 0 .. 3 {
153+
ball_r_less *= 0.8
154+
g.ctx.draw_circle_filled(g.ball_x - g.ball_r + ball_r_less, g.ball_y - g.ball_r +
155+
ball_r_less, ball_r_less, highlight_color)
156+
}
157+
}
158+
159+
fn (g &Game) draw_paddle() {
160+
roffset, rradius := -5, 18
161+
g.ctx.draw_circle_filled(g.paddle_x - roffset, g.height, rradius, gx.blue)
162+
g.ctx.draw_circle_filled(g.paddle_x + g.paddle_w + roffset, g.height, rradius, gx.blue)
163+
g.ctx.draw_rect_filled(g.paddle_x, g.height - g.paddle_h + 2, g.paddle_w, g.paddle_h,
164+
gx.blue)
165+
g.ctx.draw_rect_filled(g.paddle_x, g.height - g.paddle_h + 2, g.paddle_w, bevel_size,
166+
highlight_color)
167+
}
168+
169+
fn (g &Game) draw_brick(brick Brick) {
170+
g.ctx.draw_rect_filled(brick.x, brick.y, brick.w, brick.h, brick.c)
171+
g.ctx.draw_rect_filled(brick.x, brick.y, brick.w, bevel_size, highlight_color)
172+
g.ctx.draw_rect_filled(brick.x, brick.y, bevel_size, brick.h - bevel_size, highlight_color)
173+
g.ctx.draw_rect_filled(brick.x + brick.w - bevel_size, brick.y, bevel_size, brick.h - bevel_size,
174+
shade_color)
175+
g.ctx.draw_rect_filled(brick.x, brick.y + brick.h - bevel_size, brick.w, bevel_size,
176+
shade_color)
177+
}
178+
150179
fn (mut g Game) game_over() {
151180
g.init_bricks()
152181
g.npoints, g.nlevels, g.npaddles = 0, 1, 5

0 commit comments

Comments
 (0)