-
Notifications
You must be signed in to change notification settings - Fork 1
/
frame.v
52 lines (48 loc) · 1.22 KB
/
frame.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import gg
import blocks
const menu_width = 365
fn on_frame(mut app App) {
// Draw
app.ctx.begin()
app.show_blocks()
app.show_blocks_menu()
if app.clicked_block != -1 {
app.blocks[blocks.find_index(app.clicked_block, app)].show(app.ctx)
}
app.show_console()
app.ctx.end()
}
fn (mut app App) show_blocks() {
for mut block in app.blocks {
if block.id != app.clicked_block {
block.show(app.ctx)
}
}
}
fn (mut app App) show_console() {
run_color := if app.show_output {
if app.program_running {
gg.Color{255, 0, 0, 255}
} else {
gg.Color{0, 255, 0, 255}
}
} else {
gg.Color{128, 128, 128, 255}
}
if app.show_output {
app.ctx.draw_rect_filled(app.win_size.width - console_size, 0, console_size, 2000,
console_color)
app.ctx.draw_square_filled(app.win_size.width - console_size + 5, 5, 20, gg.Color{255, 0, 0, 255})
split_out := app.p_output.split('\n')
if app.p_output.len > 1_000_000 {
app.kill_prog()
}
for n, line in split_out {
y := 40 + 18 * n - app.console_scroll * 18
if y < app.win_size.height + 16 && y > 30 {
app.ctx.draw_text(app.win_size.width - console_size + 5, y, line, console_cfg)
}
}
}
app.ctx.draw_square_filled(app.win_size.width - 25, 5, 20, run_color)
}