diff options
-rw-r--r-- | include/components.hpp | 22 | ||||
-rw-r--r-- | src/components.cpp | 14 | ||||
-rw-r--r-- | src/player.cpp | 5 |
3 files changed, 23 insertions, 18 deletions
diff --git a/include/components.hpp b/include/components.hpp index 31ff283..d2655c9 100644 --- a/include/components.hpp +++ b/include/components.hpp @@ -92,10 +92,10 @@ struct Solid { }; struct SpriteData { - - SpriteData(uint64_t sid = 0, vec2 offset = 0.0f, vec2 size = 0.0f): + + SpriteData(uint64_t sid = 0, vec2 offset = 0.0f, vec2 size = 0.0f): sheetID(sid), offset(offset), size(size) {} - + uint64_t sheetID; vec2 offset; vec2 size; @@ -108,18 +108,21 @@ struct SpriteData { * Each entity is given a sprite, a sprite can consist of manu frames or pieces to make one. */ struct Sprite { + Sprite(bool left = false) + : faceLeft(left) {} + std::vector<std::pair<SpriteData, vec2>> getSprite() { return sprite; } - + int clearSprite() { if (sprite.empty()) return 0; sprite.clear(); - return 1; + return 1; } - + int addSpriteSegment(SpriteData data, vec2 loc) { //TODO if sprite is in this spot, do something sprite.push_back(std::make_pair(data, loc)); @@ -130,7 +133,7 @@ struct Sprite { for (auto &s : sprite) { if (s.second == loc) { s.first = data; - + return 1; } } @@ -139,6 +142,7 @@ struct Sprite { } std::vector<std::pair<SpriteData, vec2>> sprite; + bool faceLeft; }; //TODO @@ -150,7 +154,7 @@ struct Animate { //TODO struct Input { - + }; /** @@ -180,7 +184,7 @@ public: class RenderSystem : public entityx::System<RenderSystem> { private: -public: +public: void update(entityx::EntityManager &en, entityx::EventManager &ev, entityx::TimeDelta dt) override; }; diff --git a/src/components.cpp b/src/components.cpp index a1e3e45..32d0f79 100644 --- a/src/components.cpp +++ b/src/components.cpp @@ -13,17 +13,17 @@ void MovementSystem::update(entityx::EntityManager &en, entityx::EventManager &e (void)entity; position.x += direction.x * dt; position.y += direction.y * dt; - }); + }); } void RenderSystem::update(entityx::EntityManager &en, entityx::EventManager &ev, entityx::TimeDelta dt) { (void)ev; Render::worldShader.use(); - + en.each<Visible, Sprite, Position>([dt](entityx::Entity entity, Visible &visible, Sprite &sprite, Position &pos) { (void)entity; - // Verticies and shit + // Verticies and shit GLfloat tex_coord[] = {0.0, 0.0, 1.0, 0.0, 1.0, 1.0, @@ -43,7 +43,7 @@ void RenderSystem::update(entityx::EntityManager &en, entityx::EventManager &ev, for (auto &S : sprite.sprite) { float width = S.first.size.x; float height = S.first.size.y; - + vec2 loc = vec2(pos.x + S.first.offset.x, pos.y + S.first.offset.y); GLfloat coords[] = {loc.x, loc.y, visible.z, @@ -53,8 +53,8 @@ void RenderSystem::update(entityx::EntityManager &en, entityx::EventManager &ev, loc.x + width, loc.y + height, visible.z, loc.x, loc.y + height, visible.z, loc.x, loc.y, visible.z}; - - + + // make the entity hit flash red // TODO /*if (maxHitDuration-hitDuration) { @@ -66,7 +66,7 @@ void RenderSystem::update(entityx::EntityManager &en, entityx::EventManager &ev, Render::worldShader.enable(); glVertexAttribPointer(Render::worldShader.coord, 3, GL_FLOAT, GL_FALSE, 0, coords); - if (false) + if (sprite.faceLeft) glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, 0 ,tex_coordL); else glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, 0 ,tex_coord); diff --git a/src/player.cpp b/src/player.cpp index fcbff1c..82de470 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -63,6 +63,7 @@ void PlayerSystem::receive(const KeyDownEvent &kde) { auto kc = kde.keycode; auto& loc = *game::entities.get(pid).component<Position>().get(); + auto& faceLeft = game::entities.get(pid).component<Sprite>().get()->faceLeft; /*auto worldSwitch = [&](const WorldSwitchInfo& wsi){ player->canMove = false; @@ -99,14 +100,14 @@ void PlayerSystem::receive(const KeyDownEvent &kde) }*/ } else if (kc == getControl(1)) { if (!ui::fadeEnable) { - moveLeft = true; + moveLeft = faceLeft = true; moveRight = false; game::engine.getSystem<WorldSystem>()->goWorldLeft(loc); } } else if (kc == getControl(2)) { if (!ui::fadeEnable) { - moveLeft = false; + moveLeft = faceLeft = false; moveRight = true; game::engine.getSystem<WorldSystem>()->goWorldRight(loc); |