Finished debug/cheat console

This commit is contained in:
Tony Bark 2021-05-20 21:25:41 -04:00
parent 59ea5dd6f0
commit f6438a9bee
7 changed files with 95 additions and 16 deletions

View file

@ -4,9 +4,7 @@ onready var city_name = $CityNameLbl
onready var money = $Money/MoneyLbl
onready var year = $YearLbl
func _ready():
city_name.text = SimData.city_name
func _process(delta):
city_name.text = SimData.city_name
money.text = str(SimData.budget)
year.text = "Y" + str(SimData.year)

View file

@ -0,0 +1,20 @@
extends Node
enum {
ARG_INT,
ARG_STRING,
ARG_BOOL,
ARG_FLOAT
}
const valid_commands = [
["motherlode", [null],
["whereyoufrom", [ARG_STRING]]
]
]
func motherlode():
SimData.budget += 50000
func whereyoufrom(city_name):
SimData.city_name = city_name

View file

@ -2,6 +2,7 @@ extends Control
onready var debug_console = $Console
onready var advisor = $AdvsiorNotice
# onready var news_ticker = $TickerPanel/ScrollContainer
func _ready():
advisor.show()
@ -9,3 +10,4 @@ func _ready():
func _process(delta):
if Input.is_action_just_released("ui_cheats"):
debug_console.show()
get_tree().paused = true

View file

@ -2,13 +2,62 @@ extends Control
onready var input_box = $Input
onready var output_box = $Output
onready var command_handler = $CommandHandler
func _ready():
input_box.grab_focus()
func process_command(text: String):
var words = text.split(" ")
words = Array(words)
for i in range(words.count("")):
words.erase("")
if words.size() == 0:
return
var cmd_word = words.pop_front()
for cmd in command_handler.valid_commands:
if cmd[0] == cmd_word:
if words.size() != cmd[1].size():
output_text(str('Failure executing command "', cmd_word,
'", expected ', cmd[1].size(), ' parameters'))
return
for i in range(words.size()):
if not check_type(words[i], cmd[1][i]):
output_text(str('Failure executing command "', cmd_word, '", parameter ', (i + 1),
' ("', words[i], '") is of the wrong type'))
return
output_text(command_handler.callv(cmd_word, words))
return
output_text(str('Command: "', cmd_word, '" does not exist'))
func check_type(string: String, type):
if type == command_handler.ARG_INT:
return string.is_valid_integer()
if type == command_handler.ARG_FLOAT:
return string.is_valid_float()
if type == command_handler.ARG_STRING:
return true
if type == command_handler.ARG_BOOL:
return (string == "true" or string == "false")
return false
func output_text(text):
output_box.text = text + "\n"
output_box.text = str(output_box.text + "\n", text)
func _on_Input_text_entered(new_text):
input_box.clear()
output_text(new_text)
process_command(new_text)