console.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. let console_message: string = "";
  2. let console_message_timer: f32 = 0.0;
  3. let console_message_color: i32 = 0x00000000;
  4. let console_last_traces: string[] = [""];
  5. let console_progress_text: string = null;
  6. function console_draw_toast(s: string) {
  7. draw_begin();
  8. draw_set_color(0x55000000);
  9. draw_filled_rect(0, 0, iron_window_width(), iron_window_height());
  10. let scale: f32 = ui_SCALE(base_get_uis()[0]);
  11. let x: f32 = iron_window_width() / 2;
  12. let y: f32 = iron_window_height() - 200 * scale;
  13. draw_filled_rect(x - 200 * scale, y, 400 * scale, 80 * scale);
  14. draw_set_font(base_font, math_floor(22 * scale));
  15. draw_set_color(0xffffffff);
  16. draw_string(s, x - draw_string_width(draw_font, draw_font_size, s) / 2, y + 40 * scale - draw_font_height(draw_font, draw_font_size) / 2);
  17. draw_end();
  18. }
  19. function console_toast(s: string) {
  20. // Show a popup message
  21. let current: gpu_texture_t = _draw_current;
  22. if (current != null) draw_end();
  23. console_trace(s);
  24. console_draw_toast(s);
  25. gpu_present();
  26. if (current != null) draw_begin(current);
  27. }
  28. function console_draw_progress() {
  29. console_draw_toast(console_progress_text);
  30. }
  31. function console_progress(s: string) {
  32. // Keep popup message displayed until s == null
  33. if (s == null) {
  34. sys_remove_render_2d(console_draw_progress);
  35. }
  36. else if (console_progress_text == null) {
  37. sys_notify_on_render_2d(console_draw_progress);
  38. }
  39. if (s != null) {
  40. console_trace(s);
  41. }
  42. console_progress_text = s;
  43. // Pass one frame to immediately show the message
  44. ui_end_input();
  45. draw_end();
  46. sys_render();
  47. draw_begin();
  48. gpu_present();
  49. }
  50. function console_info(s: string) {
  51. console_message_timer = 5.0;
  52. console_message = s;
  53. console_message_color = 0x00000000;
  54. base_redraw_status();
  55. console_trace(s);
  56. }
  57. function console_error(s: string) {
  58. console_message_timer = 8.0;
  59. console_message = s;
  60. console_message_color = 0xffaa0000;
  61. base_redraw_status();
  62. console_trace(s);
  63. }
  64. function console_log(s: string) {
  65. console_trace(s);
  66. }
  67. function console_trace(s: string) {
  68. iron_log(s);
  69. base_redraw_console();
  70. array_insert(console_last_traces, 0, s);
  71. if (console_last_traces.length > 100) {
  72. array_pop(console_last_traces);
  73. }
  74. }