Draw text better, make block layout more interesting
This commit is contained in:
parent
d139619147
commit
b1c0754d54
|
@ -26,7 +26,15 @@ mp_rect ball = {200, 200, 20, 20};
|
||||||
|
|
||||||
vec2 velocity = {5, 5};
|
vec2 velocity = {5, 5};
|
||||||
|
|
||||||
int blockHealth[NUM_BLOCKS];
|
// This is upside down from how it will actually be drawn.
|
||||||
|
int blockHealth[NUM_BLOCKS] = {
|
||||||
|
0, 1, 1, 1, 1, 1, 0,
|
||||||
|
1, 1, 1, 1, 1, 1, 1,
|
||||||
|
2, 2, 2, 2, 2, 2, 2,
|
||||||
|
2, 2, 2, 2, 2, 2, 2,
|
||||||
|
3, 3, 3, 3, 3, 3, 3,
|
||||||
|
3, 3, 3, 3, 3, 3, 3,
|
||||||
|
};
|
||||||
|
|
||||||
vec2 frameSize = {100, 100};
|
vec2 frameSize = {100, 100};
|
||||||
|
|
||||||
|
@ -46,6 +54,7 @@ mg_surface mg_surface_main(void);
|
||||||
f32 lerp(f32 a, f32 b, f32 t);
|
f32 lerp(f32 a, f32 b, f32 t);
|
||||||
mp_rect blockRect(int i);
|
mp_rect blockRect(int i);
|
||||||
int checkCollision(mp_rect block);
|
int checkCollision(mp_rect block);
|
||||||
|
mg_mat2x3 flipYAt(vec2 pos);
|
||||||
|
|
||||||
str8 loadFile(mem_arena* arena, str8 filename) {
|
str8 loadFile(mem_arena* arena, str8 filename) {
|
||||||
file_handle file = file_open(filename, FILE_ACCESS_READ, 0);
|
file_handle file = file_open(filename, FILE_ACCESS_READ, 0);
|
||||||
|
@ -79,10 +88,6 @@ ORCA_EXPORT void OnInit(void)
|
||||||
// TODO: Decide whether we're using strings or explicit pointer + length
|
// TODO: Decide whether we're using strings or explicit pointer + length
|
||||||
pongFont = mg_font_create_from_memory(fontStr.len, (byte*)fontStr.ptr, 5, ranges);
|
pongFont = mg_font_create_from_memory(fontStr.len, (byte*)fontStr.ptr, 5, ranges);
|
||||||
|
|
||||||
for (int i = 0; i < NUM_BLOCKS; i++) {
|
|
||||||
blockHealth[i] = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
mem_arena_clear(mem_scratch());
|
mem_arena_clear(mem_scratch());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,19 +240,38 @@ ORCA_EXPORT void OnFrameRefresh(void)
|
||||||
mg_set_color_rgba(10.0f/255.0f, 31.0f/255.0f, 72.0f/255.0f, 1);
|
mg_set_color_rgba(10.0f/255.0f, 31.0f/255.0f, 72.0f/255.0f, 1);
|
||||||
mg_clear();
|
mg_clear();
|
||||||
|
|
||||||
mg_mat2x3 transform = {1, 0, 0,
|
mg_mat2x3 yUp = {
|
||||||
0, -1, frameSize.y};
|
1, 0, 0,
|
||||||
|
0, -1, frameSize.y,
|
||||||
|
};
|
||||||
|
|
||||||
mg_matrix_push(transform);
|
mg_matrix_push(yUp);
|
||||||
{
|
{
|
||||||
mg_set_color_rgba(0.9, 0.9, 0.9, 1);
|
|
||||||
for (int i = 0; i < NUM_BLOCKS; i++) {
|
for (int i = 0; i < NUM_BLOCKS; i++) {
|
||||||
if (blockHealth[i] <= 0) {
|
if (blockHealth[i] <= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
mp_rect r = blockRect(i);
|
mp_rect r = blockRect(i);
|
||||||
mg_rectangle_fill(r.x, r.y, r.w, r.h);
|
mg_set_color_rgba(0.9, 0.9, 0.9, 1);
|
||||||
|
mg_rounded_rectangle_fill(r.x, r.y, r.w, r.h, 4);
|
||||||
|
|
||||||
|
// TODO: measure and center text
|
||||||
|
vec2 textPos = {r.x + r.w/2 - 5, r.y + 9};
|
||||||
|
|
||||||
|
mg_set_color_rgba(0, 0, 0, 1);
|
||||||
|
mg_set_font(pongFont);
|
||||||
|
mg_set_font_size(18);
|
||||||
|
mg_move_to(textPos.x, textPos.y);
|
||||||
|
mg_matrix_push(flipYAt(textPos));
|
||||||
|
{
|
||||||
|
str8 text = str8_pushf(mem_scratch(),
|
||||||
|
"%d", blockHealth[i]
|
||||||
|
);
|
||||||
|
mg_text_outlines(text);
|
||||||
|
mg_fill();
|
||||||
|
}
|
||||||
|
mg_matrix_pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
mg_image_draw(paddleImage, paddle);
|
mg_image_draw(paddleImage, paddle);
|
||||||
|
@ -255,18 +279,6 @@ ORCA_EXPORT void OnFrameRefresh(void)
|
||||||
}
|
}
|
||||||
mg_matrix_pop();
|
mg_matrix_pop();
|
||||||
|
|
||||||
mg_set_color_rgba(0, 0, 0, 1);
|
|
||||||
mg_set_font(pongFont);
|
|
||||||
mg_set_font_size(14);
|
|
||||||
mg_move_to(10, 20);
|
|
||||||
|
|
||||||
str8 text = str8_pushf(mem_scratch(),
|
|
||||||
"wahoo I'm did a text. ball is at x = %f, y = %f",
|
|
||||||
ball.x, ball.y
|
|
||||||
);
|
|
||||||
mg_text_outlines(text);
|
|
||||||
mg_fill();
|
|
||||||
|
|
||||||
mg_surface_prepare(surface);
|
mg_surface_prepare(surface);
|
||||||
mg_render(surface, canvas);
|
mg_render(surface, canvas);
|
||||||
mg_surface_present(surface);
|
mg_surface_present(surface);
|
||||||
|
@ -411,3 +423,10 @@ int checkCollision(mp_rect block) {
|
||||||
f32 lerp(f32 a, f32 b, f32 t) {
|
f32 lerp(f32 a, f32 b, f32 t) {
|
||||||
return (1 - t) * a + t * b;
|
return (1 - t) * a + t * b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mg_mat2x3 flipYAt(vec2 pos) {
|
||||||
|
return (mg_mat2x3){
|
||||||
|
1, 0, 0,
|
||||||
|
0, -1, 2 * pos.y,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue