WIP multi-weapon behaviours

This commit is contained in:
2016-02-25 16:24:38 +01:00
parent da1c7b3093
commit cedcffcf97
14 changed files with 175 additions and 62 deletions
@@ -1,13 +1,14 @@
#ifndef AssaultWeaponBehaviour_h__
#define AssaultWeaponBehaviour_h__
#include "Sound/EPlaySoundOnEntity.h"
#include "Collision/Collision.h"
#include "Rendering/AnimationSystem.h"
#include "Core/ConfigFile.h"
#include "WeaponBehaviour.h"
#include "../SpawnerSystem.h"
#include "Core/EPlayerDamage.h"
#include "Core/EShoot.h"
class AssaultWeaponBehaviour : public WeaponBehaviour
{
public:
@@ -22,16 +23,13 @@ public:
private:
EntityWrapper m_FirstPersonModel;
EntityWrapper m_ThirdPersonModel;
// State
bool m_Firing = false;
bool m_Reloading = false;
double m_ReloadTimer = 0.0;
EntityWrapper m_FirstPersonReloadImpersonator;
EntityWrapper m_ThirdPersonReloadImpersonator;
double m_TimeSinceLastFire = 0.0;
EventRelay<WeaponBehaviour, Events::AnimationComplete> m_EAnimationComplete;
bool OnAnimationComplete(Events::AnimationComplete& e);
EntityWrapper m_FirstPersonReloadImpostor;
bool hasAmmo();
void fireRound();
@@ -47,3 +45,5 @@ private:
bool shoot(double damage);
void showHitMarker();
};
#endif
@@ -0,0 +1,16 @@
#include "WeaponBehaviour.h"
class DefenderWeaponBehaviour : public WeaponBehaviour
{
public:
DefenderWeaponBehaviour(SystemParams systemParams, IRenderer* renderer, Octree<EntityAABB>* collisionOctree, EntityWrapper weaponEntity);
virtual void Fire() override;
//virtual void CeaseFire() override;
//virtual void Reload() override;
//virtual void Update(double dt) override;
private:
double m_TimeSinceLastFire = 0.0;
};
@@ -8,17 +8,21 @@
class WeaponBehaviour : public System
{
friend class WeaponSystem;
public:
WeaponBehaviour(SystemParams systemParams, IRenderer* renderer, Octree<EntityAABB>* collisionOctree, EntityWrapper player)
WeaponBehaviour(SystemParams systemParams, IRenderer* renderer, Octree<EntityAABB>* collisionOctree, EntityWrapper player, EntityWrapper firstPersonWeapon, EntityWrapper thirdPersonWeapon)
: System(systemParams)
, m_Renderer(renderer)
, m_CollisionOctree(collisionOctree)
, m_Player(player)
, m_FirstPerson(firstPersonWeapon)
, m_ThirdPerson(thirdPersonWeapon)
{ }
virtual ~WeaponBehaviour() = default;
WeaponBehaviour(const WeaponBehaviour&) = delete;
WeaponBehaviour& operator=(const WeaponBehaviour &) = delete;
WeaponBehaviour& operator=(const WeaponBehaviour&) = delete;
virtual void Fire() = 0;
virtual void CeaseFire() { }
@@ -29,6 +33,8 @@ protected:
IRenderer* m_Renderer;
Octree<EntityAABB>* m_CollisionOctree;
EntityWrapper m_Player;
EntityWrapper m_FirstPerson;
EntityWrapper m_ThirdPerson;
};
#endif