extends CanvasLayer var player_sensor:Node = null var active:bool = false var words:Array = [] var PrevCMD:String = "" var light_reading := Color.BLACK @onready var panel = $control/panel @onready var menu = $control/panel/menu @onready var edit = $control/panel/edit @onready var states = $control/m @onready var stats = $control/m/stats func read_message(message:String): display_message(message) words = message.split(" ") PrevCMD = words[0] var player = get_tree().get_first_node_in_group("player") match words[0].to_lower(): "overdraw": if words.size() > 1 and is_int(1): player.camera.get_viewport().debug_draw = words[1].to_int() "max_fps": if words.size() > 1 and is_float(1): Engine.max_fps = words[1].to_float() "vs": if DisplayServer.window_get_vsync_mode(0) == DisplayServer.VSYNC_DISABLED: DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED) display_event("VSYNC ON") else: DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) display_event("VSYNC OFF") "time": if words.size() > 1: if is_float(1): var number = words[1].to_float() if number >= 0.0 and number < 2.0: Engine.time_scale = number else: display_warning("WRONG NUMBER") else: display_warning("WRONG NUMBER") else: Engine.time_scale = 1 display_event("TIMESCALE RESTARTED") "fsr": if get_viewport().scaling_3d_mode == Viewport.SCALING_3D_MODE_FSR2: display_event("FSR 2.0 OFF") get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_BILINEAR else: display_event("FSR 2.0 ON") get_viewport().scaling_3d_mode = Viewport.SCALING_3D_MODE_FSR2 "render_scale": if words.size() > 1: if is_float(1): get_viewport().scaling_3d_scale = words[1].to_float() else: display_warning("WRONG NUMBER") else: get_viewport().scaling_3d_scale = 1 display_event("SCALING RESTARTED") "fs": if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) else: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) "q": get_tree().quit() panel.hide() #region Other func _input(event): if event is InputEventKey and event.pressed: match event.physical_keycode: KEY_QUOTELEFT: if panel.visible: panel.hide() else: panel.show() KEY_F11: if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED) else: DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) KEY_F3: if states.visible: states.hide() else: states.show() KEY_F4: $control/monitor.cycle_debug_menu() KEY_RIGHT: if PrevCMD and panel.visible: edit.set_text(PrevCMD) edit.set_caret_column(PrevCMD.length()) func _process(_delta): var player = get_tree().get_first_node_in_group("player") if states.visible and player: stats.text ="SPEDOMETER: "+str(snappedf(player.spedometer, 0.01)) func _on_edit_text_submitted(new_text): read_message(new_text) edit.clear() func display_event(message:String): menu.push_color(Color.AQUAMARINE) menu.add_text(message+"\n") func display_message(message:String): menu.push_color(Color.WHITE) menu.add_text(message+"\n") func display_warning(message:String): menu.push_color(Color.YELLOW) menu.add_text(message+"\n") func is_bool(num:int)->bool: var valid = false if words.size() > num and words[num].is_valid_int() and \ words[num].to_int() <= 1 and words[num].to_int() >= 0: valid = true return valid display_warning("WRONG NUMBER") return valid func is_float(num:int)->bool: var valid = false if words.size() > num and words[num].is_valid_float(): valid = true return valid return valid func is_int(num:int)->bool: var valid = false if words.size() > num and words[num].is_valid_int(): valid = true return valid return valid func _on_panel_draw(): active = true edit.grab_focus() Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) func _on_panel_hidden(): active = false edit.release_focus() edit.clear() Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) #endregion