}
};
+struct Hit : public Component {
+ Hit(int d)
+ : damage(d) {}
+
+ int damage;
+
+ void fromXML(XMLElement* imp, XMLElement* def) final {
+ (void)imp;
+ (void)def;
+ }
+};
+
/**
* SYSTEMS
*/
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;
sprite->addSpriteSegment(SpriteData(tex.sprite), 0);
auto dim = HLINES(sprite->getSpriteSize());
e.assign<Solid>(dim.x, dim.y);
+ e.assign<Hit>(10);
}
}
using namespace tinyxml2;
// game headers
+#include <attack.hpp>
#include <common.hpp>
#include <components.hpp>
#include <debug.hpp>
} 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,