diff options
| -rw-r--r-- | res/kumatora.png | bin | 0 -> 1628 bytes | |||
| -rw-r--r-- | src/consts.h | 1 | ||||
| -rw-r--r-- | src/main.cpp | 8 | ||||
| -rw-r--r-- | src/party.cpp | 21 | ||||
| -rw-r--r-- | src/party.h | 4 | ||||
| -rw-r--r-- | src/sprite.cpp | 3 | ||||
| -rw-r--r-- | src/sprite.h | 4 |
7 files changed, 32 insertions, 9 deletions
| diff --git a/res/kumatora.png b/res/kumatora.png new file mode 100644 index 0000000..c355ee9 --- /dev/null +++ b/res/kumatora.png | |||
| Binary files differ | |||
| diff --git a/src/consts.h b/src/consts.h index 96176a4..d6bf90b 100644 --- a/src/consts.h +++ b/src/consts.h | |||
| @@ -5,5 +5,6 @@ const int GAME_WIDTH = 640; | |||
| 5 | const int GAME_HEIGHT = 480; | 5 | const int GAME_HEIGHT = 480; |
| 6 | 6 | ||
| 7 | const int MOVEMENT_SPEED = 4; | 7 | const int MOVEMENT_SPEED = 4; |
| 8 | const int PARTY_FRAME_DELAY = 20;// / MOVEMENT_SPEED; | ||
| 8 | 9 | ||
| 9 | #endif /* end of include guard: CONSTS_H_9561E49C */ | 10 | #endif /* end of include guard: CONSTS_H_9561E49C */ |
| diff --git a/src/main.cpp b/src/main.cpp index b282a2e..5a4373b 100644 --- a/src/main.cpp +++ b/src/main.cpp | |||
| @@ -5,12 +5,14 @@ | |||
| 5 | 5 | ||
| 6 | void loop(Renderer& renderer) { | 6 | void loop(Renderer& renderer) { |
| 7 | Game game; | 7 | Game game; |
| 8 | int playerSpriteId = game.addSprite(Sprite("../res/lucas.png", renderer)); | ||
| 9 | |||
| 10 | Input keystate; | 8 | Input keystate; |
| 11 | 9 | ||
| 10 | int kumaSprite = game.addSprite(Sprite("../res/kumatora.png", renderer, 17, 31)); | ||
| 11 | int lucasSprite = game.addSprite(Sprite("../res/lucas.png", renderer, 17, 27)); | ||
| 12 | |||
| 12 | Party party; | 13 | Party party; |
| 13 | party.addMember(playerSpriteId); | 14 | party.addMember(game, lucasSprite); |
| 15 | party.addMember(game, kumaSprite); | ||
| 14 | 16 | ||
| 15 | renderer.render(game); | 17 | renderer.render(game); |
| 16 | 18 | ||
| diff --git a/src/party.cpp b/src/party.cpp index 559aacb..6c003b8 100644 --- a/src/party.cpp +++ b/src/party.cpp | |||
| @@ -1,10 +1,20 @@ | |||
| 1 | #include "party.h" | 1 | #include "party.h" |
| 2 | #include "consts.h" | 2 | #include "consts.h" |
| 3 | 3 | ||
| 4 | void Party::addMember(int spriteId) { | 4 | void Party::addMember(Game& game, int spriteId) { |
| 5 | int index = members_.size(); | ||
| 6 | |||
| 5 | PartyMember newMember; | 7 | PartyMember newMember; |
| 6 | newMember.spriteId = spriteId; | 8 | newMember.spriteId = spriteId; |
| 7 | 9 | ||
| 10 | if (index > 0) { | ||
| 11 | Sprite& sprite = game.getSprite(spriteId); | ||
| 12 | |||
| 13 | for (int i = 0; i < PARTY_FRAME_DELAY * index; i++) { | ||
| 14 | newMember.nextPosition.push_back(sprite.loc()); | ||
| 15 | } | ||
| 16 | } | ||
| 17 | |||
| 8 | members_.push_back(std::move(newMember)); | 18 | members_.push_back(std::move(newMember)); |
| 9 | } | 19 | } |
| 10 | 20 | ||
| @@ -36,7 +46,14 @@ void Party::move(Game& game, const Input& keystate) { | |||
| 36 | pLoc.x() += MOVEMENT_SPEED; | 46 | pLoc.x() += MOVEMENT_SPEED; |
| 37 | } | 47 | } |
| 38 | 48 | ||
| 39 | if (pLoc != p1.loc()) { | 49 | if (keystate.up || keystate.down || keystate.left || keystate.right) { |
| 40 | p1.loc() = pLoc; | 50 | p1.loc() = pLoc; |
| 51 | |||
| 52 | for (int i = 1; i < members_.size(); i++) { | ||
| 53 | Sprite& pNext = game.getSprite(members_[i].spriteId); | ||
| 54 | members_[i].nextPosition.push_back(pLoc); | ||
| 55 | pNext.loc() = members_[i].nextPosition.front(); | ||
| 56 | members_[i].nextPosition.pop_front(); | ||
| 57 | } | ||
| 41 | } | 58 | } |
| 42 | } \ No newline at end of file | 59 | } \ No newline at end of file |
| diff --git a/src/party.h b/src/party.h index 18c57b5..2a6ffc9 100644 --- a/src/party.h +++ b/src/party.h | |||
| @@ -1,13 +1,14 @@ | |||
| 1 | #ifndef PARTY_H_826F91BA | 1 | #ifndef PARTY_H_826F91BA |
| 2 | #define PARTY_H_826F91BA | 2 | #define PARTY_H_826F91BA |
| 3 | 3 | ||
| 4 | #include <deque> | ||
| 4 | #include <vector> | 5 | #include <vector> |
| 5 | #include "game.h" | 6 | #include "game.h" |
| 6 | 7 | ||
| 7 | class Party { | 8 | class Party { |
| 8 | public: | 9 | public: |
| 9 | 10 | ||
| 10 | void addMember(int spriteId); | 11 | void addMember(Game& game, int spriteId); |
| 11 | 12 | ||
| 12 | void move(Game& game, const Input& keystate); | 13 | void move(Game& game, const Input& keystate); |
| 13 | 14 | ||
| @@ -15,6 +16,7 @@ private: | |||
| 15 | 16 | ||
| 16 | struct PartyMember { | 17 | struct PartyMember { |
| 17 | int spriteId; | 18 | int spriteId; |
| 19 | std::deque<vec2i> nextPosition; | ||
| 18 | }; | 20 | }; |
| 19 | 21 | ||
| 20 | std::vector<PartyMember> members_; | 22 | std::vector<PartyMember> members_; |
| diff --git a/src/sprite.cpp b/src/sprite.cpp index 0059f70..c8c4656 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #include "sprite.h" | 1 | #include "sprite.h" |
| 2 | #include <SDL_image.h> | 2 | #include <SDL_image.h> |
| 3 | 3 | ||
| 4 | Sprite::Sprite(std::string_view filename, Renderer& renderer) { | 4 | Sprite::Sprite(std::string_view filename, Renderer& renderer, int width, int height) { |
| 5 | textureId_ = renderer.loadImageFromFile(filename); | 5 | textureId_ = renderer.loadImageFromFile(filename); |
| 6 | size_ = { width*4, height*4 }; | ||
| 6 | } \ No newline at end of file | 7 | } \ No newline at end of file |
| diff --git a/src/sprite.h b/src/sprite.h index c45e208..1f917d9 100644 --- a/src/sprite.h +++ b/src/sprite.h | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | class Sprite { | 8 | class Sprite { |
| 9 | public: | 9 | public: |
| 10 | 10 | ||
| 11 | Sprite(std::string_view filename, Renderer& renderer); | 11 | Sprite(std::string_view filename, Renderer& renderer, int width, int height); |
| 12 | 12 | ||
| 13 | int getTextureId() const { | 13 | int getTextureId() const { |
| 14 | return textureId_; | 14 | return textureId_; |
| @@ -26,7 +26,7 @@ private: | |||
| 26 | 26 | ||
| 27 | int textureId_; | 27 | int textureId_; |
| 28 | vec2i loc_ { 0, 0 }; | 28 | vec2i loc_ { 0, 0 }; |
| 29 | vec2i size_ { 17*4, 27 * 4 }; | 29 | vec2i size_; |
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | #endif /* end of include guard: SPRITE_H_70503825 */ | 32 | #endif /* end of include guard: SPRITE_H_70503825 */ |
