function Panel_Console() : PanelContent() constructor { title = "Console"; w = ui(640); h = ui(320); command = ""; history = []; cmd_history = []; cmd_index = 0; keyboard_string = ""; static submit_command = function() { if(command == "") return; array_push(history, { txt: command, color: COLORS._main_text_sub }); array_push(cmd_history, command); var cmd = string_splice(command, " "); switch(cmd[0]) { case "flag": if(array_length(cmd) < 2) break; var flg = array_safe_get(cmd, 1, ""); global.FLAG[$ flg] = !global.FLAG[$ flg]; array_push(history, { txt: $"Toggled debug flag: {flg} = {global.FLAG[$ flg]? "True" : "False"}", color: COLORS._main_value_positive }); break; } keyboard_string = ""; command = ""; } function drawContent(panel) { HOTKEY_BLOCK = true; command = keyboard_string; draw_clear_alpha(CDEF.main_dkblack, 1); draw_set_color(c_black); draw_set_alpha(0.75); draw_rectangle(0, h - ui(28), w, h, false); draw_set_alpha(1); draw_set_text(f_code, fa_left, fa_bottom, COLORS._main_text); draw_text(ui(8), h - ui(4), command); draw_set_color(COLORS._main_text_sub); draw_text(ui(8) + string_width(command), h - ui(4), "_"); var hy = h - ui(32); for( var i = 0; i < array_length(history); i++ ) { var his = history[array_length(history) - i - 1]; var txt = his.txt; draw_set_color(his.color); draw_text_ext(ui(8), hy, txt, -1, w - ui(16)); hy -= string_height_ext(txt, -1, w - ui(16)); if(hy <= 0) break; } if(keyboard_check_pressed(vk_enter)) submit_command(); if(keyboard_check_pressed(vk_up)) { cmd_index = max(0, cmd_index - 1); keyboard_string = array_safe_get(cmd_history, cmd_index, ""); command = keyboard_string; } else if(keyboard_check_pressed(vk_anykey)) cmd_index = array_length(cmd_history); } }