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