aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2016-10-22 18:51:45 -0400
committerClyne Sullivan <tullivan99@gmail.com>2016-10-22 18:51:45 -0400
commitb32c68a5a4bfb06f321a1d78357c65458b24e760 (patch)
tree63256abc33da526a955c9f1460f98dc475c68774
parent149f255760e56447400d80532c99d481bc93644a (diff)
parent4b1bee70774aae35c302636c8632e75bd6e23e5e (diff)
merge fixes
-rw-r--r--include/components.hpp22
-rw-r--r--src/components.cpp14
-rw-r--r--src/player.cpp5
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);