]> code.bitgloo.com Git - clyne/gamedev.git/commitdiff
arrows die, do damage
authorClyne Sullivan <tullivan99@gmail.com>
Thu, 23 Mar 2017 11:53:59 +0000 (07:53 -0400)
committerClyne Sullivan <tullivan99@gmail.com>
Thu, 23 Mar 2017 11:53:59 +0000 (07:53 -0400)
include/components.hpp
main.cpp
src/player.cpp
src/world.cpp

index 3f0686763bc296cae529588c22c76b6c95b56cdd..fe56a8812523e0d6c310a07deb316ca7c38e98dd 100644 (file)
@@ -610,6 +610,18 @@ struct Aggro : public Component {
        }
 };
 
+struct Hit : public Component {
+       Hit(int d)
+               : damage(d) {}
+
+       int damage;
+
+       void fromXML(XMLElement* imp, XMLElement* def) final {
+               (void)imp;
+               (void)def;
+       }
+};
+
 /**
  * SYSTEMS
  */
index a46af338a42811cb7e0d3fd9604ab68ee5c55c2e..8fb97c13bdbcb051c0532046e0dd3dfb877664fb 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -119,7 +119,7 @@ int main(int argc, char *argv[])
 
        game::engine.getSystem<InventorySystem>()->add("Wood Sword", 1);
        game::engine.getSystem<InventorySystem>()->add("Hunters Bow", 1);
-       game::engine.getSystem<InventorySystem>()->add("Arrow", 40);
+       game::engine.getSystem<InventorySystem>()->add("Arrow", 198);
 
        std::list<SDL_Event> eventQueue;
 
index 2fb7c447af1423fa6966a68201da78a1c8ca9128..1908af4119733c4023ba26cc4702e319f194050f 100644 (file)
@@ -238,6 +238,7 @@ void PlayerSystem::receive(const UseItemEvent& uie)
                                sprite->addSpriteSegment(SpriteData(tex.sprite), 0);
                                auto dim = HLINES(sprite->getSpriteSize());
                                e.assign<Solid>(dim.x, dim.y);
+                               e.assign<Hit>(10);
                        }
                }
 
index 9a475766295a2396e12d9621c8abb4f1d3b522d9..c41ab2a3625c1a81f449e5b1b4e05471295d3c11 100644 (file)
@@ -14,6 +14,7 @@ using namespace std::literals::chrono_literals;
 using namespace tinyxml2;
 
 // game headers
+#include <attack.hpp>
 #include <common.hpp>
 #include <components.hpp>
 #include <debug.hpp>
@@ -1140,6 +1141,11 @@ void WorldSystem::detect(entityx::TimeDelta dt)
                        } else {
                                loc.y = data[line].groundHeight - 0.001f * dt;
                                vel.y = 0;
+                               if (e.has_component<Hit>()) {
+                                       game::events.emit<AttackEvent>(vec2(loc.x, loc.y),
+                                               AttackType::ShortSlash, e.component<Hit>()->damage);
+                                       e.destroy();
+                               }
                                if (!vel.grounded) {
                                        vel.grounded = true;
                                        game::engine.getSystem<ParticleSystem>()->addMultiple(20, ParticleType::SmallPoof,