aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2017-04-30 16:16:41 -0400
committerClyne Sullivan <tullivan99@gmail.com>2017-04-30 16:16:41 -0400
commit51629a66ff14a9025d9bd9ea69831e3d824a0760 (patch)
tree6e749c251d7b41d9bb3bf5362ccfe6aa18527f0e /src
parent40d164ea3d8437cd5a06a06d5b89bd938d3dd906 (diff)
mem track+, drop func. added
Diffstat (limited to 'src')
-rw-r--r--src/inventory.cpp46
-rw-r--r--src/player.cpp2
-rw-r--r--src/world.cpp15
3 files changed, 41 insertions, 22 deletions
diff --git a/src/inventory.cpp b/src/inventory.cpp
index 434eac6..96c1d6d 100644
--- a/src/inventory.cpp
+++ b/src/inventory.cpp
@@ -219,25 +219,45 @@ void InventorySystem::receive(const MouseReleaseEvent &mre)
}
}
- auto e = game::entities.create();
- e.assign<Position>(mre.position.x, mre.position.y);
- e.assign<Direction>(0, 0.1f);
- e.assign<ItemDrop>(items[movingItem]);
- e.assign<Sprite>();
- e.component<Sprite>()->addSpriteSegment(
- SpriteData(items[movingItem].item->sprite), vec2(0, 0));
- auto dim = items[movingItem].item->sprite.getDim();
- e.assign<Solid>(HLINES(dim.x), HLINES(dim.y));
- e.assign<Visible>();
- e.assign<Physics>();
-
+ makeDrop(mre.position, items[movingItem]);
items[movingItem].item = nullptr;
items[movingItem].count = 0;
-
movingItem = -1;
}
}
+void InventorySystem::makeDrop(const vec2& p, InventoryEntry& ie)
+{
+ auto e = game::entities.create();
+ e.assign<Position>(p.x, p.y);
+ e.assign<Direction>(0, 0.1f);
+ e.assign<ItemDrop>(ie);
+ e.assign<Sprite>();
+ e.component<Sprite>()->addSpriteSegment(
+ SpriteData(ie.item->sprite), vec2(0, 0));
+ auto dim = ie.item->sprite.getDim();
+ e.assign<Solid>(HLINES(dim.x), HLINES(dim.y));
+ e.assign<Visible>();
+ e.assign<Physics>();
+}
+
+void InventorySystem::makeDrop(const vec2& p, const std::string& s, int c)
+{
+ auto item = getItem(s);
+ auto e = game::entities.create();
+ e.assign<Position>(p.x, p.y);
+ e.assign<Direction>(0, 0.1f);
+ InventoryEntry ie (item, c);
+ e.assign<ItemDrop>(ie);
+ e.assign<Sprite>();
+ e.component<Sprite>()->addSpriteSegment(
+ SpriteData(item->sprite), vec2(0, 0));
+ auto dim = item->sprite.getDim();
+ e.assign<Solid>(HLINES(dim.x), HLINES(dim.y));
+ e.assign<Visible>();
+ e.assign<Physics>();
+}
+
void InventorySystem::receive(const KeyDownEvent &kde)
{
if (kde.keycode == SDLK_e) {
diff --git a/src/player.cpp b/src/player.cpp
index 0256190..01b8a7c 100644
--- a/src/player.cpp
+++ b/src/player.cpp
@@ -245,7 +245,7 @@ void PlayerSystem::receive(const UseItemEvent& uie)
e.assign<Physics>();
auto sprite = e.assign<Sprite>();
auto tex = InventorySystem::getItem("Arrow");
- sprite->addSpriteSegment(SpriteData(tex.sprite), 0);
+ sprite->addSpriteSegment(SpriteData(tex->sprite), 0);
auto dim = HLINES(sprite->getSpriteSize());
e.assign<Solid>(dim.x, dim.y);
e.assign<Hit>(10, false);
diff --git a/src/world.cpp b/src/world.cpp
index bf34973..912a0c9 100644
--- a/src/world.cpp
+++ b/src/world.cpp
@@ -669,14 +669,13 @@ void WorldSystem::render(void)
//glUniform4f(Render::worldShader.uniform[WU_tex_color], 1.0, 1.0, 1.0, 1.3 - static_cast<float>(alpha) / 255.0f);
//makeWorldDrawingSimplerEvenThoughAndyDoesntThinkWeCanMakeItIntoFunctions(0, fron_tex_coord, tex_coord, 6);
- // TODO make stars dynamic (make them particles??)
- static const Texture starTex ("assets/style/classic/bg/star.png"); // TODO why in theme, not just std.?
- const static float stardim = 24;
- GLfloat* star_coord = new GLfloat[stars.size() * 5 * 6 + 1];
- GLfloat* si = &star_coord[0];
-
if (worldShade > 0) {
+ static const Texture starTex ("assets/style/classic/bg/star.png"); // TODO why in theme, not just std.?
+ static const float stardim = 24;
+
+ GLfloat* star_coord = new GLfloat[stars.size() * 5 * 6 + 1];
+ auto si = &star_coord;
auto xcoord = offset.x * 0.9f;
for (auto &s : stars) {
@@ -698,9 +697,9 @@ void WorldSystem::render(void)
glVertexAttribPointer(Render::worldShader.coord, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), &star_coord[0]);
glVertexAttribPointer(Render::worldShader.tex, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), &star_coord[3]);
glDrawArrays(GL_TRIANGLES, 0, stars.size() * 6);
- }
- delete[] star_coord;
+ delete[] star_coord;
+ }
Render::worldShader.disable();