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.cpp37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/party.cpp b/src/party.cpp index b717281..8b0c34e 100644 --- a/src/party.cpp +++ b/src/party.cpp
@@ -2,6 +2,7 @@
2#include "consts.h" 2#include "consts.h"
3#include "mixer.h" 3#include "mixer.h"
4#include "transform_system.h" 4#include "transform_system.h"
5#include "animation_system.h"
5 6
6void Party::addMember(Game& game, int spriteId) { 7void Party::addMember(Game& game, int spriteId) {
7 int index = members_.size(); 8 int index = members_.size();
@@ -12,12 +13,12 @@ void Party::addMember(Game& game, int spriteId) {
12 if (index > 0) { 13 if (index > 0) {
13 const Sprite& sprite = game.getSprite(spriteId); 14 const Sprite& sprite = game.getSprite(spriteId);
14 15
15 newMember.movement = std::deque<Movement>(PARTY_FRAME_DELAY * index, {.pos = sprite.loc(), .dir = sprite.getDirection()}); 16 newMember.movement = std::deque<Movement>(PARTY_FRAME_DELAY * index, {.pos = sprite.loc, .dir = sprite.dir});
16 } 17 }
17 18
18 members_.push_back(std::move(newMember)); 19 members_.push_back(std::move(newMember));
19 20
20 game.setSpriteState(spriteId, "still"); 21 game.getSystem<AnimationSystem>().setSpriteAnimation(spriteId, "still");
21} 22}
22 23
23void Party::move(Game& game, Mixer& mixer, const Input& keystate) { 24void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
@@ -33,7 +34,7 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
33 } else { 34 } else {
34 if (state_ == State::Normal) { 35 if (state_ == State::Normal) {
35 for (int i = 0; i < members_.size(); i++) { 36 for (int i = 0; i < members_.size(); i++) {
36 game.setSpriteState(members_[i].spriteId, "still"); 37 game.getSystem<AnimationSystem>().setSpriteAnimation(members_[i].spriteId, "still");
37 } 38 }
38 } 39 }
39 40
@@ -72,16 +73,16 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
72 lastDir_ = dir; 73 lastDir_ = dir;
73 74
74 const Sprite& p1 = game.getSprite(members_[0].spriteId); 75 const Sprite& p1 = game.getSprite(members_[0].spriteId);
75 vec2i pLoc = p1.loc(); 76 vec2i pLoc = p1.loc;
76 77
77 if (state_ == State::Crouching) { 78 if (state_ == State::Crouching) {
78 for (int i = 0; i < members_.size(); i++) { 79 for (int i = 0; i < members_.size(); i++) {
79 game.setSpriteDirection(members_[i].spriteId, dir); 80 game.getSystem<AnimationSystem>().setSpriteDirection(members_[i].spriteId, dir);
80 } 81 }
81 82
82 return; 83 return;
83 } else { 84 } else {
84 game.setSpriteDirection(members_[0].spriteId, dir); 85 game.getSystem<AnimationSystem>().setSpriteDirection(members_[0].spriteId, dir);
85 } 86 }
86 87
87 int speed = MOVEMENT_SPEED; 88 int speed = MOVEMENT_SPEED;
@@ -89,7 +90,7 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
89 speed *= 2; 90 speed *= 2;
90 } else { 91 } else {
91 for (int i = 0; i < members_.size(); i++) { 92 for (int i = 0; i < members_.size(); i++) {
92 game.setSpriteState(members_[i].spriteId, "walk"); 93 game.getSystem<AnimationSystem>().setSpriteAnimation(members_[i].spriteId, "walk");
93 } 94 }
94 } 95 }
95 96
@@ -101,9 +102,9 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
101 102
102 const vec2i UL_COL_BOX = { 8, 8 }; 103 const vec2i UL_COL_BOX = { 8, 8 };
103 const vec2i DR_COL_BOX = { 4, 0 }; 104 const vec2i DR_COL_BOX = { 4, 0 };
104 vec2i oldColPosUL = (p1.loc() - UL_COL_BOX) / map.getTileSize(); 105 vec2i oldColPosUL = (p1.loc - UL_COL_BOX) / map.getTileSize();
105 vec2i newColPosUL = (pLoc - UL_COL_BOX) / map.getTileSize(); 106 vec2i newColPosUL = (pLoc - UL_COL_BOX) / map.getTileSize();
106 vec2i oldColPosDR = (p1.loc() + DR_COL_BOX) / map.getTileSize(); 107 vec2i oldColPosDR = (p1.loc + DR_COL_BOX) / map.getTileSize();
107 vec2i newColPosDR = (pLoc + DR_COL_BOX) / map.getTileSize(); 108 vec2i newColPosDR = (pLoc + DR_COL_BOX) / map.getTileSize();
108 109
109 if (dirHasDir(dir, Direction::right) && 110 if (dirHasDir(dir, Direction::right) &&
@@ -111,7 +112,7 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
111 for (int y = newColPosUL.y(); y <= newColPosDR.y(); y++) { 112 for (int y = newColPosUL.y(); y <= newColPosDR.y(); y++) {
112 if (map.isBlocked(newColPosDR.x(), y)) { 113 if (map.isBlocked(newColPosDR.x(), y)) {
113 blocked = true; 114 blocked = true;
114 pLoc.x() = p1.loc().x();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1; 115 pLoc.x() = p1.loc.x();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1;
115 break; 116 break;
116 } 117 }
117 } 118 }
@@ -122,7 +123,7 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
122 for (int y = newColPosUL.y(); y <= newColPosDR.y(); y++) { 123 for (int y = newColPosUL.y(); y <= newColPosDR.y(); y++) {
123 if (map.isBlocked(newColPosUL.x(), y)) { 124 if (map.isBlocked(newColPosUL.x(), y)) {
124 blocked = true; 125 blocked = true;
125 pLoc.x() = p1.loc().x();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1; 126 pLoc.x() = p1.loc.x();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1;
126 break; 127 break;
127 } 128 }
128 } 129 }
@@ -133,7 +134,7 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
133 for (int x = newColPosUL.x(); x <= newColPosDR.x(); x++) { 134 for (int x = newColPosUL.x(); x <= newColPosDR.x(); x++) {
134 if (map.isBlocked(x, newColPosDR.y())) { 135 if (map.isBlocked(x, newColPosDR.y())) {
135 blocked = true; 136 blocked = true;
136 pLoc.y() = p1.loc().y();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1; 137 pLoc.y() = p1.loc.y();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1;
137 break; 138 break;
138 } 139 }
139 } 140 }
@@ -144,7 +145,7 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
144 for (int x = newColPosUL.x(); x <= newColPosDR.x(); x++) { 145 for (int x = newColPosUL.x(); x <= newColPosDR.x(); x++) {
145 if (map.isBlocked(x, newColPosUL.y())) { 146 if (map.isBlocked(x, newColPosUL.y())) {
146 blocked = true; 147 blocked = true;
147 pLoc.y() = p1.loc().y();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1; 148 pLoc.y() = p1.loc.y();//(newColPosDR * map.getTileSize() - (collisionBox / 2)).x() - 1;
148 break; 149 break;
149 } 150 }
150 } 151 }
@@ -156,14 +157,14 @@ void Party::move(Game& game, Mixer& mixer, const Input& keystate) {
156 } 157 }
157 158
158 // Move everything 159 // Move everything
159 if (pLoc != p1.loc()) { 160 if (pLoc != p1.loc) {
160 game.getSystem<TransformSystem>().moveSprite(members_[0].spriteId, pLoc); 161 game.getSystem<TransformSystem>().moveSprite(members_[0].spriteId, pLoc);
161 162
162 for (int i = 1; i < members_.size(); i++) { 163 for (int i = 1; i < members_.size(); i++) {
163 const Sprite& pNext = game.getSprite(members_[i].spriteId); 164 const Sprite& pNext = game.getSprite(members_[i].spriteId);
164 const Movement& posdir = members_[i].movement.front(); 165 const Movement& posdir = members_[i].movement.front();
165 game.getSystem<TransformSystem>().moveSprite(members_[i].spriteId, posdir.pos); 166 game.getSystem<TransformSystem>().moveSprite(members_[i].spriteId, posdir.pos);
166 game.setSpriteDirection(members_[i].spriteId, posdir.dir); 167 game.getSystem<AnimationSystem>().setSpriteDirection(members_[i].spriteId, posdir.dir);
167 168
168 members_[i].movement.pop_front(); 169 members_[i].movement.pop_front();
169 members_[i].movement.push_back({.pos = pLoc, .dir = dir}); 170 members_[i].movement.push_back({.pos = pLoc, .dir = dir});
@@ -178,7 +179,7 @@ void Party::beginCrouch(Game& game) {
178 state_ = State::Crouching; 179 state_ = State::Crouching;
179 180
180 for (int i = 0; i < members_.size(); i++) { 181 for (int i = 0; i < members_.size(); i++) {
181 game.setSpriteState(members_[i].spriteId, "crouch"); 182 game.getSystem<AnimationSystem>().setSpriteAnimation(members_[i].spriteId, "crouch");
182 } 183 }
183 } 184 }
184} 185}
@@ -188,7 +189,7 @@ void Party::endCrouch(Game& game) {
188 state_ = State::Running; 189 state_ = State::Running;
189 190
190 for (int i = 0; i < members_.size(); i++) { 191 for (int i = 0; i < members_.size(); i++) {
191 game.setSpriteState(members_[i].spriteId, "run"); 192 game.getSystem<AnimationSystem>().setSpriteAnimation(members_[i].spriteId, "run");
192 193
193 // Halve the movement buffer for the followers. 194 // Halve the movement buffer for the followers.
194 if (i > 0) { 195 if (i > 0) {
@@ -212,7 +213,7 @@ void Party::stopRunning(Game& game) {
212 // Double the movement buffer for the followers. 213 // Double the movement buffer for the followers.
213 for (int i = 1; i < members_.size(); i++) { 214 for (int i = 1; i < members_.size(); i++) {
214 std::deque<Movement> newMove; 215 std::deque<Movement> newMove;
215 vec2i lastPos = game.getSprite(members_[i].spriteId).loc(); 216 vec2i lastPos = game.getSprite(members_[i].spriteId).loc;
216 217
217 while (!members_[i].movement.empty()) { 218 while (!members_[i].movement.empty()) {
218 Movement m1 = members_[i].movement.front(); 219 Movement m1 = members_[i].movement.front();