feat: Keep current animations resource (#459)

Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
Dennis Ploeger
2021-11-23 22:19:24 +01:00
committed by GitHub
parent 4f07278a73
commit 7963f03087
13 changed files with 374 additions and 162 deletions

View File

@@ -46,5 +46,22 @@ func validate(arguments: Array):
func run(command_params: Array) -> int:
(escoria.object_manager.get_object(command_params[0]).node as ESCPlayer)\
.animations = load(command_params[1])
if not escoria.globals_manager.has(
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES
):
escoria.globals_manager.set_global(
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES,
{},
true
)
var animations = escoria.globals_manager.get_global(
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES
)
animations[command_params[0]] = command_params[1]
escoria.globals_manager.set_global(
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES,
animations,
true
)
return ESCExecution.RC_OK

View File

@@ -35,7 +35,7 @@ func validate(arguments: Array):
# Run the command
func run(command_params: Array) -> int:
escoria.object_manager.get_object(command_params[1]).node.set_state(
escoria.object_manager.get_object(command_params[0]).node.set_state(
"off"
)
return ESCExecution.RC_OK

View File

@@ -5,6 +5,9 @@ extends Resource
class_name ESCGlobalsManager
const GLOBAL_ANIMATION_RESOURCES = "ANIMATION_RESOURCES"
# Emitted when a global is changed
signal global_changed(global, old_value, new_value)
@@ -12,7 +15,8 @@ signal global_changed(global, old_value, new_value)
# A list of reserved globals which can not be overridden
const RESERVED_GLOBALS = [
"ESC_LAST_SCENE",
"BYPASS_LAST_SCENE"
"BYPASS_LAST_SCENE",
"ANIMATION_RESOURCES"
]
@@ -104,6 +108,4 @@ func set_global_wildcard(pattern: String, value) -> void:
func save_game(p_savegame: ESCSaveGame) -> void:
p_savegame.globals = {}
for g in _globals:
if g in RESERVED_GLOBALS:
continue
p_savegame.globals[g] = _globals[g]

View File

@@ -13,6 +13,7 @@ export(String, FILE, "*.ogg,*.mp3,*.wav") var switch_sound = ""
func _enter_tree():
is_exit = true
player_orients_on_arrival = false
default_action = "walk"
func _ready():

View File

@@ -95,6 +95,18 @@ func _ready():
),
true
)
if escoria.globals_manager.has(
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES
):
var animations = escoria.globals_manager.get_global(
escoria.globals_manager.GLOBAL_ANIMATION_RESOURCES
)
if player.global_id in animations and \
ResourceLoader.exists(animations[player.global_id]):
player.animations = ResourceLoader.load(
animations[player.global_id]
)
escoria.object_manager.get_object("_camera").node.set_target(player)
for n in get_children():

View File

@@ -184,11 +184,12 @@ func load_game(id: int):
## GLOBALS
for k in save_game.globals.keys():
load_statements.append(
ESCCommand.new("set_global %s \"%s\"\n" \
% [k, save_game.globals[k]])
escoria.globals_manager.set_global(
k,
save_game.globals[k],
true
)
## ROOM
load_statements.append(
ESCCommand.new("change_scene %s true" \
@@ -197,7 +198,8 @@ func load_game(id: int):
## OBJECTS
for object_global_id in save_game.objects.keys():
if save_game.objects[object_global_id].has("active"):
if escoria.object_manager.has(object_global_id) and \
save_game.objects[object_global_id].has("active"):
load_statements.append(ESCCommand.new("set_active %s %s" \
% [object_global_id,
save_game.objects[object_global_id]["active"]])
@@ -230,12 +232,22 @@ func load_game(id: int):
)
if object_global_id in ["_music", "_sound", "_speech"]:
load_statements.append(
ESCCommand.new("play_snd %s %s" % [
save_game.objects[object_global_id]["state"],
object_global_id,
])
)
if save_game.objects[object_global_id]["state"] in [
"default",
"off"
]:
load_statements.append(
ESCCommand.new("stop_snd %s" % [
object_global_id,
])
)
else:
load_statements.append(
ESCCommand.new("play_snd %s %s" % [
save_game.objects[object_global_id]["state"],
object_global_id,
])
)
load_statements.append(
ESCCommand.new(