Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
Dennis Ploeger
2021-11-21 22:18:15 +01:00
committed by GitHub
parent ce2f4247a5
commit c2bbefedd3
7 changed files with 39 additions and 18 deletions

View File

@@ -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)

View File

@@ -29,6 +29,11 @@ func configure() -> ESCCommandArgumentDescriptor:
null,
null,
""
],
[
true,
false,
true
]
)

View File

@@ -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",

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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"