Files
armorpaint/base/sources/ts/console.ts
T

85 lines
2.1 KiB
TypeScript
Raw Normal View History

2024-03-09 14:52:33 +01:00
let console_message: string = "";
let console_message_timer: f32 = 0.0;
let console_message_color: i32 = 0x00000000;
let console_last_traces: string[] = [""];
let console_progress_text: string = null;
function console_draw_toast(s: string) {
2025-06-21 16:49:53 +02:00
draw_begin();
2025-03-02 21:07:17 +01:00
draw_set_color(0x55000000);
2025-03-09 17:02:12 +01:00
draw_filled_rect(0, 0, iron_window_width(), iron_window_height());
2024-09-03 15:52:05 +02:00
let scale: f32 = ui_SCALE(base_get_uis()[0]);
2025-03-09 17:02:12 +01:00
let x: f32 = iron_window_width() / 2;
let y: f32 = iron_window_height() - 200 * scale;
2025-03-02 19:44:26 +01:00
draw_filled_rect(x - 200 * scale, y, 400 * scale, 80 * scale);
2025-03-10 20:26:45 +01:00
draw_set_font(base_font, math_floor(22 * scale));
2025-03-02 21:07:17 +01:00
draw_set_color(0xffffffff);
2025-03-10 20:26:45 +01:00
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);
2025-06-21 16:49:53 +02:00
draw_end();
2024-03-09 14:52:33 +01:00
}
function console_toast(s: string) {
// Show a popup message
2025-08-05 22:53:56 +02:00
let current: gpu_texture_t = _draw_current;
if (current != null) draw_end();
2024-03-09 14:52:33 +01:00
console_trace(s);
2025-08-05 22:53:56 +02:00
console_draw_toast(s);
2025-06-19 19:55:16 +02:00
gpu_present();
2025-08-05 22:53:56 +02:00
if (current != null) draw_begin(current);
2024-03-09 14:52:33 +01:00
}
function console_draw_progress() {
console_draw_toast(console_progress_text);
}
function console_progress(s: string) {
// Keep popup message displayed until s == null
if (s == null) {
2025-03-11 19:49:42 +01:00
sys_remove_render_2d(console_draw_progress);
2024-03-09 14:52:33 +01:00
}
else if (console_progress_text == null) {
2025-03-11 19:49:42 +01:00
sys_notify_on_render_2d(console_draw_progress);
2024-03-09 14:52:33 +01:00
}
2024-03-20 16:13:54 +01:00
if (s != null) {
console_trace(s);
}
2024-03-09 14:52:33 +01:00
console_progress_text = s;
2024-10-25 18:58:10 +02:00
// Pass one frame to immediately show the message
ui_end_input();
2025-03-10 20:26:45 +01:00
draw_end();
2025-03-11 19:49:42 +01:00
sys_render();
2025-03-10 20:26:45 +01:00
draw_begin();
2025-06-19 19:55:16 +02:00
gpu_present();
2024-03-09 14:52:33 +01:00
}
function console_info(s: string) {
console_message_timer = 5.0;
console_message = s;
console_message_color = 0x00000000;
base_redraw_status();
console_trace(s);
}
function console_error(s: string) {
console_message_timer = 8.0;
console_message = s;
console_message_color = 0xffaa0000;
base_redraw_status();
console_trace(s);
}
function console_log(s: string) {
console_trace(s);
}
2024-05-03 21:29:39 +02:00
function console_trace(s: string) {
2025-03-09 17:02:12 +01:00
iron_log(s);
2024-03-09 14:52:33 +01:00
base_redraw_console();
2024-05-03 21:29:39 +02:00
array_insert(console_last_traces, 0, s);
2024-03-20 16:13:54 +01:00
if (console_last_traces.length > 100) {
2024-05-03 21:29:39 +02:00
array_pop(console_last_traces);
2024-03-20 16:13:54 +01:00
}
2024-03-09 14:52:33 +01:00
}