Working damage dealing, a super cool reload effect and hit markers!
This commit is contained in:
@@ -9,8 +9,8 @@ namespace Events
|
||||
|
||||
struct PlayerDamage : Event
|
||||
{
|
||||
//NOTE: this struct is missing information on what the damageSource is
|
||||
EntityWrapper Player;
|
||||
EntityWrapper Inflictor;
|
||||
EntityWrapper Victim;
|
||||
double Damage;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ namespace Events
|
||||
|
||||
struct Shoot : Event
|
||||
{
|
||||
EntityWrapper Player;
|
||||
EntityWrapper Inflictor;
|
||||
double Damage;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
#include "Sound/EPlaySoundOnEntity.h"
|
||||
#include "Collision/Collision.h"
|
||||
#include "Rendering/AnimationSystem.h"
|
||||
#include "WeaponBehaviour.h"
|
||||
#include "../SpawnerSystem.h"
|
||||
#include "Core/EPlayerDamage.h"
|
||||
#include "Core/EShoot.h"
|
||||
|
||||
class AssaultWeaponBehaviour : public WeaponBehaviour
|
||||
{
|
||||
public:
|
||||
AssaultWeaponBehaviour(SystemParams systemParams, Octree<EntityAABB>* collisionOctree, EntityWrapper weaponEntity);
|
||||
AssaultWeaponBehaviour(SystemParams systemParams, IRenderer* renderer, Octree<EntityAABB>* collisionOctree, EntityWrapper weaponEntity);
|
||||
|
||||
virtual void Fire() override;
|
||||
virtual void CeaseFire() override;
|
||||
@@ -19,16 +22,23 @@ private:
|
||||
// State
|
||||
bool m_Firing = false;
|
||||
bool m_Reloading = false;
|
||||
double m_ReloadTimer = 0.0;
|
||||
EntityWrapper m_ReloadImpersonator;
|
||||
double m_TimeSinceLastFire = 0.0;
|
||||
|
||||
EventRelay<WeaponBehaviour, Events::AnimationComplete> m_EAnimationComplete;
|
||||
bool OnAnimationComplete(Events::AnimationComplete& e);
|
||||
|
||||
bool hasAmmo();
|
||||
void fireRound();
|
||||
void spawnTracer();
|
||||
float traceRayDistance(glm::vec3 origin, glm::vec3 direction);
|
||||
void playSound();
|
||||
void viewPunch();
|
||||
void finishReload();
|
||||
void playShootAnimation();
|
||||
void playIdleAnimation();
|
||||
void playReloadAnimation();
|
||||
bool shoot(double damage);
|
||||
void showHitMarker();
|
||||
};
|
||||
|
||||
@@ -2,16 +2,18 @@
|
||||
#define WeaponBehaviour_h__
|
||||
|
||||
#include "Core/System.h"
|
||||
#include "Rendering/IRenderer.h"
|
||||
#include "Core/Octree.h"
|
||||
#include "Collision/EntityAABB.h"
|
||||
|
||||
class WeaponBehaviour : public System
|
||||
{
|
||||
public:
|
||||
WeaponBehaviour(SystemParams systemParams, Octree<EntityAABB>* collisionOctree, EntityWrapper weaponEntity)
|
||||
WeaponBehaviour(SystemParams systemParams, IRenderer* renderer, Octree<EntityAABB>* collisionOctree, EntityWrapper player)
|
||||
: System(systemParams)
|
||||
, m_Renderer(renderer)
|
||||
, m_CollisionOctree(collisionOctree)
|
||||
, m_Entity(weaponEntity)
|
||||
, m_Player(player)
|
||||
{ }
|
||||
virtual ~WeaponBehaviour() = default;
|
||||
|
||||
@@ -24,8 +26,9 @@ public:
|
||||
virtual void Update(double dt) { }
|
||||
|
||||
protected:
|
||||
IRenderer* m_Renderer;
|
||||
Octree<EntityAABB>* m_CollisionOctree;
|
||||
EntityWrapper m_Entity;
|
||||
EntityWrapper m_Player;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -35,8 +35,6 @@ private:
|
||||
// Events
|
||||
EventRelay<WeaponSystem, Events::PlayerSpawned> m_EPlayerSpawned;
|
||||
bool OnPlayerSpawned(Events::PlayerSpawned& e);
|
||||
EventRelay<WeaponSystem, Events::Shoot> m_EShoot;
|
||||
bool OnShoot(Events::Shoot& e);
|
||||
EventRelay<WeaponSystem, Events::InputCommand> m_EInputCommand;
|
||||
bool OnInputCommand(Events::InputCommand& e);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user