mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-04-17 08:43:30 +00:00
improve server/client states
This commit is contained in:
parent
1b0934be9f
commit
c141c6bee5
@ -22,6 +22,12 @@ namespace QSB.ClientServerStateSync
|
||||
QSBCore.UnityEvents.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => QSBEventManager.FireEvent(EventNames.QSBClientState, ForceGetCurrentState()));
|
||||
}
|
||||
|
||||
public void FireChangeClientStateEvent(ClientState newState)
|
||||
{
|
||||
ChangeClientState(newState);
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, newState);
|
||||
}
|
||||
|
||||
public void ChangeClientState(ClientState newState)
|
||||
{
|
||||
if (QSBPlayerManager.LocalPlayer.State == newState)
|
||||
@ -124,7 +130,7 @@ namespace QSB.ClientServerStateSync
|
||||
}
|
||||
}
|
||||
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, newState);
|
||||
FireChangeClientStateEvent(newState);
|
||||
}
|
||||
|
||||
public void OnDeath()
|
||||
@ -132,7 +138,7 @@ namespace QSB.ClientServerStateSync
|
||||
var currentScene = QSBSceneManager.CurrentScene;
|
||||
if (currentScene == OWScene.SolarSystem)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, ClientState.DeadInSolarSystem);
|
||||
FireChangeClientStateEvent(ClientState.DeadInSolarSystem);
|
||||
}
|
||||
else if (currentScene == OWScene.EyeOfTheUniverse)
|
||||
{
|
||||
@ -151,7 +157,7 @@ namespace QSB.ClientServerStateSync
|
||||
if (currentScene == OWScene.SolarSystem)
|
||||
{
|
||||
DebugLog.DebugWrite($"RESPAWN!");
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, ClientState.AliveInSolarSystem);
|
||||
FireChangeClientStateEvent(ClientState.AliveInSolarSystem);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -33,6 +33,12 @@ namespace QSB.ClientServerStateSync
|
||||
QSBCore.UnityEvents.RunWhen(() => PlayerTransformSync.LocalInstance != null, () => QSBEventManager.FireEvent(EventNames.QSBServerState, ForceGetCurrentState()));
|
||||
}
|
||||
|
||||
public void FireChangeServerStateEvent(ServerState newState)
|
||||
{
|
||||
ChangeServerState(newState);
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, newState);
|
||||
}
|
||||
|
||||
public void ChangeServerState(ServerState newState)
|
||||
{
|
||||
if (_currentState == newState)
|
||||
@ -54,42 +60,41 @@ namespace QSB.ClientServerStateSync
|
||||
case OWScene.Credits_Fast:
|
||||
case OWScene.Credits_Final:
|
||||
case OWScene.PostCreditsScene:
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.Credits);
|
||||
FireChangeServerStateEvent(ServerState.Credits);
|
||||
break;
|
||||
|
||||
case OWScene.TitleScreen:
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.NotLoaded);
|
||||
FireChangeServerStateEvent(ServerState.NotLoaded);
|
||||
break;
|
||||
|
||||
case OWScene.SolarSystem:
|
||||
if (oldScene == OWScene.SolarSystem)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||
FireChangeServerStateEvent(ServerState.WaitingForAllPlayersToReady);
|
||||
}
|
||||
else
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.InSolarSystem);
|
||||
FireChangeServerStateEvent(ServerState.InSolarSystem);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case OWScene.EyeOfTheUniverse:
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||
FireChangeServerStateEvent(ServerState.WaitingForAllPlayersToReady);
|
||||
break;
|
||||
|
||||
case OWScene.None:
|
||||
case OWScene.Undefined:
|
||||
default:
|
||||
DebugLog.ToConsole($"Warning - newScene is {newScene}!", OWML.Common.MessageType.Warning);
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.NotLoaded);
|
||||
FireChangeServerStateEvent(ServerState.NotLoaded);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerSupernova()
|
||||
{
|
||||
DebugLog.DebugWrite($"TriggerSupernova");
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToDie);
|
||||
FireChangeServerStateEvent(ServerState.WaitingForAllPlayersToDie);
|
||||
}
|
||||
|
||||
private ServerState ForceGetCurrentState()
|
||||
@ -131,16 +136,16 @@ namespace QSB.ClientServerStateSync
|
||||
QSBEventManager.FireEvent(EventNames.QSBStartLoop);
|
||||
if (QSBSceneManager.CurrentScene == OWScene.SolarSystem)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.InSolarSystem);
|
||||
FireChangeServerStateEvent(ServerState.InSolarSystem);
|
||||
}
|
||||
else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.InEye);
|
||||
FireChangeServerStateEvent(ServerState.InEye);
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugLog.ToConsole($"Error - All players were ready in non-universe scene!?", OWML.Common.MessageType.Error);
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.NotLoaded);
|
||||
FireChangeServerStateEvent(ServerState.NotLoaded);
|
||||
}
|
||||
|
||||
_blockNextCheck = true;
|
||||
|
@ -40,7 +40,7 @@ namespace QSB.DeathSync.Events
|
||||
Locator.GetDeathManager().KillPlayer(DeathType.TimeLoop);
|
||||
if (QSBCore.IsHost)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToDie);
|
||||
ServerStateManager.Instance.FireChangeServerStateEvent(ServerState.WaitingForAllPlayersToDie);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -27,16 +27,16 @@ namespace QSB.DeathSync.Events
|
||||
DebugLog.DebugWrite($" ~~~ LOOP START ~~~");
|
||||
if (QSBSceneManager.CurrentScene == OWScene.SolarSystem)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, ClientState.AliveInSolarSystem);
|
||||
ClientStateManager.Instance.FireChangeClientStateEvent(ClientState.AliveInSolarSystem);
|
||||
}
|
||||
else if (QSBSceneManager.CurrentScene == OWScene.EyeOfTheUniverse)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, ClientState.AliveInEye);
|
||||
ClientStateManager.Instance.FireChangeClientStateEvent(ClientState.AliveInEye);
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugLog.ToConsole($"Error - Got StartLoop event when not in universe!", OWML.Common.MessageType.Error);
|
||||
QSBEventManager.FireEvent(EventNames.QSBClientState, ClientState.NotLoaded);
|
||||
ClientStateManager.Instance.FireChangeClientStateEvent(ClientState.NotLoaded);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ namespace QSB.Player.Events
|
||||
// if host, send worldobject and server states
|
||||
if (isHost)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerStateManager.Instance.GetServerState());
|
||||
ServerStateManager.Instance.FireChangeServerStateEvent(ServerStateManager.Instance.GetServerState());
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerInformation);
|
||||
|
||||
if (WorldObjectManager.AllObjectsReady)
|
||||
|
@ -33,7 +33,7 @@ namespace QSB.StatueSync.Events
|
||||
return;
|
||||
}
|
||||
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.InStatueCutscene);
|
||||
ServerStateManager.Instance.FireChangeServerStateEvent(ServerState.InStatueCutscene);
|
||||
}
|
||||
|
||||
public override void OnReceiveRemote(bool server, StartStatueMessage message)
|
||||
@ -45,7 +45,7 @@ namespace QSB.StatueSync.Events
|
||||
return;
|
||||
}
|
||||
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.InStatueCutscene);
|
||||
ServerStateManager.Instance.FireChangeServerStateEvent(ServerState.InStatueCutscene);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ namespace QSB.TimeSync
|
||||
{
|
||||
//?
|
||||
DebugLog.ToConsole($"Warning - Server waiting for players to die, but players waiting for ready signal! Assume players correct.", MessageType.Warning);
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||
ServerStateManager.Instance.FireChangeServerStateEvent(ServerState.WaitingForAllPlayersToReady);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user