2024-12-09 02:23:13 +00:00
|
|
|
class_name Command
|
|
|
|
|
|
|
|
var name: String
|
|
|
|
var callable: Callable
|
|
|
|
var arg_count: int
|
|
|
|
var description: String
|
|
|
|
var arg_names: Array[String]
|
|
|
|
|
|
|
|
func _init(_name:String, _callable:Callable, _arg_names:Array[String], _description:String):
|
|
|
|
self.name = _name.to_lower()
|
|
|
|
self.callable = _callable
|
|
|
|
self.arg_names = _arg_names
|
|
|
|
self.description = _description
|
|
|
|
|
|
|
|
func INVOKE(args:Array[String] = []):
|
|
|
|
var arg_dict: Dictionary = {}
|
|
|
|
if (arg_names.size() != args.size()):
|
2024-12-09 02:29:19 +00:00
|
|
|
GameConsole.log_error("Command needs " + str(arg_names.size()) + " arguments but recieved " + str(args.size()) + ".")
|
2024-12-09 02:23:13 +00:00
|
|
|
return
|
|
|
|
else:
|
|
|
|
for i in args.size():
|
|
|
|
arg_dict[arg_names[i]] = args[i]
|
|
|
|
|
|
|
|
if arg_dict.size() == 0:
|
|
|
|
callable.call()
|
|
|
|
return
|
|
|
|
else:
|
|
|
|
callable.call(arg_dict)
|