mirror of
https://github.com/thegatesbrowser/thegates.git
synced 2025-08-22 23:17:26 -04:00
70 lines
1.9 KiB
GDScript
70 lines
1.9 KiB
GDScript
extends CommandSync
|
|
|
|
@export var app_events: AppEvents
|
|
@export var gate_events: GateEvents
|
|
@export var command_events: CommandEvents
|
|
|
|
var silent_commands = ["heartbeat"]
|
|
|
|
|
|
func _ready() -> void:
|
|
gate_events.gate_entered.connect(bind)
|
|
execute_function = _execute_function
|
|
|
|
|
|
func _physics_process(_delta: float) -> void:
|
|
receive_commands()
|
|
|
|
|
|
func _execute_function(command: Command) -> Variant:
|
|
if command.name not in silent_commands:
|
|
Debug.logclr("Recieved command: " + command.name + ". Args: " + str(command.args), Color.SANDY_BROWN)
|
|
|
|
match command.name:
|
|
"send_filehandle":
|
|
if wrong_args_count(command, 1): return ERR_INVALID_PARAMETER
|
|
command_events.send_filehandle_emit(command.args[0])
|
|
|
|
"ext_texture_format":
|
|
if wrong_args_count(command, 1): return ERR_INVALID_PARAMETER
|
|
command_events.ext_texture_format_emit(command.args[0])
|
|
|
|
"first_frame":
|
|
if wrong_args_count(command, 0): return ERR_INVALID_PARAMETER
|
|
gate_events.first_frame_emit()
|
|
|
|
"heartbeat":
|
|
if wrong_args_count(command, 0): return ERR_INVALID_PARAMETER
|
|
command_events.heartbeat_emit()
|
|
|
|
"set_mouse_mode":
|
|
if wrong_args_count(command, 1): return ERR_INVALID_PARAMETER
|
|
command_events.set_mouse_mode_emit(command.args[0])
|
|
|
|
"open_gate":
|
|
if wrong_args_count(command, 1): return ERR_INVALID_PARAMETER
|
|
var url = Url.join(gate_events.current_gate_url, command.args[0])
|
|
gate_events.open_gate_emit(url)
|
|
|
|
"open_link":
|
|
if wrong_args_count(command, 1): return ERR_INVALID_PARAMETER
|
|
app_events.open_link_emit(command.args[0])
|
|
|
|
_:
|
|
Debug.logerr("Command %s not implemented" % [command.name])
|
|
return ERR_METHOD_NOT_FOUND
|
|
|
|
return OK
|
|
|
|
|
|
func wrong_args_count(command: Command, right_count: int) -> bool:
|
|
var count = command.args.size()
|
|
if count != right_count:
|
|
Debug.logerr("Command %s args count should be %d but it's %d" % [command.name, right_count, count])
|
|
return true
|
|
|
|
return false
|
|
|
|
|
|
func _exit_tree() -> void:
|
|
close()
|