48 lines
1.3 KiB
C++
48 lines
1.3 KiB
C++
#ifndef DamageIndicatorSystem_h__
|
|
#define DamageIndicatorSystem_h__
|
|
|
|
#include "Core/System.h"
|
|
#include "Core/Transform.h"
|
|
#include "Core/ResourceManager.h"
|
|
#include "Core/EntityFileParser.h"
|
|
#include "Core/EPlayerDamage.h"
|
|
#include "Common.h"
|
|
#include <tuple>
|
|
|
|
#include "Rendering/ESetCamera.h"
|
|
#include <glm/gtc/quaternion.hpp>
|
|
#include <glm/gtx/vector_angle.hpp>
|
|
|
|
#include "Rendering/Util/CommonFunctions.h"
|
|
|
|
class DamageIndicatorSystem : public ImpureSystem
|
|
{
|
|
public:
|
|
DamageIndicatorSystem(SystemParams params);
|
|
virtual void Update(double dt) override;
|
|
|
|
private:
|
|
EventRelay<DamageIndicatorSystem, Events::PlayerDamage> m_EPlayerDamage;
|
|
bool OnPlayerDamage(Events::PlayerDamage& e);
|
|
|
|
EventRelay<DamageIndicatorSystem, Events::SetCamera> m_ESetCamera;
|
|
bool OnSetCamera(const Events::SetCamera& e);
|
|
|
|
EntityID m_CurrentCamera = -1;
|
|
struct DamageIndicatorStruct {
|
|
EntityWrapper spriteEntity;
|
|
glm::vec3 enemyPosition;
|
|
DamageIndicatorStruct(EntityWrapper sprite, glm::vec3 pos)
|
|
: spriteEntity(sprite)
|
|
, enemyPosition(pos) {}
|
|
};
|
|
std::vector<DamageIndicatorStruct> updateDamageIndicatorVector;
|
|
float CalculateAngle(EntityWrapper player, glm::vec3 enemyPos);
|
|
|
|
//for tests
|
|
int m_TestVar = 0;
|
|
bool m_Testing = false;
|
|
glm::vec3 DamageIndicatorTest(EntityWrapper player);
|
|
};
|
|
#endif
|