145 lines
4.2 KiB
GDScript
145 lines
4.2 KiB
GDScript
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 _ready() -> void:
|
|
read_message("vs")
|
|
read_message("max_fps 144")
|
|
|
|
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
|