draw level and ball count
This commit is contained in:
parent
6ba5a45658
commit
2469c8dc62
105
src/render.cpp
105
src/render.cpp
@ -288,11 +288,11 @@ void render_text(struct mesh plane_mesh,
|
|||||||
float aspect,
|
float aspect,
|
||||||
mat4x4 a,
|
mat4x4 a,
|
||||||
mat4x4 s,
|
mat4x4 s,
|
||||||
mat4x4 r)
|
mat4x4 r,
|
||||||
|
float _scale,
|
||||||
|
int h_advance,
|
||||||
|
int v_advance)
|
||||||
{
|
{
|
||||||
int h_advance = 0;
|
|
||||||
int v_advance = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < text_length; i++) {
|
for (int i = 0; i < text_length; i++) {
|
||||||
const char * txt = text[i];
|
const char * txt = text[i];
|
||||||
while (*txt) {
|
while (*txt) {
|
||||||
@ -301,7 +301,7 @@ void render_text(struct mesh plane_mesh,
|
|||||||
if (c != ' ') {
|
if (c != ' ') {
|
||||||
mat4x4 char_t = translate(vec3(-2 * 16 + h_advance / 8.0f,
|
mat4x4 char_t = translate(vec3(-2 * 16 + h_advance / 8.0f,
|
||||||
-8.0f * aspect + -v_advance / 16.0f, 0));
|
-8.0f * aspect + -v_advance / 16.0f, 0));
|
||||||
mat4x4 trans = a * scale(12.0f / vp_height) * s * char_t * r;
|
mat4x4 trans = a * scale(_scale / vp_height) * s * char_t * r;
|
||||||
|
|
||||||
mat4x4 texture_trans = char_tex_trans(c);
|
mat4x4 texture_trans = char_tex_trans(c);
|
||||||
|
|
||||||
@ -381,6 +381,8 @@ void render_font(struct mesh plane_mesh,
|
|||||||
};
|
};
|
||||||
const int win_length = (sizeof (win)) / (sizeof (win[0]));
|
const int win_length = (sizeof (win)) / (sizeof (win[0]));
|
||||||
|
|
||||||
|
float text_scale = 12.0f;
|
||||||
|
|
||||||
if (state->intro_shown == 0) {
|
if (state->intro_shown == 0) {
|
||||||
vec3 base_color = vec3(1, 1, 1);
|
vec3 base_color = vec3(1, 1, 1);
|
||||||
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
||||||
@ -390,7 +392,9 @@ void render_font(struct mesh plane_mesh,
|
|||||||
intro,
|
intro,
|
||||||
intro_length,
|
intro_length,
|
||||||
aspect,
|
aspect,
|
||||||
a, s, r);
|
a, s, r,
|
||||||
|
text_scale,
|
||||||
|
0, 0);
|
||||||
} else if (state->remaining <= 0) {
|
} else if (state->remaining <= 0) {
|
||||||
if (state->level_ix == 0) {
|
if (state->level_ix == 0) {
|
||||||
vec3 base_color = vec3(1, 0.1, 0.1);
|
vec3 base_color = vec3(1, 0.1, 0.1);
|
||||||
@ -401,7 +405,9 @@ void render_font(struct mesh plane_mesh,
|
|||||||
loss,
|
loss,
|
||||||
loss_length,
|
loss_length,
|
||||||
aspect,
|
aspect,
|
||||||
a, s, r);
|
a, s, r,
|
||||||
|
text_scale,
|
||||||
|
0, 0);
|
||||||
} else {
|
} else {
|
||||||
vec3 base_color = vec3(0.1, 1.0, 0.1);
|
vec3 base_color = vec3(0.1, 1.0, 0.1);
|
||||||
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
||||||
@ -411,45 +417,96 @@ void render_font(struct mesh plane_mesh,
|
|||||||
win,
|
win,
|
||||||
win_length,
|
win_length,
|
||||||
aspect,
|
aspect,
|
||||||
a, s, r);
|
a, s, r,
|
||||||
|
text_scale,
|
||||||
|
0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char dst[64];
|
||||||
|
const char * dst_l[] = { dst };
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// remaining
|
// remaining
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
char dst[64];
|
|
||||||
|
|
||||||
double remaining = state->remaining;
|
double remaining = state->remaining;
|
||||||
if (remaining < 0.0)
|
if (remaining < 0.0)
|
||||||
remaining = 0.0;
|
remaining = 0.0;
|
||||||
int len = unparse_double(remaining, 4, 1, dst);
|
|
||||||
|
|
||||||
vec3 base_color = vec3(1, 1, 1);
|
vec3 base_color = vec3(1, 1, 1);
|
||||||
if (remaining == 0) {
|
if (remaining == 0) {
|
||||||
base_color = vec3(abs(sin(state->time * 2)) * 0.6 + 0.4, 0.1, 0.1);
|
base_color = vec3(abs(sin(state->time * 2)) * 0.6 + 0.4, 0.1, 0.1);
|
||||||
//base_color = vec3(1, 0.1, 0.1);
|
//base_color = vec3(1, 0.1, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
||||||
|
|
||||||
int h_advance = grid_width * 10;
|
int len = unparse_double(remaining, 2, 1, dst);
|
||||||
int v_advance = grid_height * 5;
|
dst[len] = 0;
|
||||||
|
|
||||||
for (int i = 0; i < len; i++) {
|
render_text(plane_mesh,
|
||||||
if (dst[i] != ' ') {
|
uniform_trans,
|
||||||
mat4x4 texture_trans = char_tex_trans(dst[i]);
|
uniform_texture_trans,
|
||||||
|
dst_l,
|
||||||
|
1,
|
||||||
|
aspect,
|
||||||
|
a, s, r,
|
||||||
|
28.0f, // scale
|
||||||
|
14 * grid_width, 1.95 * grid_height);
|
||||||
|
|
||||||
mat4x4 char_t = translate(vec3(-2 * 16 + h_advance / 8.0f,
|
|
||||||
-1.0f * aspect + -v_advance / 16.0f, 0));
|
|
||||||
mat4x4 trans = a * scale(26.0f / vp_height) * s * char_t * r;
|
|
||||||
|
|
||||||
glUniform4fv(uniform_trans, 4, &trans[0][0]);
|
//////////////////////////////////////////////////////////////////////
|
||||||
glUniform4fv(uniform_texture_trans, 4, &texture_trans[0][0]);
|
// ball count
|
||||||
glDrawElements(GL_TRIANGLES, plane_mesh.length, GL_UNSIGNED_INT, 0);
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
{
|
||||||
|
dst[0] = 'b';
|
||||||
|
dst[1] = 'l';
|
||||||
|
int len = unparse_double(20 - state->balls_launched, 2, 1, &dst[2]);
|
||||||
|
dst[2] = ':';
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
if (dst[2 + i] == '.')
|
||||||
|
dst[2 + i] = 0;
|
||||||
}
|
}
|
||||||
h_advance += grid_width;
|
|
||||||
|
vec3 base_color = vec3(1, 1, 1);
|
||||||
|
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
||||||
|
|
||||||
|
render_text(plane_mesh,
|
||||||
|
uniform_trans,
|
||||||
|
uniform_texture_trans,
|
||||||
|
dst_l,
|
||||||
|
1,
|
||||||
|
aspect,
|
||||||
|
a, s, r,
|
||||||
|
20.0f, // scale
|
||||||
|
28 * grid_width, 3.75 * grid_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
{
|
||||||
|
dst[0] = 'l';
|
||||||
|
dst[1] = 'v';
|
||||||
|
int len = unparse_double(state->level_ix + 1, 2, 1, &dst[2]);
|
||||||
|
dst[2] = ':';
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
if (dst[2 + i] == '.')
|
||||||
|
dst[2 + i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 base_color = vec3(1, 1, 1);
|
||||||
|
glUniform3fv(uniform_base_color, 1, &base_color[0]);
|
||||||
|
|
||||||
|
render_text(plane_mesh,
|
||||||
|
uniform_trans,
|
||||||
|
uniform_texture_trans,
|
||||||
|
dst_l,
|
||||||
|
1,
|
||||||
|
aspect,
|
||||||
|
a, s, r,
|
||||||
|
20.0f, // scale
|
||||||
|
0 * grid_width, 3.75 * grid_height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user