Don't force to spectator camera if player presses pickTeam/Class prematurely. Players team should be remembered after picked, spawn request is not erased anymore.
This commit is contained in:
@@ -24,6 +24,8 @@ private:
|
|||||||
bool OnPlayerDeath(Events::PlayerDeath& e);
|
bool OnPlayerDeath(Events::PlayerDeath& e);
|
||||||
EventRelay<PlayerDeathSystem, Events::EntityDeleted> m_EEntityDeleted;
|
EventRelay<PlayerDeathSystem, Events::EntityDeleted> m_EEntityDeleted;
|
||||||
bool OnEntityDeleted(Events::EntityDeleted& e);
|
bool OnEntityDeleted(Events::EntityDeleted& e);
|
||||||
|
EventRelay<PlayerDeathSystem, Events::InputCommand> m_EInputCommand;
|
||||||
|
bool OnInputCommand(Events::InputCommand& e);
|
||||||
|
|
||||||
void setSpectatorCamera();
|
void setSpectatorCamera();
|
||||||
void createDeathEffect(EntityWrapper player);
|
void createDeathEffect(EntityWrapper player);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ PlayerDeathSystem::PlayerDeathSystem(SystemParams params)
|
|||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_OnPlayerDeath, &PlayerDeathSystem::OnPlayerDeath);
|
EVENT_SUBSCRIBE_MEMBER(m_OnPlayerDeath, &PlayerDeathSystem::OnPlayerDeath);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EEntityDeleted, &PlayerDeathSystem::OnEntityDeleted);
|
EVENT_SUBSCRIBE_MEMBER(m_EEntityDeleted, &PlayerDeathSystem::OnEntityDeleted);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_EInputCommand, &PlayerDeathSystem::OnInputCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerDeathSystem::Update(double dt)
|
void PlayerDeathSystem::Update(double dt)
|
||||||
@@ -90,3 +91,14 @@ void PlayerDeathSystem::setSpectatorCamera()
|
|||||||
Events::UnlockMouse unlock;
|
Events::UnlockMouse unlock;
|
||||||
m_EventBroker->Publish(unlock);
|
m_EventBroker->Publish(unlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PlayerDeathSystem::OnInputCommand(Events::InputCommand& e)
|
||||||
|
{
|
||||||
|
if (e.Value == 0 || e.Command != "SwapToTeamPick" && e.Command != "SwapToClassPick") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure that we don't set spectator camera if the player deliberately changes to class/team pick.
|
||||||
|
m_LocalPlayerDeathEffect = EntityWrapper::Invalid;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -134,16 +134,12 @@ bool PlayerSpawnSystem::OnInputCommand(Events::InputCommand& e)
|
|||||||
auto iter = m_SpawnRequests.begin();
|
auto iter = m_SpawnRequests.begin();
|
||||||
for (; iter != m_SpawnRequests.end(); ++iter) {
|
for (; iter != m_SpawnRequests.end(); ++iter) {
|
||||||
if (iter->PlayerID == e.PlayerID) {
|
if (iter->PlayerID == e.PlayerID) {
|
||||||
// If player wants to switch team, remove their spawn request.
|
// If player wants to switch team or class , remove their selected class so they don't spawn.
|
||||||
if (e.Command == "SwapToTeamPick") {
|
if (e.Command == "SwapToTeamPick" || e.Command == "SwapToClassPick") {
|
||||||
m_SpawnRequests.erase(iter);
|
|
||||||
} else if (e.Command == "SwapToClassPick") {
|
|
||||||
// If player wants to switch class, remove their selected class so they don't spawn.
|
|
||||||
iter->Class = -1;
|
iter->Class = -1;
|
||||||
} else {
|
return true;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return true;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user