1
0
mirror of https://github.com/JohnBreaux/Boat-Battle.git synced 2024-11-15 05:25:57 +00:00

Finish scripting implementation

This commit is contained in:
John 2021-11-14 07:13:53 -06:00
parent 5a72c4fded
commit ecbf14c998

View File

@ -11,6 +11,9 @@ var menu_velocity = 4
var history : Array = [] var history : Array = []
var history_pos = 0 var history_pos = 0
# Controls whether to print to the screen
var echo = true
onready var expression = Expression.new() onready var expression = Expression.new()
# helptext: args list and help blurb accessed by function name # helptext: args list and help blurb accessed by function name
@ -39,6 +42,7 @@ var helptext = {
"command_setprop": [" prop value", "Set the property prop to value.\n" ], "command_setprop": [" prop value", "Set the property prop to value.\n" ],
"command_script": [" path", "Load and execute a script at a given path.\n" ], "command_script": [" path", "Load and execute a script at a given path.\n" ],
"command_echo": [" on/off", "Controls whether lines should be printed to the screen\n" ],
"command_restart": ["", "Kill the current scene tree and plant a new Root.\n" ], "command_restart": ["", "Kill the current scene tree and plant a new Root.\n" ],
"command_exit": ["", "Quits the program.\n" ], "command_exit": ["", "Quits the program.\n" ],
@ -72,6 +76,7 @@ var commands = {
["setprop","set", "s"]: "command_setprop", ["setprop","set", "s"]: "command_setprop",
["script", "sh"]: "command_script", ["script", "sh"]: "command_script",
["@echo"]: "command_echo",
["restart", "killall"]: "command_restart", ["restart", "killall"]: "command_restart",
["exit", "quit"]: "command_exit", ["exit", "quit"]: "command_exit",
@ -158,14 +163,13 @@ func _input(event):
# params: line: Line of text entered by user # params: line: Line of text entered by user
# returns: void # returns: void
func _on_LineEdit_text_entered(line): func _on_LineEdit_text_entered(line):
if line != "":
history_append(line)
emit_signal("clear_in") emit_signal("clear_in")
debug_print_line(line + "\n") debug_print_line(line + "\n")
var command = line.split(' ', true, 1) var command = line.split(' ', true, 1)
var command_func = parse(command[0]) var command_func = parse(command[0])
if command_func: if command_func:
call(command_func, command) call(command_func, command)
history_append(line)
else: else:
debug_print_line("dbg: command not found: " + command[0] + "\n") debug_print_line("dbg: command not found: " + command[0] + "\n")
debug_print_line("> ") debug_print_line("> ")
@ -197,6 +201,7 @@ func history_move(rel_pos):
# params: string: Text string to print # params: string: Text string to print
# returns: void # returns: void
func debug_print_line(string): func debug_print_line(string):
if echo:
emit_signal("print_text", string.c_unescape()) emit_signal("print_text", string.c_unescape())
# get_pwn: get the present working node if valid, otherwise cd to root # get_pwn: get the present working node if valid, otherwise cd to root
@ -282,7 +287,7 @@ func string_to_variant(string, type):
res = null res = null
TYPE_BOOL: TYPE_BOOL:
match string.to_lower(): match string.to_lower():
"true", "1", "ok": "true", "1", "ok", "on":
res = true res = true
_: _:
res = false res = false
@ -532,13 +537,23 @@ func command_script(command):
while not f.eof_reached(): while not f.eof_reached():
script.push_back(f.get_line()) script.push_back(f.get_line())
f.close() f.close()
echo = false
var h = history_pos
for cmd in script: for cmd in script:
_on_LineEdit_text_entered(cmd) _on_LineEdit_text_entered(cmd)
history_pos = h
echo = true
else: else:
debug_print_line("File not found: " + command[1] + "\n") debug_print_line("File not found: " + command[1] + "\n")
else: else:
debug_print_line(get_usage(command[0])) debug_print_line(get_usage(command[0]))
func command_echo(command):
if command.size() > 1:
echo = string_to_variant(command[1], TYPE_BOOL)
else:
debug_print_line(get_usage(command[0]))
func perf(attribute): func perf(attribute):
if attribute.is_valid_integer(): if attribute.is_valid_integer():
return Performance.get_monitor(int(attribute)) return Performance.get_monitor(int(attribute))