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