summary refs log tree commit diff stats
path: root/src/party.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/party.cpp')
-rw-r--r--src/party.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/party.cpp b/src/party.cpp index 1ff4bb4..19b9557 100644 --- a/src/party.cpp +++ b/src/party.cpp
@@ -12,6 +12,7 @@ void Party::addMember(Game& game, int spriteId) {
12 12
13 for (int i = 0; i < PARTY_FRAME_DELAY * index; i++) { 13 for (int i = 0; i < PARTY_FRAME_DELAY * index; i++) {
14 newMember.nextPosition.push_back(sprite.loc()); 14 newMember.nextPosition.push_back(sprite.loc());
15 newMember.nextDirection.push_back(sprite.getDirection());
15 } 16 }
16 } 17 }
17 18
@@ -25,35 +26,67 @@ void Party::move(Game& game, const Input& keystate) {
25 26
26 const Sprite& p1 = game.getSprite(members_[0].spriteId); 27 const Sprite& p1 = game.getSprite(members_[0].spriteId);
27 vec2i pLoc = p1.loc(); 28 vec2i pLoc = p1.loc();
29 Direction dir = Direction::left;
28 30
29 if (keystate.up) 31 if (keystate.up)
30 { 32 {
31 pLoc.y() -= MOVEMENT_SPEED; 33 pLoc.y() -= MOVEMENT_SPEED;
34 dir = Direction::up;
32 } 35 }
33 36
34 if (keystate.down) 37 if (keystate.down)
35 { 38 {
36 pLoc.y() += MOVEMENT_SPEED; 39 pLoc.y() += MOVEMENT_SPEED;
40 dir = Direction::down;
37 } 41 }
38 42
39 if (keystate.left) 43 if (keystate.left)
40 { 44 {
41 pLoc.x() -= MOVEMENT_SPEED; 45 pLoc.x() -= MOVEMENT_SPEED;
46
47 if (dir == Direction::up) {
48 dir = Direction::up_left;
49 } else if (dir == Direction::down) {
50 dir = Direction::down_left;
51 } else {
52 dir = Direction::left;
53 }
42 } 54 }
43 55
44 if (keystate.right) 56 if (keystate.right)
45 { 57 {
46 pLoc.x() += MOVEMENT_SPEED; 58 pLoc.x() += MOVEMENT_SPEED;
59
60 if (dir == Direction::up) {
61 dir = Direction::up_right;
62 } else if (dir == Direction::down) {
63 dir = Direction::down_right;
64 } else {
65 dir = Direction::right;
66 }
47 } 67 }
48 68
49 if (keystate.up || keystate.down || keystate.left || keystate.right) { 69 if (keystate.up || keystate.down || keystate.left || keystate.right) {
70 for (int i = 0; i < members_.size(); i++) {
71 game.setSpriteWalking(members_[i].spriteId, true);
72 }
73
50 game.moveSprite(members_[0].spriteId, pLoc); 74 game.moveSprite(members_[0].spriteId, pLoc);
75 game.setSpriteDirection(members_[0].spriteId, dir);
51 76
52 for (int i = 1; i < members_.size(); i++) { 77 for (int i = 1; i < members_.size(); i++) {
53 const Sprite& pNext = game.getSprite(members_[i].spriteId); 78 const Sprite& pNext = game.getSprite(members_[i].spriteId);
54 members_[i].nextPosition.push_back(pLoc); 79 members_[i].nextPosition.push_back(pLoc);
55 game.moveSprite(members_[i].spriteId, members_[i].nextPosition.front()); 80 game.moveSprite(members_[i].spriteId, members_[i].nextPosition.front());
56 members_[i].nextPosition.pop_front(); 81 members_[i].nextPosition.pop_front();
82
83 members_[i].nextDirection.push_back(dir);
84 game.setSpriteDirection(members_[i].spriteId, members_[i].nextDirection.front());
85 members_[i].nextDirection.pop_front();
86 }
87 } else {
88 for (int i = 0; i < members_.size(); i++) {
89 game.setSpriteWalking(members_[i].spriteId, false);
57 } 90 }
58 } 91 }
59} \ No newline at end of file 92} \ No newline at end of file