Made RespawnSystem not spawn while world is paused

This commit is contained in:
2016-03-10 00:08:58 +01:00
parent 4b6d4e581f
commit 167f78951e
2 changed files with 28 additions and 0 deletions
+6
View File
@@ -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
+22
View File
@@ -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;
}