Respawning may work, not been tested over network yet.
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user