#ifndef WeaponSystem_h__ #define WeaponSystem_h__ #include "Rendering/IRenderer.h" #include "Common.h" #include "Core/System.h" #include "Core/EPlayerDamage.h" #include "Core/EShoot.h" #include "Core/EPlayerSpawned.h" #include "Input/EInputCommand.h" #include "Core/EntityXMLFile.h" #include "Core/EntityXMLFileParser.h" #include "Core/Octree.h" #include "Collision/EntityAABB.h" #include "Systems/SpawnerSystem.h" #include "Sound/EPlaySoundOnEntity.h" #include "AssaultWeaponBehaviour.h" class WeaponSystem : public PureSystem, ImpureSystem { public: WeaponSystem(SystemParams params, IRenderer* renderer, Octree* collisionOctree); virtual void Update(double dt) override; virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cPlayer, double dt) override; private: SystemParams m_SystemParams; IRenderer* m_Renderer; Octree* m_CollisionOctree; std::unordered_map> m_ActiveWeapons; // Events EventRelay m_EPlayerSpawned; bool OnPlayerSpawned(Events::PlayerSpawned& e); EventRelay m_EInputCommand; bool OnInputCommand(Events::InputCommand& e); void selectWeapon(EntityWrapper player, ComponentInfo::EnumType slot); }; #endif