Respawning may work, not been tested over network yet.

This commit is contained in:
William Moberg
2016-02-11 22:49:31 +01:00
parent 14054ad898
commit dd131e7652
+8 -15
View File
@@ -78,8 +78,8 @@ bool PlayerSpawnSystem::OnInputCommand(Events::InputCommand& e)
} }
// Team picks should be processed ONLY server-side! // Team picks should be processed ONLY server-side!
// Don't make a spawn request if PlayerID is -1, i.e. we're the client. // Don't make a spawn request if we're the client.
if (e.PlayerID == -1 && m_NetworkEnabled) { if (!IsServer && m_NetworkEnabled) {
return false; return false;
} }
@@ -88,11 +88,10 @@ bool PlayerSpawnSystem::OnInputCommand(Events::InputCommand& e)
} }
//TODO: Spectating? //TODO: Spectating?
if (e.Player.Valid() && e.Player.HasComponent("Team")) { //Right now, return if someone picks spectator.
ComponentWrapper cTeam = e.Player["Team"]; //1 signifies spectator here, could not get Playerteam component since it may be invalid or without team comp.
if ((ComponentInfo::EnumType)e.Value == cTeam["Team"].Enum("Spectator")) { if ((ComponentInfo::EnumType)e.Value == 1) {
return false; return false;
}
} }
//Check if the player already requested spawn. //Check if the player already requested spawn.
@@ -131,13 +130,6 @@ bool PlayerSpawnSystem::OnPlayerSpawned(Events::PlayerSpawned& e)
return false; return false;
} }
// Check if a player already exists
if (m_PlayerEntities.count(e.PlayerID) != 0) {
// TODO: Disallow infinite respawning here
if (m_PlayerEntities[e.PlayerID].Valid()) {
m_World->DeleteEntity(m_PlayerEntities[e.PlayerID].ID);
}
}
// Set the camera to the correct entity // Set the camera to the correct entity
EntityWrapper cameraEntity = e.Player.FirstChildByName("Camera"); EntityWrapper cameraEntity = e.Player.FirstChildByName("Camera");
@@ -170,6 +162,7 @@ bool PlayerSpawnSystem::OnPlayerSpawned(Events::PlayerSpawned& e)
bool PlayerSpawnSystem::OnPlayerDeath(Events::PlayerDeath& e) bool PlayerSpawnSystem::OnPlayerDeath(Events::PlayerDeath& e)
{ {
//Only spawn request if network is disabled or we are server.
if (!IsServer && m_NetworkEnabled) { if (!IsServer && m_NetworkEnabled) {
return false; return false;
} }
@@ -182,7 +175,7 @@ bool PlayerSpawnSystem::OnPlayerDeath(Events::PlayerDeath& e)
return false; return false;
} }
SpawnRequest req; SpawnRequest req;
req.PlayerID = m_PlayerIDs[e.Player.ID]; req.PlayerID = m_PlayerIDs.at(e.Player.ID);
req.Team = cTeam["Team"]; req.Team = cTeam["Team"];
m_SpawnRequests.push_back(req); m_SpawnRequests.push_back(req);
} }