diff options
| -rw-r--r-- | res/scripts/common.lua | 4 | ||||
| -rw-r--r-- | src/character_system.cpp | 6 | ||||
| -rw-r--r-- | src/game.cpp | 6 | ||||
| -rw-r--r-- | src/game.h | 2 | ||||
| -rw-r--r-- | src/main.cpp | 2 | ||||
| -rw-r--r-- | src/script_system.cpp | 4 |
6 files changed, 15 insertions, 9 deletions
| diff --git a/res/scripts/common.lua b/res/scripts/common.lua index 9674b2c..23c07cc 100644 --- a/res/scripts/common.lua +++ b/res/scripts/common.lua | |||
| @@ -92,11 +92,9 @@ function ChangeMap(map, warp) | |||
| 92 | local oldState = playerSprite.characterState | 92 | local oldState = playerSprite.characterState |
| 93 | 93 | ||
| 94 | FadeToBlack(150) | 94 | FadeToBlack(150) |
| 95 | loadMap("../res/maps/" .. map .. ".tmx", warp) | 95 | loadMap("../res/maps/" .. map .. ".tmx", warp, direction) |
| 96 | 96 | ||
| 97 | local newPlayerId = getControllableSprite() | 97 | local newPlayerId = getControllableSprite() |
| 98 | SetPartyDirection(newPlayerId, direction) | ||
| 99 | |||
| 100 | if oldState == CharacterState.RUNNING then | 98 | if oldState == CharacterState.RUNNING then |
| 101 | character():startRunning(newPlayerId) | 99 | character():startRunning(newPlayerId) |
| 102 | end | 100 | end |
| diff --git a/src/character_system.cpp b/src/character_system.cpp index 94833a8..781b50d 100644 --- a/src/character_system.cpp +++ b/src/character_system.cpp | |||
| @@ -24,7 +24,11 @@ void CharacterSystem::addSpriteToParty(int leaderId, int followerId) { | |||
| 24 | targetPos = backFollower.loc; | 24 | targetPos = backFollower.loc; |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | Direction toFace = directionFacingPoint(targetPos - follower.loc); | 27 | Direction toFace = leader.dir; |
| 28 | if (targetPos != follower.loc) { | ||
| 29 | toFace = directionFacingPoint(targetPos - follower.loc); | ||
| 30 | } | ||
| 31 | |||
| 28 | for (int i=0; i<PARTY_FRAME_DELAY; i++) { | 32 | for (int i=0; i<PARTY_FRAME_DELAY; i++) { |
| 29 | vec2i tween = ((follower.loc - targetPos) * i) / static_cast<double>(PARTY_FRAME_DELAY) + targetPos; | 33 | vec2i tween = ((follower.loc - targetPos) * i) / static_cast<double>(PARTY_FRAME_DELAY) + targetPos; |
| 30 | follower.trail.push_front({.pos = tween, .dir = toFace}); | 34 | follower.trail.push_front({.pos = tween, .dir = toFace}); |
| diff --git a/src/game.cpp b/src/game.cpp index dc3a5ba..4d44a63 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
| @@ -22,7 +22,7 @@ void Game::clearSprites() { | |||
| 22 | spritesByAlias_.clear(); | 22 | spritesByAlias_.clear(); |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | void Game::loadMap(std::string filename, std::string warpPoint) { | 25 | void Game::loadMap(std::string filename, std::string warpPoint, Direction dir) { |
| 26 | clearSprites(); | 26 | clearSprites(); |
| 27 | 27 | ||
| 28 | map_ = std::make_unique<Map>(filename); | 28 | map_ = std::make_unique<Map>(filename); |
| @@ -33,22 +33,26 @@ void Game::loadMap(std::string filename, std::string warpPoint) { | |||
| 33 | getSystem<TransformSystem>().initSprite(lucasSprite, warpLoc); | 33 | getSystem<TransformSystem>().initSprite(lucasSprite, warpLoc); |
| 34 | getSystem<TransformSystem>().setUpCollision(lucasSprite, {-8, -8}, {12, 8}, true); | 34 | getSystem<TransformSystem>().setUpCollision(lucasSprite, {-8, -8}, {12, 8}, true); |
| 35 | getSystem<AnimationSystem>().initSprite(lucasSprite, "../res/sprites/lucas_anim.txt"); | 35 | getSystem<AnimationSystem>().initSprite(lucasSprite, "../res/sprites/lucas_anim.txt"); |
| 36 | getSystem<AnimationSystem>().setSpriteDirection(lucasSprite, dir); | ||
| 36 | getSprite(lucasSprite).controllable = true; | 37 | getSprite(lucasSprite).controllable = true; |
| 37 | getSystem<CharacterSystem>().initSprite(lucasSprite); | 38 | getSystem<CharacterSystem>().initSprite(lucasSprite); |
| 38 | 39 | ||
| 39 | int kumaSprite = emplaceSprite("kuma"); | 40 | int kumaSprite = emplaceSprite("kuma"); |
| 40 | getSystem<TransformSystem>().initSprite(kumaSprite, warpLoc); | 41 | getSystem<TransformSystem>().initSprite(kumaSprite, warpLoc); |
| 41 | getSystem<AnimationSystem>().initSprite(kumaSprite, "../res/sprites/kuma_anim.txt"); | 42 | getSystem<AnimationSystem>().initSprite(kumaSprite, "../res/sprites/kuma_anim.txt"); |
| 43 | getSystem<AnimationSystem>().setSpriteDirection(kumaSprite, dir); | ||
| 42 | getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, kumaSprite); | 44 | getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, kumaSprite); |
| 43 | 45 | ||
| 44 | int dusterSprite = emplaceSprite("duster"); | 46 | int dusterSprite = emplaceSprite("duster"); |
| 45 | getSystem<TransformSystem>().initSprite(dusterSprite, warpLoc); | 47 | getSystem<TransformSystem>().initSprite(dusterSprite, warpLoc); |
| 46 | getSystem<AnimationSystem>().initSprite(dusterSprite, "../res/sprites/duster_anim.txt"); | 48 | getSystem<AnimationSystem>().initSprite(dusterSprite, "../res/sprites/duster_anim.txt"); |
| 49 | getSystem<AnimationSystem>().setSpriteDirection(dusterSprite, dir); | ||
| 47 | getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, dusterSprite); | 50 | getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, dusterSprite); |
| 48 | 51 | ||
| 49 | int boneySprite = emplaceSprite("boney"); | 52 | int boneySprite = emplaceSprite("boney"); |
| 50 | getSystem<TransformSystem>().initSprite(boneySprite, warpLoc); | 53 | getSystem<TransformSystem>().initSprite(boneySprite, warpLoc); |
| 51 | getSystem<AnimationSystem>().initSprite(boneySprite, "../res/sprites/boney_anim.txt"); | 54 | getSystem<AnimationSystem>().initSprite(boneySprite, "../res/sprites/boney_anim.txt"); |
| 55 | getSystem<AnimationSystem>().setSpriteDirection(boneySprite, dir); | ||
| 52 | getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, boneySprite); | 56 | getSystem<CharacterSystem>().addSpriteToParty(lucasSprite, boneySprite); |
| 53 | 57 | ||
| 54 | for (const Prototype& p : map_->getPrototypes()) { | 58 | for (const Prototype& p : map_->getPrototypes()) { |
| diff --git a/src/game.h b/src/game.h index bb88dec..84114ca 100644 --- a/src/game.h +++ b/src/game.h | |||
| @@ -73,7 +73,7 @@ public: | |||
| 73 | }); | 73 | }); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | void loadMap(std::string filename, std::string warpPoint); | 76 | void loadMap(std::string filename, std::string warpPoint, Direction dir); |
| 77 | 77 | ||
| 78 | const Map& getMap() const { return *map_; } | 78 | const Map& getMap() const { return *map_; } |
| 79 | 79 | ||
| diff --git a/src/main.cpp b/src/main.cpp index 8487077..ddc8df2 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
| @@ -22,7 +22,7 @@ void loop(Renderer& renderer) { | |||
| 22 | game.emplaceSystem<CameraSystem>(); | 22 | game.emplaceSystem<CameraSystem>(); |
| 23 | game.emplaceSystem<MessageSystem>(); | 23 | game.emplaceSystem<MessageSystem>(); |
| 24 | 24 | ||
| 25 | game.loadMap("../res/maps/map1.tmx", "spawn"); | 25 | game.loadMap("../res/maps/map1.tmx", "spawn", Direction::down); |
| 26 | 26 | ||
| 27 | renderer.render(game); | 27 | renderer.render(game); |
| 28 | 28 | ||
| diff --git a/src/script_system.cpp b/src/script_system.cpp index d8d93e3..e388c6e 100644 --- a/src/script_system.cpp +++ b/src/script_system.cpp | |||
| @@ -88,8 +88,8 @@ ScriptSystem::ScriptSystem(Game& game) : game_(game) { | |||
| 88 | 88 | ||
| 89 | engine_.set_function( | 89 | engine_.set_function( |
| 90 | "loadMap", | 90 | "loadMap", |
| 91 | [&] (std::string filename, std::string warpPoint) { | 91 | [&] (std::string filename, std::string warpPoint, Direction dir) { |
| 92 | game_.loadMap(filename, warpPoint); | 92 | game_.loadMap(filename, warpPoint, dir); |
| 93 | }); | 93 | }); |
| 94 | 94 | ||
| 95 | engine_.set_function( | 95 | engine_.set_function( |
