/* * Weapon.h * * Created on: 12.08.2012 * Author: Felix */ #ifndef DG_WEAPON_H_ #define DG_WEAPON_H_ #include #include #include "../particle/Emitter.h" class Character; class World; class Particle; class Yaml; /** * Loading mechanism: * - pass enum value and load mapped xml * - pass xml filename */ class Weapon : public Emitter { public: explicit Weapon(World& world, Character& holder, const Yaml& config); void pullTrigger(); void releaseTrigger(); void onThink(int elapsed); protected: std::shared_ptr createParticle(); private: Character& mHolder; const std::string mBullet; //< Bullet config filename. int mLastShotWaitInterval; //< Remaining time left after firing last bullet before firing next one. const int mFireInterval; //< Time between firing bullets. bool mFire; //< True if the trigger is pulled. bool mAutomatic; //< True if the weapon continues firing after pulling the trigger once. }; #endif /* DG_WEAPON_H_ */