Issue 58 (#453)
Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
@@ -42,7 +42,7 @@ func _test_basic() -> bool:
|
||||
assert(subject.name == "say")
|
||||
assert(subject.parameters.size() == 2)
|
||||
assert(subject.parameters[0] == "player")
|
||||
assert(subject.parameters[1] == "Test")
|
||||
assert(subject.parameters[1] == '"Test"')
|
||||
|
||||
subject = script.events["test"].statements[0].statements[1]
|
||||
assert(subject is ESCGroup)
|
||||
@@ -55,14 +55,14 @@ func _test_basic() -> bool:
|
||||
assert(subject.name == "say")
|
||||
assert(subject.parameters.size() == 2)
|
||||
assert(subject.parameters[0] == "player")
|
||||
assert(subject.parameters[1] == "Test2 BLANK")
|
||||
assert(subject.parameters[1] == '"Test2 BLANK"')
|
||||
|
||||
subject = script.events["test"].statements[0].statements[2]
|
||||
assert(subject is ESCCommand)
|
||||
assert(subject.name == "say")
|
||||
assert(subject.parameters.size() == 2)
|
||||
assert(subject.parameters[0] == "player")
|
||||
assert(subject.parameters[1] == "Test3")
|
||||
assert(subject.parameters[1] == '"Test3"')
|
||||
assert(subject.conditions.size() == 1)
|
||||
assert(subject.conditions[0].flag == "test2")
|
||||
|
||||
@@ -77,12 +77,12 @@ func _test_basic() -> bool:
|
||||
subject = script.events["test"].statements[1].statements[1]
|
||||
assert(subject is ESCCommand)
|
||||
assert(subject.name == "say")
|
||||
assert(subject.parameters[1] == "Test 6")
|
||||
assert(subject.parameters[1] == '"Test 6"')
|
||||
|
||||
subject = script.events["test"].statements[1].statements[2]
|
||||
assert(subject is ESCCommand)
|
||||
assert(subject.name == "say")
|
||||
assert(subject.parameters[1] == "TEST:Test 7")
|
||||
assert(subject.parameters[1] == "TEST:\"Test 7\"")
|
||||
|
||||
return true
|
||||
|
||||
@@ -245,11 +245,11 @@ func _test_dialog() -> bool:
|
||||
assert(subject[1] is ESCCommand)
|
||||
assert(subject[1].name == "say")
|
||||
assert(subject[1].parameters.size() == 2)
|
||||
assert(subject[1].parameters[1] == "testb")
|
||||
assert(subject[1].parameters[1] == '"testb"')
|
||||
assert(subject[2] is ESCCommand)
|
||||
assert(subject[2].name == "say")
|
||||
assert(subject[2].parameters.size() == 2)
|
||||
assert(subject[2].parameters[1] == "testb?")
|
||||
assert(subject[2].parameters[1] == '"testb?"')
|
||||
|
||||
subject = script.events["test"].statements[0].options[1]
|
||||
assert(subject is ESCDialogOption)
|
||||
|
||||
@@ -29,6 +29,11 @@ func configure() -> ESCCommandArgumentDescriptor:
|
||||
null,
|
||||
null,
|
||||
""
|
||||
],
|
||||
[
|
||||
true,
|
||||
false,
|
||||
true
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@@ -219,9 +219,7 @@ func _compile(lines: Array) -> Array:
|
||||
returned.append(dialog_option)
|
||||
elif command_regex.search(line):
|
||||
var command = ESCCommand.new(line)
|
||||
if command.is_valid():
|
||||
escoria.logger.trace("Line is the command %s" % command.name)
|
||||
returned.append(command)
|
||||
returned.append(command)
|
||||
else:
|
||||
escoria.logger.report_errors(
|
||||
"Invalid ESC line detected",
|
||||
|
||||
@@ -44,18 +44,18 @@ func _init(command_string):
|
||||
for parameter in parsed_parameters.split(" "):
|
||||
if parameter.begins_with('"') and parameter.ends_with('"'):
|
||||
parameters.append(
|
||||
parameter.substr(1, parameter.length() - 2)
|
||||
parameter
|
||||
)
|
||||
elif ":" in parameter and '"' in parameter:
|
||||
quote_open = true
|
||||
parameter_values.append(parameter.replace('"', ''))
|
||||
parameter_values.append(parameter)
|
||||
elif parameter.begins_with('"'):
|
||||
quote_open = true
|
||||
parameter_values.append(parameter.substr(1))
|
||||
parameter_values.append(parameter)
|
||||
elif parameter.ends_with('"'):
|
||||
quote_open = false
|
||||
parameter_values.append(
|
||||
parameter.substr(0, len(parameter) - 1)
|
||||
parameter.substr(0, len(parameter))
|
||||
)
|
||||
parameters.append(parameter_values.join(" "))
|
||||
parameter_values.resize(0)
|
||||
|
||||
@@ -14,13 +14,22 @@ var types: Array = []
|
||||
# The default values for the arguments
|
||||
var defaults: Array = []
|
||||
|
||||
# Wether to strip quotes on specific arguments
|
||||
var strip_quotes: Array = []
|
||||
|
||||
|
||||
# Initialize the descriptor
|
||||
func _init(p_min_args: int = 0, p_types: Array = [], p_defaults: Array = []):
|
||||
func _init(
|
||||
p_min_args: int = 0,
|
||||
p_types: Array = [],
|
||||
p_defaults: Array = [],
|
||||
p_strip_quotes: Array = [true]
|
||||
):
|
||||
min_args = p_min_args
|
||||
types = p_types
|
||||
defaults = p_defaults
|
||||
|
||||
strip_quotes = p_strip_quotes
|
||||
|
||||
|
||||
# Combine the default argument values with the given arguments
|
||||
func prepare_arguments(arguments: Array) -> Array:
|
||||
@@ -30,7 +39,16 @@ func prepare_arguments(arguments: Array) -> Array:
|
||||
complete_arguments[index] = escoria.utils.get_typed_value(
|
||||
arguments[index]
|
||||
)
|
||||
var strip = strip_quotes[0]
|
||||
if strip_quotes.size() == complete_arguments.size():
|
||||
strip = strip_quotes[index]
|
||||
|
||||
if strip and typeof(complete_arguments[index]) == TYPE_STRING:
|
||||
complete_arguments[index] = complete_arguments[index].replace(
|
||||
'"',
|
||||
''
|
||||
)
|
||||
|
||||
return complete_arguments
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ class_name ESCDialogPlayer
|
||||
|
||||
|
||||
# A regular expression that separates the translation key from the text
|
||||
const KEYTEXT_REGEX = "^((?<key>[^:]+):)?(?<text>.+)"
|
||||
const KEYTEXT_REGEX = "^((?<key>[^:]+):)?\"(?<text>.+)\""
|
||||
|
||||
|
||||
# Emitted when an answer as chosem
|
||||
|
||||
@@ -690,7 +690,7 @@ sound/sfx_volume=1
|
||||
sound/speech_volume=1
|
||||
sound/master_volume=1
|
||||
main/command_directories=[ "res://addons/escoria-core/game/core-scripts/esc/commands" ]
|
||||
debug/log_level="DEBUG"
|
||||
debug/log_level="TRACE"
|
||||
platform/skip_cache=false
|
||||
platform/skip_cache.mobile=true
|
||||
ui/items_autoregister_path="res://game/items/inventory"
|
||||
|
||||
Reference in New Issue
Block a user