| @@ -559,6 +559,86 @@ Render::Render(caca_canvas_t *caca) | |||||
| void Render::TickGame(float seconds) | void Render::TickGame(float seconds) | ||||
| { | { | ||||
| Entity::TickGame(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() | void Render::Pause() | ||||
| @@ -806,84 +886,6 @@ void Render::TickDraw(float seconds) | |||||
| fade_flag = false; | 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(); | Draw2D(); | ||||
| Draw3D(); | Draw3D(); | ||||