Made RespawnSystem not spawn while world is paused
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
#include "System.h"
|
#include "System.h"
|
||||||
#include "SpawnerSystem.h"
|
#include "SpawnerSystem.h"
|
||||||
#include "EEntityDeleted.h"
|
#include "EEntityDeleted.h"
|
||||||
|
#include "EPause.h"
|
||||||
|
|
||||||
class RespawnSystem : public PureSystem
|
class RespawnSystem : public PureSystem
|
||||||
{
|
{
|
||||||
@@ -14,9 +15,14 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_map<EntityWrapper, EntityWrapper> m_LastRespawnedEntity;
|
std::unordered_map<EntityWrapper, EntityWrapper> m_LastRespawnedEntity;
|
||||||
|
bool m_Paused = false;
|
||||||
|
|
||||||
EventRelay<RespawnSystem, Events::EntityDeleted> m_EEntityDeleted;
|
EventRelay<RespawnSystem, Events::EntityDeleted> m_EEntityDeleted;
|
||||||
bool OnEntityDeleted(const Events::EntityDeleted& e);
|
bool OnEntityDeleted(const Events::EntityDeleted& e);
|
||||||
|
EventRelay<RespawnSystem, Events::Pause> m_EPause;
|
||||||
|
bool OnPause(const Events::Pause& e);
|
||||||
|
EventRelay<RespawnSystem, Events::Resume> m_EResume;
|
||||||
|
bool OnResume(const Events::Resume& e);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -5,10 +5,16 @@ RespawnSystem::RespawnSystem(SystemParams params)
|
|||||||
, PureSystem("Respawn")
|
, PureSystem("Respawn")
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EEntityDeleted, &RespawnSystem::OnEntityDeleted);
|
EVENT_SUBSCRIBE_MEMBER(m_EEntityDeleted, &RespawnSystem::OnEntityDeleted);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &RespawnSystem::OnPause);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EResume, &RespawnSystem::OnResume);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RespawnSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cRespawn, double dt)
|
void RespawnSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cRespawn, double dt)
|
||||||
{
|
{
|
||||||
|
if (m_Paused) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!entity.HasComponent("Spawner")) {
|
if (!entity.HasComponent("Spawner")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -30,3 +36,19 @@ bool RespawnSystem::OnEntityDeleted(const Events::EntityDeleted& e)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RespawnSystem::OnPause(const Events::Pause& e)
|
||||||
|
{
|
||||||
|
if (e.World == m_World) {
|
||||||
|
m_Paused = true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RespawnSystem::OnResume(const Events::Resume& e)
|
||||||
|
{
|
||||||
|
if (e.World == m_World) {
|
||||||
|
m_Paused = false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user