From aac57db782718bf40a7adea15baf8d6b899ea925 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Wed, 17 Feb 2021 20:34:59 -0500 Subject: Made some sprites persist between map changes The player party characters are now initialised at the start of the game and are no longer re-created after every map change. The script system takes care of moving the player into the correct position on the new map. Deleted sprite IDs are now reused the next time a sprite is created, instead of throwing out everything between maps. --- res/scripts/common.lua | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'res/scripts/common.lua') diff --git a/res/scripts/common.lua b/res/scripts/common.lua index 8a9445b..2e6a7e2 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua @@ -178,21 +178,15 @@ function ChangeMap(map, warp) local playerId = getPlayerSprite() local playerSprite = getSprite(playerId) local direction = playerSprite.dir - local oldState = playerSprite.characterState playerSprite.controllable = false FadeToBlack(150) - loadMap(map, warp, direction) - - local newPlayerId = getPlayerSprite() - local newPlayerSprite = getSprite(newPlayerId) - if oldState == CharacterState.RUNNING then - character():startRunning(newPlayerId) - end + loadMap(map) + character():transplantParty(playerId, getWarpPoint(warp), direction) coroutine.yield() RemoveFadeout(150) - newPlayerSprite.controllable = true + playerSprite.controllable = true end function CreateAnimatedSpriteAtPosition(alias, character, x, y, animName, direction, layer) -- cgit 1.4.1