|
|
@@ -559,6 +559,86 @@ Render::Render(caca_canvas_t *caca) |
|
|
|
void Render::TickGame(float seconds) |
|
|
|
{ |
|
|
|
Entity::TickGame(seconds); |
|
|
|
|
|
|
|
/* draw setup */ |
|
|
|
if (m_setup) |
|
|
|
{ |
|
|
|
/* background */ |
|
|
|
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); |
|
|
|
caca_fill_box(m_caca, setup_p.x, setup_p.y, setup_size.x + 1, setup_size.y,' '); |
|
|
|
caca_draw_line(m_caca, setup_p.x + setup_size.z - 1, setup_p.y + 1, setup_p.x + setup_size.z - 1, setup_p.y + setup_size.y - 1,'|'); |
|
|
|
/* title */ |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x, setup_p.y, setup_p.x + setup_size.x, setup_p.y,' '); |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.x / 2 - 3, setup_p.y, "SETUP"); |
|
|
|
/* display option */ |
|
|
|
for (int i = 0; i < setup_h; i++) |
|
|
|
{ |
|
|
|
int y = setup_p.y + 1 + i; |
|
|
|
int k = (setup_option_p + i) * (setup_item_n + 1); |
|
|
|
if (setup_option_i != setup_option_p + i || setup_switch) |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); |
|
|
|
caca_put_str(m_caca, setup_p.x + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x, y, setup_p.x + setup_size.z - 2, y,' '); |
|
|
|
caca_put_str(m_caca, setup_p.x + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
} |
|
|
|
/* display item */ |
|
|
|
for (int i = 0; i < setup_h; i++) |
|
|
|
{ |
|
|
|
int y = setup_p.y + 1 + i; |
|
|
|
int k = setup_option_i * (setup_item_n + 1) + 1 + setup_item_p + i; |
|
|
|
if (setup_item_i != setup_item_p + i || !setup_switch) |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x + setup_size.z, y, setup_p.x + setup_size.x, y,' '); |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
} |
|
|
|
/* display variable */ |
|
|
|
int y = setup_p.y + setup_size.y; |
|
|
|
setup_item_key = setup_option_i * (setup_item_n + 1) + 1 + setup_item_i; |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x, y, setup_p.x + setup_size.x, y,' '); |
|
|
|
if (setup_switch) |
|
|
|
{ |
|
|
|
int x = setup_p.x + 1; |
|
|
|
int w = setup_size.x - 3 - 4; |
|
|
|
int bar_w = w / (setup_var[setup_item_key].y - setup_var[setup_item_key].x); |
|
|
|
int bar_x = bar_w * setup_var[setup_item_key].x; |
|
|
|
if ((setup_var[setup_item_key].y - setup_var[setup_item_key].x) / setup_var[setup_item_key].z > 1) |
|
|
|
{ |
|
|
|
/* Work around a bug in libcaca */ |
|
|
|
if (setup_p.x + setup_size.x - 4 < caca_get_canvas_width(m_caca)) |
|
|
|
caca_printf(m_caca, setup_p.x + setup_size.x - 4, y, "%4.2f", setup_var[setup_item_key].w); |
|
|
|
caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].y, y,'.'); |
|
|
|
if (setup_var[setup_item_key].w != setup_var[setup_item_key].x) caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].w, y,'x'); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (setup_var[setup_item_key] != vec4(0)) |
|
|
|
{ |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.x - 3, y, (setup_var[setup_item_key].w == setup_var[setup_item_key].y)?"YES":" NO"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* informations */ |
|
|
|
int w = caca_get_canvas_width(m_caca); |
|
|
|
int h = caca_get_canvas_height(m_caca); |
|
|
|
caca_set_color_argb(m_caca, 0xfff, 0x000); |
|
|
|
caca_printf(m_caca, 0, 0, "%i*%i", w, h); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void Render::Pause() |
|
|
@@ -806,84 +886,6 @@ void Render::TickDraw(float seconds) |
|
|
|
fade_flag = false; |
|
|
|
} |
|
|
|
} |
|
|
|
/* draw setup */ |
|
|
|
if (m_setup) |
|
|
|
{ |
|
|
|
/* background */ |
|
|
|
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); |
|
|
|
caca_fill_box(m_caca, setup_p.x, setup_p.y, setup_size.x + 1, setup_size.y,' '); |
|
|
|
caca_draw_line(m_caca, setup_p.x + setup_size.z - 1, setup_p.y + 1, setup_p.x + setup_size.z - 1, setup_p.y + setup_size.y - 1,'|'); |
|
|
|
/* title */ |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x, setup_p.y, setup_p.x + setup_size.x, setup_p.y,' '); |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.x / 2 - 3, setup_p.y, "SETUP"); |
|
|
|
/* display option */ |
|
|
|
for (int i = 0; i < setup_h; i++) |
|
|
|
{ |
|
|
|
int y = setup_p.y + 1 + i; |
|
|
|
int k = (setup_option_p + i) * (setup_item_n + 1); |
|
|
|
if (setup_option_i != setup_option_p + i || setup_switch) |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); |
|
|
|
caca_put_str(m_caca, setup_p.x + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x, y, setup_p.x + setup_size.z - 2, y,' '); |
|
|
|
caca_put_str(m_caca, setup_p.x + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
} |
|
|
|
/* display item */ |
|
|
|
for (int i = 0; i < setup_h; i++) |
|
|
|
{ |
|
|
|
int y = setup_p.y + 1 + i; |
|
|
|
int k = setup_option_i * (setup_item_n + 1) + 1 + setup_item_p + i; |
|
|
|
if (setup_item_i != setup_item_p + i || !setup_switch) |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.x, setup_color.y); |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x + setup_size.z, y, setup_p.x + setup_size.x, y,' '); |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.z + 1, y, setup_text[k]); |
|
|
|
} |
|
|
|
} |
|
|
|
/* display variable */ |
|
|
|
int y = setup_p.y + setup_size.y; |
|
|
|
setup_item_key = setup_option_i * (setup_item_n + 1) + 1 + setup_item_i; |
|
|
|
caca_set_color_argb(m_caca, setup_color.y, setup_color.x); |
|
|
|
caca_draw_line(m_caca, setup_p.x, y, setup_p.x + setup_size.x, y,' '); |
|
|
|
if (setup_switch) |
|
|
|
{ |
|
|
|
int x = setup_p.x + 1; |
|
|
|
int w = setup_size.x - 3 - 4; |
|
|
|
int bar_w = w / (setup_var[setup_item_key].y - setup_var[setup_item_key].x); |
|
|
|
int bar_x = bar_w * setup_var[setup_item_key].x; |
|
|
|
if ((setup_var[setup_item_key].y - setup_var[setup_item_key].x) / setup_var[setup_item_key].z > 1) |
|
|
|
{ |
|
|
|
/* Work around a bug in libcaca */ |
|
|
|
if (setup_p.x + setup_size.x - 4 < caca_get_canvas_width(m_caca)) |
|
|
|
caca_printf(m_caca, setup_p.x + setup_size.x - 4, y, "%4.2f", setup_var[setup_item_key].w); |
|
|
|
caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].y, y,'.'); |
|
|
|
if (setup_var[setup_item_key].w != setup_var[setup_item_key].x) caca_draw_line(m_caca, x, y, x - bar_x + bar_w * setup_var[setup_item_key].w, y,'x'); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (setup_var[setup_item_key] != vec4(0)) |
|
|
|
{ |
|
|
|
caca_put_str(m_caca, setup_p.x + setup_size.x - 3, y, (setup_var[setup_item_key].w == setup_var[setup_item_key].y)?"YES":" NO"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
/* informations */ |
|
|
|
int w = caca_get_canvas_width(m_caca); |
|
|
|
int h = caca_get_canvas_height(m_caca); |
|
|
|
caca_set_color_argb(m_caca, 0xfff, 0x000); |
|
|
|
caca_printf(m_caca, 0, 0, "%i*%i", w, h); |
|
|
|
} |
|
|
|
|
|
|
|
Draw2D(); |
|
|
|
Draw3D(); |
|
|
|