mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-13 07:14:19 +00:00
Merge pull request #356 from misternebula/more-fixes
Remove player state, add launch code event, not-ready-player checks
This commit is contained in:
commit
a4ed259d5a
@ -80,7 +80,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
case NomaiConversationManager.State.WatchingSky:
|
case NomaiConversationManager.State.WatchingSky:
|
||||||
if (__instance._playerInWatchVolume)
|
if (__instance._playerInWatchVolume)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WACHING PLAYER");
|
|
||||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||||
__instance._solanumAnimController.StartWatchingPlayer();
|
__instance._solanumAnimController.StartWatchingPlayer();
|
||||||
}
|
}
|
||||||
@ -92,7 +91,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
// player left watch zone
|
// player left watch zone
|
||||||
if (!__instance._playerInWatchVolume)
|
if (!__instance._playerInWatchVolume)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING SKY");
|
|
||||||
__instance._state = NomaiConversationManager.State.WatchingSky;
|
__instance._state = NomaiConversationManager.State.WatchingSky;
|
||||||
__instance._solanumAnimController.StopWatchingPlayer();
|
__instance._solanumAnimController.StopWatchingPlayer();
|
||||||
}
|
}
|
||||||
@ -104,7 +102,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
__instance._stoneCreationTimer -= Time.deltaTime;
|
__instance._stoneCreationTimer -= Time.deltaTime;
|
||||||
if (__instance._stoneCreationTimer <= 0f)
|
if (__instance._stoneCreationTimer <= 0f)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => CREATING STONES");
|
|
||||||
__instance._state = NomaiConversationManager.State.CreatingStones;
|
__instance._state = NomaiConversationManager.State.CreatingStones;
|
||||||
__instance._solanumAnimController.PlayCreateWordStones();
|
__instance._solanumAnimController.PlayCreateWordStones();
|
||||||
}
|
}
|
||||||
@ -123,7 +120,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
// raise cairns
|
// raise cairns
|
||||||
else if (__instance._solanumAnimController.IsPlayerLooking())
|
else if (__instance._solanumAnimController.IsPlayerLooking())
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => RAISING CAIRNS");
|
|
||||||
__instance._state = NomaiConversationManager.State.RaisingCairns;
|
__instance._state = NomaiConversationManager.State.RaisingCairns;
|
||||||
__instance._solanumAnimController.PlayRaiseCairns();
|
__instance._solanumAnimController.PlayRaiseCairns();
|
||||||
__instance._cairnAnimator.SetTrigger("Raise");
|
__instance._cairnAnimator.SetTrigger("Raise");
|
||||||
@ -132,7 +128,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
}
|
}
|
||||||
else if (__instance._activeResponseText == null && __instance._hasValidSocketedStonePair)
|
else if (__instance._activeResponseText == null && __instance._hasValidSocketedStonePair)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WRITING RESPONSE");
|
|
||||||
__instance._activeResponseText = __instance._pendingResponseText;
|
__instance._activeResponseText = __instance._pendingResponseText;
|
||||||
__instance._pendingResponseText = null;
|
__instance._pendingResponseText = null;
|
||||||
__instance._state = NomaiConversationManager.State.WritingResponse;
|
__instance._state = NomaiConversationManager.State.WritingResponse;
|
||||||
@ -140,7 +135,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
}
|
}
|
||||||
else if (__instance._activeResponseText != null && (!__instance._hasValidSocketedStonePair || __instance._pendingResponseText != null))
|
else if (__instance._activeResponseText != null && (!__instance._hasValidSocketedStonePair || __instance._pendingResponseText != null))
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => ERASING RESPONSE");
|
|
||||||
__instance._state = NomaiConversationManager.State.ErasingResponse;
|
__instance._state = NomaiConversationManager.State.ErasingResponse;
|
||||||
__instance._solanumAnimController.StartWritingMessage();
|
__instance._solanumAnimController.StartWritingMessage();
|
||||||
}
|
}
|
||||||
@ -177,7 +171,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
case NomaiConversationManager.State.CreatingStones:
|
case NomaiConversationManager.State.CreatingStones:
|
||||||
if (!__instance._solanumAnimController.isPerformingAction)
|
if (!__instance._solanumAnimController.isPerformingAction)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
|
||||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||||
__instance._conversationStonesCreated = true;
|
__instance._conversationStonesCreated = true;
|
||||||
}
|
}
|
||||||
@ -186,7 +179,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
case NomaiConversationManager.State.RaisingCairns:
|
case NomaiConversationManager.State.RaisingCairns:
|
||||||
if (!__instance._solanumAnimController.isPerformingAction)
|
if (!__instance._solanumAnimController.isPerformingAction)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
|
||||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||||
__instance._cairnRaised = true;
|
__instance._cairnRaised = true;
|
||||||
__instance._stoneSocketATrigger.SetActivation(true);
|
__instance._stoneSocketATrigger.SetActivation(true);
|
||||||
@ -200,13 +192,11 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
__instance._activeResponseText = null;
|
__instance._activeResponseText = null;
|
||||||
if (__instance._pendingResponseText == null)
|
if (__instance._pendingResponseText == null)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
|
||||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||||
__instance._solanumAnimController.StopWritingMessage(false);
|
__instance._solanumAnimController.StopWritingMessage(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING WRITING RESPONSE");
|
|
||||||
__instance._activeResponseText = __instance._pendingResponseText;
|
__instance._activeResponseText = __instance._pendingResponseText;
|
||||||
__instance._pendingResponseText = null;
|
__instance._pendingResponseText = null;
|
||||||
__instance._state = NomaiConversationManager.State.WritingResponse;
|
__instance._state = NomaiConversationManager.State.WritingResponse;
|
||||||
@ -218,7 +208,6 @@ namespace QSB.Animation.NPC.Patches
|
|||||||
case NomaiConversationManager.State.WritingResponse:
|
case NomaiConversationManager.State.WritingResponse:
|
||||||
if (!__instance._solanumAnimController.isStartingWrite && !__instance._activeResponseText.IsAnimationPlaying())
|
if (!__instance._solanumAnimController.isStartingWrite && !__instance._activeResponseText.IsAnimationPlaying())
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
|
||||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||||
__instance._solanumAnimController.StopWritingMessage(true);
|
__instance._solanumAnimController.StopWritingMessage(true);
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ namespace QSB.Animation.Player
|
|||||||
|
|
||||||
public void SetSuitState(bool state)
|
public void SetSuitState(bool state)
|
||||||
{
|
{
|
||||||
if (!Player.PlayerStates.IsReady)
|
if (!Player.IsReady)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ namespace QSB.Animation.Player.Events
|
|||||||
|
|
||||||
public override void OnReceiveRemote(bool server, EnumMessage<AnimationType> message)
|
public override void OnReceiveRemote(bool server, EnumMessage<AnimationType> message)
|
||||||
{
|
{
|
||||||
if (!QSBCore.WorldObjectsReady || !QSBPlayerManager.GetPlayer(message.AboutId).PlayerStates.IsReady)
|
if (!QSBCore.WorldObjectsReady || !QSBPlayerManager.GetPlayer(message.AboutId).IsReady)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,9 @@ namespace QSB.Animation.Player.Events
|
|||||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
player.PlayerStates.SuitedUp = message.ToggleValue;
|
player.SuitedUp = message.ToggleValue;
|
||||||
|
|
||||||
if (!QSBCore.WorldObjectsReady || !player.PlayerStates.IsReady)
|
if (!QSBCore.WorldObjectsReady || !player.IsReady)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ namespace QSB.Animation.Player.Events
|
|||||||
|
|
||||||
public override void OnReceiveLocal(bool server, ToggleMessage message)
|
public override void OnReceiveLocal(bool server, ToggleMessage message)
|
||||||
{
|
{
|
||||||
QSBPlayerManager.LocalPlayer.PlayerStates.SuitedUp = message.ToggleValue;
|
QSBPlayerManager.LocalPlayer.SuitedUp = message.ToggleValue;
|
||||||
var animator = QSBPlayerManager.LocalPlayer.AnimationSync;
|
var animator = QSBPlayerManager.LocalPlayer.AnimationSync;
|
||||||
var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited;
|
var type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited;
|
||||||
animator.CurrentType = type;
|
animator.CurrentType = type;
|
||||||
|
@ -29,7 +29,6 @@ namespace QSB.ClientServerStateSync
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DebugLog.DebugWrite($"CHANGE CLIENT STATE FROM {QSBPlayerManager.LocalPlayer.State} to {newState}");
|
|
||||||
QSBPlayerManager.LocalPlayer.State = newState;
|
QSBPlayerManager.LocalPlayer.State = newState;
|
||||||
OnChangeState?.Invoke(newState);
|
OnChangeState?.Invoke(newState);
|
||||||
}
|
}
|
||||||
@ -46,29 +45,24 @@ namespace QSB.ClientServerStateSync
|
|||||||
switch (newScene)
|
switch (newScene)
|
||||||
{
|
{
|
||||||
case OWScene.TitleScreen:
|
case OWScene.TitleScreen:
|
||||||
DebugLog.DebugWrite($"SERVER LOAD TITLESCREEN");
|
|
||||||
newState = ClientState.InTitleScreen;
|
newState = ClientState.InTitleScreen;
|
||||||
break;
|
break;
|
||||||
case OWScene.Credits_Fast:
|
case OWScene.Credits_Fast:
|
||||||
DebugLog.DebugWrite($"SERVER LOAD SHORT CREDITS");
|
|
||||||
newState = ClientState.WatchingShortCredits;
|
newState = ClientState.WatchingShortCredits;
|
||||||
break;
|
break;
|
||||||
case OWScene.Credits_Final:
|
case OWScene.Credits_Final:
|
||||||
case OWScene.PostCreditsScene:
|
case OWScene.PostCreditsScene:
|
||||||
DebugLog.DebugWrite($"SERVER LOAD LONG CREDITS");
|
|
||||||
newState = ClientState.WatchingLongCredits;
|
newState = ClientState.WatchingLongCredits;
|
||||||
break;
|
break;
|
||||||
case OWScene.SolarSystem:
|
case OWScene.SolarSystem:
|
||||||
if (oldScene == OWScene.SolarSystem)
|
if (oldScene == OWScene.SolarSystem)
|
||||||
{
|
{
|
||||||
// reloading scene
|
// reloading scene
|
||||||
DebugLog.DebugWrite($"SERVER RELOAD SOLARSYSTEM");
|
|
||||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// loading in from title screen
|
// loading in from title screen
|
||||||
DebugLog.DebugWrite($"SERVER LOAD SOLARSYSTEM");
|
|
||||||
newState = ClientState.AliveInSolarSystem;
|
newState = ClientState.AliveInSolarSystem;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -85,22 +79,18 @@ namespace QSB.ClientServerStateSync
|
|||||||
switch (newScene)
|
switch (newScene)
|
||||||
{
|
{
|
||||||
case OWScene.TitleScreen:
|
case OWScene.TitleScreen:
|
||||||
DebugLog.DebugWrite($"CLIENT LOAD TITLESCREEN");
|
|
||||||
newState = ClientState.InTitleScreen;
|
newState = ClientState.InTitleScreen;
|
||||||
break;
|
break;
|
||||||
case OWScene.Credits_Fast:
|
case OWScene.Credits_Fast:
|
||||||
DebugLog.DebugWrite($"CLIENT LOAD SHORT CREDITS");
|
|
||||||
newState = ClientState.WatchingShortCredits;
|
newState = ClientState.WatchingShortCredits;
|
||||||
break;
|
break;
|
||||||
case OWScene.Credits_Final:
|
case OWScene.Credits_Final:
|
||||||
case OWScene.PostCreditsScene:
|
case OWScene.PostCreditsScene:
|
||||||
DebugLog.DebugWrite($"CLIENT LOAD LONG CREDITS");
|
|
||||||
newState = ClientState.WatchingLongCredits;
|
newState = ClientState.WatchingLongCredits;
|
||||||
break;
|
break;
|
||||||
case OWScene.SolarSystem:
|
case OWScene.SolarSystem:
|
||||||
if (serverState == ServerState.WaitingForAllPlayersToDie)
|
if (serverState == ServerState.WaitingForAllPlayersToDie)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"SEVER IN DEATH PHASE - WAIT");
|
|
||||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -108,13 +98,11 @@ namespace QSB.ClientServerStateSync
|
|||||||
if (oldScene == OWScene.SolarSystem)
|
if (oldScene == OWScene.SolarSystem)
|
||||||
{
|
{
|
||||||
// reloading scene
|
// reloading scene
|
||||||
DebugLog.DebugWrite($"CLIENT RELOAD SOLARSYSTEM");
|
|
||||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// loading in from title screen
|
// loading in from title screen
|
||||||
DebugLog.DebugWrite($"CLIENT LOAD SOLARSYSTEM");
|
|
||||||
if (serverState == ServerState.WaitingForAllPlayersToReady)
|
if (serverState == ServerState.WaitingForAllPlayersToReady)
|
||||||
{
|
{
|
||||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||||
@ -171,32 +159,17 @@ namespace QSB.ClientServerStateSync
|
|||||||
|
|
||||||
private ClientState ForceGetCurrentState()
|
private ClientState ForceGetCurrentState()
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"ForceGetCurrentState");
|
|
||||||
var currentScene = LoadManager.GetCurrentScene();
|
var currentScene = LoadManager.GetCurrentScene();
|
||||||
var lastScene = LoadManager.GetPreviousScene();
|
|
||||||
|
|
||||||
switch (currentScene)
|
return currentScene switch
|
||||||
{
|
{
|
||||||
case OWScene.TitleScreen:
|
OWScene.TitleScreen => ClientState.InTitleScreen,
|
||||||
DebugLog.DebugWrite($"- TitleScreen");
|
OWScene.Credits_Fast => ClientState.WatchingShortCredits,
|
||||||
return ClientState.InTitleScreen;
|
OWScene.Credits_Final or OWScene.PostCreditsScene => ClientState.WatchingLongCredits,
|
||||||
case OWScene.Credits_Fast:
|
OWScene.SolarSystem => ClientState.AliveInSolarSystem,
|
||||||
DebugLog.DebugWrite($"- Short Credits");
|
OWScene.EyeOfTheUniverse => ClientState.AliveInEye,
|
||||||
return ClientState.WatchingShortCredits;
|
_ => ClientState.NotLoaded,
|
||||||
case OWScene.Credits_Final:
|
};
|
||||||
case OWScene.PostCreditsScene:
|
|
||||||
DebugLog.DebugWrite($"- Long Credits");
|
|
||||||
return ClientState.WatchingLongCredits;
|
|
||||||
case OWScene.SolarSystem:
|
|
||||||
DebugLog.DebugWrite($"- SolarSystem");
|
|
||||||
return ClientState.AliveInSolarSystem;
|
|
||||||
case OWScene.EyeOfTheUniverse:
|
|
||||||
DebugLog.DebugWrite($"- Eye");
|
|
||||||
return ClientState.AliveInEye;
|
|
||||||
default:
|
|
||||||
DebugLog.DebugWrite($"- Not Loaded");
|
|
||||||
return ClientState.NotLoaded;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,17 +54,14 @@ namespace QSB.ClientServerStateSync
|
|||||||
case OWScene.Credits_Fast:
|
case OWScene.Credits_Fast:
|
||||||
case OWScene.Credits_Final:
|
case OWScene.Credits_Final:
|
||||||
case OWScene.PostCreditsScene:
|
case OWScene.PostCreditsScene:
|
||||||
DebugLog.DebugWrite($"SERVER LOAD CREDITS");
|
|
||||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.Credits);
|
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.Credits);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OWScene.TitleScreen:
|
case OWScene.TitleScreen:
|
||||||
DebugLog.DebugWrite($"SERVER LOAD TITLE SCREEN");
|
|
||||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.NotLoaded);
|
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.NotLoaded);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OWScene.SolarSystem:
|
case OWScene.SolarSystem:
|
||||||
DebugLog.DebugWrite($"SERVER LOAD SOLARSYSTEM");
|
|
||||||
if (oldScene == OWScene.SolarSystem)
|
if (oldScene == OWScene.SolarSystem)
|
||||||
{
|
{
|
||||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||||
@ -77,7 +74,6 @@ namespace QSB.ClientServerStateSync
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OWScene.EyeOfTheUniverse:
|
case OWScene.EyeOfTheUniverse:
|
||||||
DebugLog.DebugWrite($"EYE");
|
|
||||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -98,21 +94,15 @@ namespace QSB.ClientServerStateSync
|
|||||||
|
|
||||||
private ServerState ForceGetCurrentState()
|
private ServerState ForceGetCurrentState()
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"ForceGetCurrentState");
|
|
||||||
|
|
||||||
var currentScene = LoadManager.GetCurrentScene();
|
var currentScene = LoadManager.GetCurrentScene();
|
||||||
var lastScene = LoadManager.GetPreviousScene();
|
|
||||||
|
|
||||||
switch (currentScene)
|
switch (currentScene)
|
||||||
{
|
{
|
||||||
case OWScene.SolarSystem:
|
case OWScene.SolarSystem:
|
||||||
DebugLog.DebugWrite($"- SolarSystem");
|
|
||||||
return ServerState.InSolarSystem;
|
return ServerState.InSolarSystem;
|
||||||
case OWScene.EyeOfTheUniverse:
|
case OWScene.EyeOfTheUniverse:
|
||||||
DebugLog.DebugWrite($"- Eye");
|
|
||||||
return ServerState.InEye;
|
return ServerState.InEye;
|
||||||
default:
|
default:
|
||||||
DebugLog.DebugWrite($"- Not Loaded");
|
|
||||||
return ServerState.NotLoaded;
|
return ServerState.NotLoaded;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,5 +98,6 @@
|
|||||||
public static string QSBMeteorSpecialImpact = "QSBMeteorSpecialImpact";
|
public static string QSBMeteorSpecialImpact = "QSBMeteorSpecialImpact";
|
||||||
public static string QSBFragmentDamage = "QSBFragmentDamage";
|
public static string QSBFragmentDamage = "QSBFragmentDamage";
|
||||||
public static string QSBFragmentResync = "QSBFragmentResync";
|
public static string QSBFragmentResync = "QSBFragmentResync";
|
||||||
|
public static string QSBLearnLaunchCodes = "QSBLearnLaunchCodes";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
DebugEvent,
|
DebugEvent,
|
||||||
SatelliteProjector,
|
SatelliteProjector,
|
||||||
SatelliteProjectorSnapshot,
|
SatelliteProjectorSnapshot,
|
||||||
|
LaunchCodes,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SERVER EVENTS
|
* SERVER EVENTS
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
{
|
{
|
||||||
public interface IQSBEvent
|
public interface IQSBEvent
|
||||||
{
|
{
|
||||||
|
EventType Type { get; }
|
||||||
|
|
||||||
void SetupListener();
|
void SetupListener();
|
||||||
void CloseListener();
|
void CloseListener();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using OWML.Common;
|
using OWML.Common;
|
||||||
|
using QSB.ClientServerStateSync;
|
||||||
using QSB.Messaging;
|
using QSB.Messaging;
|
||||||
using QSB.Player;
|
using QSB.Player;
|
||||||
|
using QSB.Player.Events;
|
||||||
using QSB.Player.TransformSync;
|
using QSB.Player.TransformSync;
|
||||||
using QSB.Utility;
|
using QSB.Utility;
|
||||||
using QuantumUNET.Components;
|
using QuantumUNET.Components;
|
||||||
@ -75,10 +77,24 @@ namespace QSB.Events
|
|||||||
|
|
||||||
if (PlayerTransformSync.LocalInstance == null || PlayerTransformSync.LocalInstance.GetComponent<QNetworkIdentity>() == null)
|
if (PlayerTransformSync.LocalInstance == null || PlayerTransformSync.LocalInstance.GetComponent<QNetworkIdentity>() == null)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Warning - Tried to handle message of type <{message.GetType().Name}> before localplayer was established.", MessageType.Warning);
|
DebugLog.ToConsole($"Warning - Tried to handle message of type <{GetType().Name}> before localplayer was established.", MessageType.Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (QSBPlayerManager.PlayerExists(message.FromId))
|
||||||
|
{
|
||||||
|
var player = QSBPlayerManager.GetPlayer(message.FromId);
|
||||||
|
|
||||||
|
if (!player.IsReady
|
||||||
|
&& player.PlayerId != LocalPlayerId
|
||||||
|
&& (player.State is ClientState.AliveInSolarSystem or ClientState.AliveInEye or ClientState.DeadInSolarSystem)
|
||||||
|
&& (message is not PlayerInformationEvent or PlayerReadyEvent))
|
||||||
|
{
|
||||||
|
DebugLog.ToConsole($"Warning - Got message from player {message.FromId}, but they were not ready. Asking for state resync, just in case.", MessageType.Warning);
|
||||||
|
QSBEventManager.FireEvent(EventNames.QSBRequestStateResync);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (message.FromId == QSBPlayerManager.LocalPlayerId ||
|
if (message.FromId == QSBPlayerManager.LocalPlayerId ||
|
||||||
@ -92,7 +108,7 @@ namespace QSB.Events
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Error - Exception handling message {message.GetType().Name} : {ex}", MessageType.Error);
|
DebugLog.ToConsole($"Error - Exception handling message {GetType().Name} : {ex}", MessageType.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,9 @@ using QSB.Utility.Events;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using QSB.MeteorSync.Events;
|
using QSB.MeteorSync.Events;
|
||||||
using QSB.RespawnSync.Events;
|
using QSB.RespawnSync.Events;
|
||||||
|
using System.Linq;
|
||||||
|
using HarmonyLib;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace QSB.Events
|
namespace QSB.Events
|
||||||
{
|
{
|
||||||
@ -77,6 +80,7 @@ namespace QSB.Events
|
|||||||
new DebugEvent(),
|
new DebugEvent(),
|
||||||
new SatelliteProjectorEvent(),
|
new SatelliteProjectorEvent(),
|
||||||
new SatelliteProjectorSnapshotEvent(),
|
new SatelliteProjectorSnapshotEvent(),
|
||||||
|
new LaunchCodesEvent(),
|
||||||
// World Objects
|
// World Objects
|
||||||
new ElevatorEvent(),
|
new ElevatorEvent(),
|
||||||
new GeyserEvent(),
|
new GeyserEvent(),
|
||||||
@ -129,6 +133,26 @@ namespace QSB.Events
|
|||||||
|
|
||||||
_eventList.ForEach(ev => ev.SetupListener());
|
_eventList.ForEach(ev => ev.SetupListener());
|
||||||
|
|
||||||
|
var duplicates = _eventList
|
||||||
|
.GroupBy(qsbEvent => qsbEvent.Type)
|
||||||
|
.Where(group => group.Count() > 1);
|
||||||
|
|
||||||
|
if (duplicates.Count() != 0)
|
||||||
|
{
|
||||||
|
var totalSb = new StringBuilder();
|
||||||
|
foreach (var group in duplicates)
|
||||||
|
{
|
||||||
|
totalSb.Append($"{group.Key}\r\n");
|
||||||
|
foreach (var qsbEvent in group)
|
||||||
|
{
|
||||||
|
totalSb.Append($"- {qsbEvent.GetType().Name}\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugLog.ToConsole($"Error - These QSBEvents handle the same EventType!\r\n{totalSb}", MessageType.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Ready = true;
|
Ready = true;
|
||||||
|
|
||||||
DebugLog.DebugWrite("Event Manager ready.", MessageType.Success);
|
DebugLog.DebugWrite("Event Manager ready.", MessageType.Success);
|
||||||
|
41
QSB/Player/Events/LaunchCodesEvent.cs
Normal file
41
QSB/Player/Events/LaunchCodesEvent.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
using QSB.Events;
|
||||||
|
using QSB.Messaging;
|
||||||
|
using QSB.Utility;
|
||||||
|
|
||||||
|
namespace QSB.Player.Events
|
||||||
|
{
|
||||||
|
internal class LaunchCodesEvent : QSBEvent<PlayerMessage>
|
||||||
|
{
|
||||||
|
public override EventType Type => EventType.LaunchCodes;
|
||||||
|
|
||||||
|
public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBLearnLaunchCodes, Handler);
|
||||||
|
public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBLearnLaunchCodes, Handler);
|
||||||
|
|
||||||
|
private void Handler() => SendEvent(CreateMessage());
|
||||||
|
|
||||||
|
private PlayerMessage CreateMessage() => new()
|
||||||
|
{
|
||||||
|
AboutId = LocalPlayerId
|
||||||
|
};
|
||||||
|
|
||||||
|
public override void OnReceiveRemote(bool isHost, PlayerMessage message)
|
||||||
|
{
|
||||||
|
var flag = false;
|
||||||
|
if (!PlayerData._currentGameSave.PersistentConditionExists("LAUNCH_CODES_GIVEN"))
|
||||||
|
{
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
else if (PlayerData._currentGameSave.GetPersistentCondition("LAUNCH_CODES_GIVEN"))
|
||||||
|
{
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag)
|
||||||
|
{
|
||||||
|
DialogueConditionManager.SharedInstance.SetConditionState("SCIENTIST_3", true);
|
||||||
|
PlayerData._currentGameSave.SetPersistentCondition("LAUNCH_CODES_GIVEN", true);
|
||||||
|
GlobalMessenger.FireEvent("LearnLaunchCodes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,13 @@ namespace QSB.Player.Events
|
|||||||
{
|
{
|
||||||
AboutId = player.PlayerId,
|
AboutId = player.PlayerId,
|
||||||
PlayerName = player.Name,
|
PlayerName = player.Name,
|
||||||
PlayerState = player.PlayerStates,
|
IsReady = player.IsReady,
|
||||||
|
FlashlightActive = player.FlashlightActive,
|
||||||
|
SuitedUp = player.SuitedUp,
|
||||||
|
ProbeLauncherEquipped = player.ProbeLauncherEquipped,
|
||||||
|
SignalscopeEquipped = player.SignalscopeEquipped,
|
||||||
|
TranslatorEquipped = player.TranslatorEquipped,
|
||||||
|
ProbeActive = player.ProbeActive,
|
||||||
ClientState = player.State
|
ClientState = player.State
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,23 +7,26 @@ namespace QSB.Player.Events
|
|||||||
public class PlayerInformationMessage : PlayerMessage
|
public class PlayerInformationMessage : PlayerMessage
|
||||||
{
|
{
|
||||||
public string PlayerName { get; set; }
|
public string PlayerName { get; set; }
|
||||||
public PlayerState PlayerState { get; set; }
|
public bool IsReady { get; set; }
|
||||||
|
public bool FlashlightActive { get; set; }
|
||||||
|
public bool SuitedUp { get; set; }
|
||||||
|
public bool ProbeLauncherEquipped { get; set; }
|
||||||
|
public bool SignalscopeEquipped { get; set; }
|
||||||
|
public bool TranslatorEquipped { get; set; }
|
||||||
|
public bool ProbeActive { get; set; }
|
||||||
public ClientState ClientState { get; set; }
|
public ClientState ClientState { get; set; }
|
||||||
|
|
||||||
public override void Deserialize(QNetworkReader reader)
|
public override void Deserialize(QNetworkReader reader)
|
||||||
{
|
{
|
||||||
base.Deserialize(reader);
|
base.Deserialize(reader);
|
||||||
PlayerName = reader.ReadString();
|
PlayerName = reader.ReadString();
|
||||||
PlayerState = new PlayerState
|
IsReady = reader.ReadBoolean();
|
||||||
{
|
FlashlightActive = reader.ReadBoolean();
|
||||||
IsReady = reader.ReadBoolean(),
|
SuitedUp = reader.ReadBoolean();
|
||||||
FlashlightActive = reader.ReadBoolean(),
|
ProbeLauncherEquipped = reader.ReadBoolean();
|
||||||
SuitedUp = reader.ReadBoolean(),
|
SignalscopeEquipped = reader.ReadBoolean();
|
||||||
ProbeLauncherEquipped = reader.ReadBoolean(),
|
TranslatorEquipped = reader.ReadBoolean();
|
||||||
SignalscopeEquipped = reader.ReadBoolean(),
|
ProbeActive = reader.ReadBoolean();
|
||||||
TranslatorEquipped = reader.ReadBoolean(),
|
|
||||||
ProbeActive = reader.ReadBoolean()
|
|
||||||
};
|
|
||||||
ClientState = (ClientState)reader.ReadInt32();
|
ClientState = (ClientState)reader.ReadInt32();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,13 +34,13 @@ namespace QSB.Player.Events
|
|||||||
{
|
{
|
||||||
base.Serialize(writer);
|
base.Serialize(writer);
|
||||||
writer.Write(PlayerName);
|
writer.Write(PlayerName);
|
||||||
writer.Write(PlayerState.IsReady);
|
writer.Write(IsReady);
|
||||||
writer.Write(PlayerState.FlashlightActive);
|
writer.Write(FlashlightActive);
|
||||||
writer.Write(PlayerState.SuitedUp);
|
writer.Write(SuitedUp);
|
||||||
writer.Write(PlayerState.ProbeLauncherEquipped);
|
writer.Write(ProbeLauncherEquipped);
|
||||||
writer.Write(PlayerState.SignalscopeEquipped);
|
writer.Write(SignalscopeEquipped);
|
||||||
writer.Write(PlayerState.TranslatorEquipped);
|
writer.Write(TranslatorEquipped);
|
||||||
writer.Write(PlayerState.ProbeActive);
|
writer.Write(ProbeActive);
|
||||||
writer.Write((int)ClientState);
|
writer.Write((int)ClientState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ namespace QSB.Player.Events
|
|||||||
|
|
||||||
if (QSBSceneManager.IsInUniverse)
|
if (QSBSceneManager.IsInUniverse)
|
||||||
{
|
{
|
||||||
QSBPlayerManager.LocalPlayer.PlayerStates.IsReady = true;
|
QSBPlayerManager.LocalPlayer.IsReady = true;
|
||||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ namespace QSB.Player.Events
|
|||||||
private static void HandleServer(ToggleMessage message)
|
private static void HandleServer(ToggleMessage message)
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"[SERVER] Get ready event from {message.FromId}", MessageType.Success);
|
DebugLog.DebugWrite($"[SERVER] Get ready event from {message.FromId}", MessageType.Success);
|
||||||
QSBPlayerManager.GetPlayer(message.AboutId).PlayerStates.IsReady = message.ToggleValue;
|
QSBPlayerManager.GetPlayer(message.AboutId).IsReady = message.ToggleValue;
|
||||||
QSBEventManager.FireEvent(EventNames.QSBPlayerInformation);
|
QSBEventManager.FireEvent(EventNames.QSBPlayerInformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
|
using QSB.Events;
|
||||||
using QSB.Patches;
|
using QSB.Patches;
|
||||||
|
|
||||||
namespace QSB.Player.Patches
|
namespace QSB.Player.Patches
|
||||||
@ -21,6 +22,32 @@ namespace QSB.Player.Patches
|
|||||||
[HarmonyPrefix]
|
[HarmonyPrefix]
|
||||||
[HarmonyPatch(typeof(PauseMenuManager), nameof(PauseMenuManager.OnExitToMainMenu))]
|
[HarmonyPatch(typeof(PauseMenuManager), nameof(PauseMenuManager.OnExitToMainMenu))]
|
||||||
public static void PauseMenuManager_OnExitToMainMenu()
|
public static void PauseMenuManager_OnExitToMainMenu()
|
||||||
=> QSBPlayerManager.LocalPlayer.PlayerStates.IsReady = false;
|
=> QSBPlayerManager.LocalPlayer.IsReady = false;
|
||||||
|
|
||||||
|
[HarmonyPrefix]
|
||||||
|
[HarmonyPatch(typeof(PlayerData), nameof(PlayerData.LearnLaunchCodes))]
|
||||||
|
public static bool LearnLaunchCodes()
|
||||||
|
{
|
||||||
|
var flag = false;
|
||||||
|
if (!PlayerData._currentGameSave.PersistentConditionExists("LAUNCH_CODES_GIVEN"))
|
||||||
|
{
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (PlayerData._currentGameSave.GetPersistentCondition("LAUNCH_CODES_GIVEN"))
|
||||||
|
{
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag)
|
||||||
|
{
|
||||||
|
DialogueConditionManager.SharedInstance.SetConditionState("SCIENTIST_3", true);
|
||||||
|
PlayerData._currentGameSave.SetPersistentCondition("LAUNCH_CODES_GIVEN", true);
|
||||||
|
GlobalMessenger.FireEvent("LearnLaunchCodes");
|
||||||
|
QSBEventManager.FireEvent(EventNames.QSBLearnLaunchCodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ namespace QSB.Player
|
|||||||
Initialize();
|
Initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_isReady || !_player.PlayerStates.IsReady)
|
if (!_isReady || !_player.IsReady)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ using QSB.Animation.Player;
|
|||||||
using QSB.Animation.Player.Thrusters;
|
using QSB.Animation.Player.Thrusters;
|
||||||
using QSB.CampfireSync.WorldObjects;
|
using QSB.CampfireSync.WorldObjects;
|
||||||
using QSB.ClientServerStateSync;
|
using QSB.ClientServerStateSync;
|
||||||
|
using QSB.Events;
|
||||||
using QSB.ItemSync.WorldObjects.Items;
|
using QSB.ItemSync.WorldObjects.Items;
|
||||||
using QSB.Player.TransformSync;
|
using QSB.Player.TransformSync;
|
||||||
using QSB.QuantumSync;
|
using QSB.QuantumSync;
|
||||||
@ -22,7 +23,6 @@ namespace QSB.Player
|
|||||||
public uint PlayerId { get; }
|
public uint PlayerId { get; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public PlayerHUDMarker HudMarker { get; set; }
|
public PlayerHUDMarker HudMarker { get; set; }
|
||||||
public PlayerState PlayerStates { get; set; } = new PlayerState();
|
|
||||||
public PlayerTransformSync TransformSync { get; set; }
|
public PlayerTransformSync TransformSync { get; set; }
|
||||||
|
|
||||||
// Body Objects
|
// Body Objects
|
||||||
@ -30,10 +30,11 @@ namespace QSB.Player
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_camera == null && PlayerStates.IsReady)
|
if (_camera == null && IsReady)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Warning - {PlayerId}.Camera is null!", MessageType.Warning);
|
DebugLog.ToConsole($"Warning - {PlayerId}.Camera is null!", MessageType.Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
return _camera;
|
return _camera;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
@ -42,6 +43,7 @@ namespace QSB.Player
|
|||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Warning - Setting {PlayerId}.Camera to null.", MessageType.Warning);
|
DebugLog.ToConsole($"Warning - Setting {PlayerId}.Camera to null.", MessageType.Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
_camera = value;
|
_camera = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -52,7 +54,7 @@ namespace QSB.Player
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_body == null && PlayerStates.IsReady)
|
if (_body == null && IsReady)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Warning - {PlayerId}.Body is null!", MessageType.Warning);
|
DebugLog.ToConsole($"Warning - {PlayerId}.Body is null!", MessageType.Warning);
|
||||||
}
|
}
|
||||||
@ -77,7 +79,18 @@ namespace QSB.Player
|
|||||||
// Tools
|
// Tools
|
||||||
public GameObject ProbeBody { get; set; }
|
public GameObject ProbeBody { get; set; }
|
||||||
public QSBProbe Probe { get; set; }
|
public QSBProbe Probe { get; set; }
|
||||||
public QSBFlashlight FlashLight => CameraBody?.GetComponentInChildren<QSBFlashlight>();
|
public QSBFlashlight FlashLight
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (CameraBody == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CameraBody.GetComponentInChildren<QSBFlashlight>();
|
||||||
|
}
|
||||||
|
}
|
||||||
public QSBTool Signalscope => GetToolByType(ToolType.Signalscope);
|
public QSBTool Signalscope => GetToolByType(ToolType.Signalscope);
|
||||||
public QSBTool Translator => GetToolByType(ToolType.Translator);
|
public QSBTool Translator => GetToolByType(ToolType.Translator);
|
||||||
public QSBProbeLauncherTool ProbeLauncher => (QSBProbeLauncherTool)GetToolByType(ToolType.ProbeLauncher);
|
public QSBProbeLauncherTool ProbeLauncher => (QSBProbeLauncherTool)GetToolByType(ToolType.ProbeLauncher);
|
||||||
@ -105,11 +118,18 @@ namespace QSB.Player
|
|||||||
public JetpackAccelerationSync JetpackAcceleration { get; set; }
|
public JetpackAccelerationSync JetpackAcceleration { get; set; }
|
||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
|
public bool IsReady { get; set; }
|
||||||
public bool IsInMoon; // MOVE : move into PlayerStates?
|
public bool IsInMoon; // MOVE : move into PlayerStates?
|
||||||
public bool IsInShrine; // MOVE : move into PlayerStates?
|
public bool IsInShrine; // MOVE : move into PlayerStates?
|
||||||
public IQSBQuantumObject EntangledObject;
|
public IQSBQuantumObject EntangledObject;
|
||||||
public bool IsDead { get; set; }
|
public bool IsDead { get; set; }
|
||||||
public ClientState State { get; set; }
|
public ClientState State { get; set; }
|
||||||
|
public bool FlashlightActive { get; set; }
|
||||||
|
public bool SuitedUp { get; set; }
|
||||||
|
public bool ProbeLauncherEquipped { get; set; }
|
||||||
|
public bool SignalscopeEquipped { get; set; }
|
||||||
|
public bool TranslatorEquipped { get; set; }
|
||||||
|
public bool ProbeActive { get; set; }
|
||||||
|
|
||||||
// Local only
|
// Local only
|
||||||
public PlayerProbeLauncher LocalProbeLauncher
|
public PlayerProbeLauncher LocalProbeLauncher
|
||||||
@ -174,19 +194,35 @@ namespace QSB.Player
|
|||||||
CurrentCharacterDialogueTreeId = -1;
|
CurrentCharacterDialogueTreeId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateStateObjects()
|
public void UpdateObjectsFromStates()
|
||||||
{
|
{
|
||||||
if (OWInput.GetInputMode() == InputMode.None)
|
if (OWInput.GetInputMode() == InputMode.None)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FlashLight?.UpdateState(PlayerStates.FlashlightActive);
|
FlashLight?.UpdateState(FlashlightActive);
|
||||||
Translator?.ChangeEquipState(PlayerStates.TranslatorEquipped);
|
Translator?.ChangeEquipState(TranslatorEquipped);
|
||||||
ProbeLauncher?.ChangeEquipState(PlayerStates.ProbeLauncherEquipped);
|
ProbeLauncher?.ChangeEquipState(ProbeLauncherEquipped);
|
||||||
Signalscope?.ChangeEquipState(PlayerStates.SignalscopeEquipped);
|
Signalscope?.ChangeEquipState(SignalscopeEquipped);
|
||||||
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.GetSyncObject<AnimationSync>(PlayerId) != null,
|
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.GetSyncObject<AnimationSync>(PlayerId) != null,
|
||||||
() => QSBPlayerManager.GetSyncObject<AnimationSync>(PlayerId).SetSuitState(PlayerStates.SuitedUp));
|
() => QSBPlayerManager.GetSyncObject<AnimationSync>(PlayerId).SetSuitState(SuitedUp));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateStatesFromObjects()
|
||||||
|
{
|
||||||
|
if (Locator.GetFlashlight() == null || Locator.GetPlayerBody() == null)
|
||||||
|
{
|
||||||
|
FlashlightActive = false;
|
||||||
|
SuitedUp = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FlashlightActive = Locator.GetFlashlight()._flashlightOn;
|
||||||
|
SuitedUp = Locator.GetPlayerBody().GetComponent<PlayerSpacesuit>().IsWearingSuit(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSBEventManager.FireEvent(EventNames.QSBPlayerInformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
private QSBTool GetToolByType(ToolType type) => CameraBody?.GetComponentsInChildren<QSBTool>()
|
private QSBTool GetToolByType(ToolType type) => CameraBody?.GetComponentsInChildren<QSBTool>()
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
namespace QSB.Player
|
|
||||||
{
|
|
||||||
public class PlayerState
|
|
||||||
{
|
|
||||||
public bool IsReady { get; set; }
|
|
||||||
|
|
||||||
public bool FlashlightActive { get; set; }
|
|
||||||
public bool SuitedUp { get; set; }
|
|
||||||
public bool ProbeLauncherEquipped { get; set; }
|
|
||||||
public bool SignalscopeEquipped { get; set; }
|
|
||||||
public bool TranslatorEquipped { get; set; }
|
|
||||||
public bool ProbeActive { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -82,10 +82,16 @@ namespace QSB.Player
|
|||||||
{
|
{
|
||||||
var player = GetPlayer(message.AboutId);
|
var player = GetPlayer(message.AboutId);
|
||||||
player.Name = message.PlayerName;
|
player.Name = message.PlayerName;
|
||||||
player.PlayerStates = message.PlayerState;
|
player.IsReady = message.IsReady;
|
||||||
if (LocalPlayer.PlayerStates.IsReady)
|
player.FlashlightActive = message.FlashlightActive;
|
||||||
|
player.SuitedUp = message.SuitedUp;
|
||||||
|
player.ProbeLauncherEquipped = message.ProbeLauncherEquipped;
|
||||||
|
player.SignalscopeEquipped = message.SignalscopeEquipped;
|
||||||
|
player.TranslatorEquipped = message.TranslatorEquipped;
|
||||||
|
player.ProbeActive = message.ProbeActive;
|
||||||
|
if (LocalPlayer.IsReady)
|
||||||
{
|
{
|
||||||
player.UpdateStateObjects();
|
player.UpdateObjectsFromStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
player.State = message.ClientState;
|
player.State = message.ClientState;
|
||||||
@ -172,7 +178,7 @@ namespace QSB.Player
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return playerList.Where(x => x.PlayerStates.IsReady).OrderBy(x => Vector3.Distance(x.Body.transform.position, worldPoint)).FirstOrDefault();
|
return playerList.Where(x => x.IsReady).OrderBy(x => Vector3.Distance(x.Body.transform.position, worldPoint)).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<Tuple<PlayerInfo, IQSBOWItem>> GetPlayerCarryItems()
|
public static IEnumerable<Tuple<PlayerInfo, IQSBOWItem>> GetPlayerCarryItems()
|
||||||
|
@ -60,12 +60,12 @@ namespace QSB.Player.TransformSync
|
|||||||
|
|
||||||
if (isInUniverse)
|
if (isInUniverse)
|
||||||
{
|
{
|
||||||
Player.PlayerStates.IsReady = true;
|
Player.IsReady = true;
|
||||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Player.PlayerStates.IsReady = false;
|
Player.IsReady = false;
|
||||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, false);
|
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@
|
|||||||
<Compile Include="ConversationSync\ConversationManager.cs" />
|
<Compile Include="ConversationSync\ConversationManager.cs" />
|
||||||
<Compile Include="DeathSync\EndLoopReason.cs" />
|
<Compile Include="DeathSync\EndLoopReason.cs" />
|
||||||
<Compile Include="DeathSync\Events\EndLoopEvent.cs" />
|
<Compile Include="DeathSync\Events\EndLoopEvent.cs" />
|
||||||
<Compile Include="Player\PlayerState.cs" />
|
<Compile Include="Player\Events\LaunchCodesEvent.cs" />
|
||||||
<Compile Include="RespawnSync\Events\PlayerRespawnEvent.cs" />
|
<Compile Include="RespawnSync\Events\PlayerRespawnEvent.cs" />
|
||||||
<Compile Include="DeathSync\Events\StartLoopEvent.cs" />
|
<Compile Include="DeathSync\Events\StartLoopEvent.cs" />
|
||||||
<Compile Include="DeathSync\Patches\MapPatches.cs" />
|
<Compile Include="DeathSync\Patches\MapPatches.cs" />
|
||||||
|
@ -49,6 +49,7 @@ namespace QSB.RespawnSync
|
|||||||
private void Init(OWScene newScene, bool inUniverse)
|
private void Init(OWScene newScene, bool inUniverse)
|
||||||
{
|
{
|
||||||
QSBPlayerManager.ShowAllPlayers();
|
QSBPlayerManager.ShowAllPlayers();
|
||||||
|
QSBPlayerManager.LocalPlayer.UpdateStatesFromObjects();
|
||||||
QSBPlayerManager.PlayerList.ForEach(x => x.IsDead = false);
|
QSBPlayerManager.PlayerList.ForEach(x => x.IsDead = false);
|
||||||
_playersPendingRespawn.Clear();
|
_playersPendingRespawn.Clear();
|
||||||
|
|
||||||
@ -99,7 +100,6 @@ namespace QSB.RespawnSync
|
|||||||
|
|
||||||
public void TriggerRespawnMap()
|
public void TriggerRespawnMap()
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite($"TRIGGER RESPAWN MAP");
|
|
||||||
QSBPatchManager.DoPatchType(QSBPatchTypes.RespawnTime);
|
QSBPatchManager.DoPatchType(QSBPatchTypes.RespawnTime);
|
||||||
QSBCore.UnityEvents.FireOnNextUpdate(() => GlobalMessenger.FireEvent("TriggerObservatoryMap"));
|
QSBCore.UnityEvents.FireOnNextUpdate(() => GlobalMessenger.FireEvent("TriggerObservatoryMap"));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using QSB.ClientServerStateSync;
|
using QSB.ClientServerStateSync;
|
||||||
using QSB.Events;
|
using QSB.Events;
|
||||||
|
using QSB.Utility;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace QSB.StatueSync.Events
|
namespace QSB.StatueSync.Events
|
||||||
@ -27,6 +28,8 @@ namespace QSB.StatueSync.Events
|
|||||||
|
|
||||||
public override void OnReceiveLocal(bool server, StartStatueMessage message)
|
public override void OnReceiveLocal(bool server, StartStatueMessage message)
|
||||||
{
|
{
|
||||||
|
DebugLog.DebugWrite($"OnReceiveLocal StartStatueEvent");
|
||||||
|
|
||||||
if (!QSBCore.IsHost)
|
if (!QSBCore.IsHost)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -36,6 +39,9 @@ namespace QSB.StatueSync.Events
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void OnReceiveRemote(bool server, StartStatueMessage message)
|
public override void OnReceiveRemote(bool server, StartStatueMessage message)
|
||||||
=> StatueManager.Instance.BeginSequence(message.PlayerPosition, message.PlayerRotation, message.CameraDegrees);
|
{
|
||||||
|
DebugLog.DebugWrite($"OnReceiveRemote StartStatueEvent");
|
||||||
|
StatueManager.Instance.BeginSequence(message.PlayerPosition, message.PlayerRotation, message.CameraDegrees);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using QSB.Player;
|
using QSB.Player;
|
||||||
|
using QSB.Utility;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -12,14 +13,22 @@ namespace QSB.StatueSync
|
|||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
Instance = this;
|
Instance = this;
|
||||||
QSBSceneManager.OnUniverseSceneLoaded += (OWScene oldScene, OWScene newScene) => QSBPlayerManager.ShowAllPlayers();
|
QSBSceneManager.OnUniverseSceneLoaded += OnUniverseSceneLoaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
=> QSBSceneManager.OnUniverseSceneLoaded -= (OWScene oldScene, OWScene newScene) => QSBPlayerManager.ShowAllPlayers();
|
=> QSBSceneManager.OnUniverseSceneLoaded -= OnUniverseSceneLoaded;
|
||||||
|
|
||||||
|
private void OnUniverseSceneLoaded(OWScene oldScene, OWScene newScene)
|
||||||
|
{
|
||||||
|
QSBPlayerManager.ShowAllPlayers();
|
||||||
|
QSBPlayerManager.LocalPlayer.UpdateStatesFromObjects();
|
||||||
|
}
|
||||||
|
|
||||||
public void BeginSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
public void BeginSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
||||||
=> StartCoroutine(BeginRemoteUplinkSequence(position, rotation, cameraDegrees));
|
{
|
||||||
|
StartCoroutine(BeginRemoteUplinkSequence(position, rotation, cameraDegrees));
|
||||||
|
}
|
||||||
|
|
||||||
private IEnumerator BeginRemoteUplinkSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
private IEnumerator BeginRemoteUplinkSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using OWML.Common;
|
using OWML.Common;
|
||||||
|
using QSB.ClientServerStateSync;
|
||||||
|
using QSB.Player;
|
||||||
using QSB.Utility;
|
using QSB.Utility;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -56,8 +58,12 @@ namespace QSB.Syncs
|
|||||||
public void EncodePosition(Vector3 worldPosition)
|
public void EncodePosition(Vector3 worldPosition)
|
||||||
{
|
{
|
||||||
if (_referenceTransform == null)
|
if (_referenceTransform == null)
|
||||||
|
{
|
||||||
|
if (QSBPlayerManager.LocalPlayer.State is ClientState.AliveInEye or ClientState.AliveInSolarSystem or ClientState.DeadInSolarSystem)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,8 +77,12 @@ namespace QSB.Syncs
|
|||||||
public void EncodeRotation(Quaternion worldRotation)
|
public void EncodeRotation(Quaternion worldRotation)
|
||||||
{
|
{
|
||||||
if (_referenceTransform == null)
|
if (_referenceTransform == null)
|
||||||
|
{
|
||||||
|
if (QSBPlayerManager.LocalPlayer.State is ClientState.AliveInEye or ClientState.AliveInSolarSystem or ClientState.DeadInSolarSystem)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,8 +107,12 @@ namespace QSB.Syncs
|
|||||||
public Vector3 GetTargetPosition_Unparented()
|
public Vector3 GetTargetPosition_Unparented()
|
||||||
{
|
{
|
||||||
if (_referenceTransform == null)
|
if (_referenceTransform == null)
|
||||||
|
{
|
||||||
|
if (QSBPlayerManager.LocalPlayer.State is ClientState.AliveInEye or ClientState.AliveInSolarSystem or ClientState.DeadInSolarSystem)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
return Vector3.zero;
|
return Vector3.zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,8 +125,12 @@ namespace QSB.Syncs
|
|||||||
public Quaternion GetTargetRotation_Unparented()
|
public Quaternion GetTargetRotation_Unparented()
|
||||||
{
|
{
|
||||||
if (_referenceTransform == null)
|
if (_referenceTransform == null)
|
||||||
|
{
|
||||||
|
if (QSBPlayerManager.LocalPlayer.State is ClientState.AliveInEye or ClientState.AliveInSolarSystem or ClientState.DeadInSolarSystem)
|
||||||
{
|
{
|
||||||
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
DebugLog.ToConsole($"Error - _referenceTransform has not been set for {_attachedTransform.name}", MessageType.Error);
|
||||||
|
}
|
||||||
|
|
||||||
return Quaternion.identity;
|
return Quaternion.identity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ namespace QSB.Syncs.Sectored
|
|||||||
{
|
{
|
||||||
writer.Write(-1);
|
writer.Write(-1);
|
||||||
}
|
}
|
||||||
else if (!Player.PlayerStates.IsReady)
|
else if (!Player.IsReady)
|
||||||
{
|
{
|
||||||
writer.Write(-1);
|
writer.Write(-1);
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ namespace QSB.Syncs
|
|||||||
public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId);
|
public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId);
|
||||||
private bool _baseIsReady => QSBPlayerManager.PlayerExists(PlayerId)
|
private bool _baseIsReady => QSBPlayerManager.PlayerExists(PlayerId)
|
||||||
&& Player != null
|
&& Player != null
|
||||||
&& Player.PlayerStates.IsReady
|
&& Player.IsReady
|
||||||
&& NetId.Value != uint.MaxValue
|
&& NetId.Value != uint.MaxValue
|
||||||
&& NetId.Value != 0U
|
&& NetId.Value != 0U
|
||||||
&& WorldObjectManager.AllReady;
|
&& WorldObjectManager.AllReady;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using QSB.Patches;
|
using QSB.Patches;
|
||||||
|
using QSB.Utility;
|
||||||
|
|
||||||
namespace QSB.TimeSync.Patches
|
namespace QSB.TimeSync.Patches
|
||||||
{
|
{
|
||||||
@ -11,8 +12,10 @@ namespace QSB.TimeSync.Patches
|
|||||||
[HarmonyPrefix]
|
[HarmonyPrefix]
|
||||||
[HarmonyPatch(typeof(PlayerCameraEffectController), nameof(PlayerCameraEffectController.OnStartOfTimeLoop))]
|
[HarmonyPatch(typeof(PlayerCameraEffectController), nameof(PlayerCameraEffectController.OnStartOfTimeLoop))]
|
||||||
public static bool PlayerCameraEffectController_OnStartOfTimeLoop()
|
public static bool PlayerCameraEffectController_OnStartOfTimeLoop()
|
||||||
=> false;
|
{
|
||||||
|
DebugLog.DebugWrite($"OnStartOfTimeLoop");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
[HarmonyPrefix]
|
[HarmonyPrefix]
|
||||||
[HarmonyPatch(typeof(OWTime), nameof(OWTime.Pause))]
|
[HarmonyPatch(typeof(OWTime), nameof(OWTime.Pause))]
|
||||||
public static bool StopPausing()
|
public static bool StopPausing()
|
||||||
|
@ -32,11 +32,11 @@ namespace QSB.Tools.FlashlightTool.Events
|
|||||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
player.PlayerStates.FlashlightActive = message.ToggleValue;
|
player.FlashlightActive = message.ToggleValue;
|
||||||
player.FlashLight?.UpdateState(message.ToggleValue);
|
player.FlashLight?.UpdateState(message.ToggleValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
||||||
QSBPlayerManager.LocalPlayer.PlayerStates.FlashlightActive = message.ToggleValue;
|
QSBPlayerManager.LocalPlayer.FlashlightActive = message.ToggleValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -66,11 +66,11 @@ namespace QSB.Tools.ProbeLauncherTool.Events
|
|||||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
player.PlayerStates.ProbeLauncherEquipped = message.ToggleValue;
|
player.ProbeLauncherEquipped = message.ToggleValue;
|
||||||
player.ProbeLauncher?.ChangeEquipState(message.ToggleValue);
|
player.ProbeLauncher?.ChangeEquipState(message.ToggleValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
||||||
QSBPlayerManager.LocalPlayer.PlayerStates.ProbeLauncherEquipped = message.ToggleValue;
|
QSBPlayerManager.LocalPlayer.ProbeLauncherEquipped = message.ToggleValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,7 +25,7 @@ namespace QSB.Tools.ProbeTool.Events
|
|||||||
public override void OnReceiveRemote(bool server, EnumMessage<ProbeEvent> message)
|
public override void OnReceiveRemote(bool server, EnumMessage<ProbeEvent> message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
if (!player.PlayerStates.IsReady || player.Probe == null)
|
if (!player.IsReady || player.Probe == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ namespace QSB.Tools.ProbeTool.Events
|
|||||||
public override void OnReceiveRemote(bool server, FloatMessage message)
|
public override void OnReceiveRemote(bool server, FloatMessage message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
if (!player.PlayerStates.IsReady || player.Probe == null)
|
if (!player.IsReady || player.Probe == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -32,11 +32,11 @@ namespace QSB.Tools.SignalscopeTool.Events
|
|||||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
player.PlayerStates.SignalscopeEquipped = message.ToggleValue;
|
player.SignalscopeEquipped = message.ToggleValue;
|
||||||
player.Signalscope?.ChangeEquipState(message.ToggleValue);
|
player.Signalscope?.ChangeEquipState(message.ToggleValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
||||||
QSBPlayerManager.LocalPlayer.PlayerStates.SignalscopeEquipped = message.ToggleValue;
|
QSBPlayerManager.LocalPlayer.SignalscopeEquipped = message.ToggleValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -32,11 +32,11 @@ namespace QSB.Tools.TranslatorTool.Events
|
|||||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||||
{
|
{
|
||||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||||
player.PlayerStates.TranslatorEquipped = message.ToggleValue;
|
player.TranslatorEquipped = message.ToggleValue;
|
||||||
player.Translator?.ChangeEquipState(message.ToggleValue);
|
player.Translator?.ChangeEquipState(message.ToggleValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
public override void OnReceiveLocal(bool server, ToggleMessage message) =>
|
||||||
QSBPlayerManager.LocalPlayer.PlayerStates.TranslatorEquipped = message.ToggleValue;
|
QSBPlayerManager.LocalPlayer.TranslatorEquipped = message.ToggleValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,10 +3,16 @@ using QSB.ClientServerStateSync;
|
|||||||
using QSB.OrbSync.TransformSync;
|
using QSB.OrbSync.TransformSync;
|
||||||
using QSB.Player;
|
using QSB.Player;
|
||||||
using QSB.QuantumSync;
|
using QSB.QuantumSync;
|
||||||
|
using QSB.ShipSync;
|
||||||
|
using QSB.ShipSync.TransformSync;
|
||||||
|
using QSB.ShipSync.WorldObjects;
|
||||||
using QSB.Syncs;
|
using QSB.Syncs;
|
||||||
using QSB.TimeSync;
|
using QSB.TimeSync;
|
||||||
using QSB.WorldSync;
|
using QSB.WorldSync;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace QSB.Utility
|
namespace QSB.Utility
|
||||||
@ -60,6 +66,13 @@ namespace QSB.Utility
|
|||||||
GUI.Label(new Rect(x, currentOffset, FixedWidth, 20f), text, guiStyle);
|
GUI.Label(new Rect(x, currentOffset, FixedWidth, 20f), text, guiStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WriteLine(int collumnID, string text, Color color)
|
||||||
|
{
|
||||||
|
guiStyle.normal.textColor = color;
|
||||||
|
WriteLine(collumnID, text);
|
||||||
|
guiStyle.normal.textColor = Color.white;
|
||||||
|
}
|
||||||
|
|
||||||
public void OnGUI()
|
public void OnGUI()
|
||||||
{
|
{
|
||||||
if (!QSBCore.DebugMode)
|
if (!QSBCore.DebugMode)
|
||||||
@ -94,10 +107,13 @@ namespace QSB.Utility
|
|||||||
}
|
}
|
||||||
else if (currentState != WakeUpSync.State.Loaded && currentState != WakeUpSync.State.NotLoaded && reason == null)
|
else if (currentState != WakeUpSync.State.Loaded && currentState != WakeUpSync.State.NotLoaded && reason == null)
|
||||||
{
|
{
|
||||||
WriteLine(1, $"Reason : NULL");
|
WriteLine(1, $"Reason : NULL", Color.red);
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteLine(1, $"Time Difference : {WakeUpSync.LocalInstance.GetTimeDifference()}");
|
WriteLine(1, $"Time Difference : {WakeUpSync.LocalInstance.GetTimeDifference()}");
|
||||||
WriteLine(1, $"Timescale : {OWTime.GetTimeScale()}");
|
WriteLine(1, $"Timescale : {OWTime.GetTimeScale()}");
|
||||||
|
WriteLine(1, $"Time Remaining : {Mathf.Floor(TimeLoop.GetSecondsRemaining() / 60f)}:{Mathf.Round(TimeLoop.GetSecondsRemaining() % 60f * 100f / 100f)}");
|
||||||
|
WriteLine(1, $"Loop Count : {TimeLoop.GetLoopCount()}");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -106,41 +122,91 @@ namespace QSB.Utility
|
|||||||
WriteLine(2, $"Player data :");
|
WriteLine(2, $"Player data :");
|
||||||
foreach (var player in QSBPlayerManager.PlayerList)
|
foreach (var player in QSBPlayerManager.PlayerList)
|
||||||
{
|
{
|
||||||
|
if (player == null)
|
||||||
|
{
|
||||||
|
WriteLine(2, $"NULL PLAYER", Color.red);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
WriteLine(2, $"{player.PlayerId}.{player.Name}");
|
WriteLine(2, $"{player.PlayerId}.{player.Name}");
|
||||||
WriteLine(2, $"State : {player.State}");
|
WriteLine(2, $"State : {player.State}");
|
||||||
WriteLine(2, $"Dead : {player.IsDead}");
|
WriteLine(2, $"Dead : {player.IsDead}");
|
||||||
WriteLine(2, $"Visible : {player.Visible}");
|
WriteLine(2, $"Visible : {player.Visible}");
|
||||||
|
WriteLine(2, $"Ready : {player.IsReady}");
|
||||||
|
WriteLine(2, $"Suited Up : {player.SuitedUp}");
|
||||||
|
|
||||||
if (player.PlayerStates.IsReady && QSBCore.WorldObjectsReady)
|
if (player.IsReady && QSBCore.WorldObjectsReady)
|
||||||
{
|
{
|
||||||
var networkTransform = player.TransformSync;
|
var networkTransform = player.TransformSync;
|
||||||
var referenceSector = networkTransform.ReferenceSector;
|
var referenceSector = networkTransform.ReferenceSector;
|
||||||
var referenceTransform = networkTransform.ReferenceTransform;
|
var referenceTransform = networkTransform.ReferenceTransform;
|
||||||
var parent = networkTransform.AttachedObject?.transform.parent;
|
var parent = networkTransform.AttachedObject?.transform.parent;
|
||||||
var intermediary = networkTransform.GetValue<IntermediaryTransform>("_intermediaryTransform");
|
|
||||||
var interTransform = intermediary.GetReferenceTransform();
|
|
||||||
|
|
||||||
WriteLine(2, $" - L.Pos : {networkTransform.transform.localPosition}");
|
WriteLine(2, $" - Ref. Sector : {(referenceSector == null ? "NULL" : referenceSector.Name)}", referenceSector == null ? Color.red : Color.white);
|
||||||
WriteLine(2, $" - Ref. Sector : {(referenceSector == null ? "NULL" : referenceSector.Name)}");
|
WriteLine(2, $" - Ref. Transform : {(referenceTransform == null ? "NULL" : referenceTransform.name)}", referenceTransform == null ? Color.red : Color.white);
|
||||||
WriteLine(2, $" - Ref. Transform : {(referenceTransform == null ? "NULL" : referenceTransform.name)}");
|
WriteLine(2, $" - Parent : {(parent == null ? "NULL" : parent.name)}", parent == null ? Color.red : Color.white);
|
||||||
WriteLine(2, $" - Inter. Ref. Transform : {(interTransform == null ? "NULL" : interTransform.name)}");
|
|
||||||
WriteLine(2, $" - Parent : {(parent == null ? "NULL" : parent.name)}");
|
|
||||||
|
|
||||||
/*
|
|
||||||
var probeSync = SyncBase.GetPlayers<PlayerProbeSync>(player);
|
|
||||||
if (probeSync != default)
|
|
||||||
{
|
|
||||||
var probeSector = probeSync.ReferenceSector;
|
|
||||||
GUI.Label(new Rect(420, offset2, 400f, 20f), $" - Probe Sector : {(probeSector == null ? "NULL" : probeSector.Name)}", guiStyle);
|
|
||||||
offset2 += _debugLineSpacing;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Column3 - Ship data
|
||||||
|
|
||||||
|
WriteLine(3, $"Current Flyer : {ShipManager.Instance.CurrentFlyer}");
|
||||||
|
if (ShipTransformSync.LocalInstance != null)
|
||||||
|
{
|
||||||
|
var instance = ShipTransformSync.LocalInstance;
|
||||||
|
if (QSBCore.IsHost)
|
||||||
|
{
|
||||||
|
WriteLine(3, $"Current Owner : {instance.NetIdentity.ClientAuthorityOwner.GetPlayerId()}");
|
||||||
|
}
|
||||||
|
var sector = instance.ReferenceSector;
|
||||||
|
WriteLine(3, $"Ref. Sector : {(sector != null ? sector.Name : "NULL")}", sector == null ? Color.red : Color.white);
|
||||||
|
var transform = instance.ReferenceTransform;
|
||||||
|
WriteLine(3, $"Ref. Transform : {(transform != null ? transform.name : "NULL")}", transform == null ? Color.red : Color.white);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WriteLine(3, $"ShipTransformSync.LocalInstance is null.", Color.red);
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteLine(3, $"QSBShipComponent");
|
||||||
|
foreach (var component in QSBWorldSync.GetWorldObjects<QSBShipComponent>())
|
||||||
|
{
|
||||||
|
var attachedObject = component.AttachedObject;
|
||||||
|
if (attachedObject == null)
|
||||||
|
{
|
||||||
|
WriteLine(3, $"- {component.ObjectId} NULL ATTACHEDOBJECT", Color.red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WriteLine(3, $"- {component.AttachedObject.name} RepairFraction:{component.AttachedObject._repairFraction}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WriteLine(3, $"QSBShipHull");
|
||||||
|
foreach (var hull in QSBWorldSync.GetWorldObjects<QSBShipHull>())
|
||||||
|
{
|
||||||
|
var attachedObject = hull.AttachedObject;
|
||||||
|
if (attachedObject == null)
|
||||||
|
{
|
||||||
|
WriteLine(3, $"- {hull.ObjectId} NULL ATTACHEDOBJECT", Color.red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WriteLine(3, $"- {hull.AttachedObject.name}, Integrity:{hull.AttachedObject.integrity}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Column4 - Quantum Object Possesion
|
||||||
foreach (var player in QSBPlayerManager.PlayerList)
|
foreach (var player in QSBPlayerManager.PlayerList)
|
||||||
{
|
{
|
||||||
|
if (player == null)
|
||||||
|
{
|
||||||
|
WriteLine(4, $"- NULL PLAYER", Color.red);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
WriteLine(4, $"- {player.PlayerId}.{player.Name}");
|
WriteLine(4, $"- {player.PlayerId}.{player.Name}");
|
||||||
var allQuantumObjects = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>();
|
var allQuantumObjects = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>();
|
||||||
var ownedQuantumObjects = allQuantumObjects.Where(x => x.ControllingPlayer == player.PlayerId);
|
var ownedQuantumObjects = allQuantumObjects.Where(x => x.ControllingPlayer == player.PlayerId);
|
||||||
@ -148,9 +214,17 @@ namespace QSB.Utility
|
|||||||
foreach (var quantumObject in ownedQuantumObjects)
|
foreach (var quantumObject in ownedQuantumObjects)
|
||||||
{
|
{
|
||||||
var qsbObj = quantumObject as IWorldObject;
|
var qsbObj = quantumObject as IWorldObject;
|
||||||
|
if (qsbObj == null)
|
||||||
|
{
|
||||||
|
WriteLine(4, $"NULL QSBOBJ", Color.red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
WriteLine(4, $"{qsbObj.Name} ({qsbObj.ObjectId})");
|
WriteLine(4, $"{qsbObj.Name} ({qsbObj.ObjectId})");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -87,7 +87,6 @@ namespace Popcron
|
|||||||
//instance = new GameObject(typeof(GizmosInstance).FullName).AddComponent<GizmosInstance>();
|
//instance = new GameObject(typeof(GizmosInstance).FullName).AddComponent<GizmosInstance>();
|
||||||
//instance.gameObject.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector;
|
//instance.gameObject.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector;
|
||||||
instance = Locator.GetPlayerCamera().gameObject.AddComponent<GizmosInstance>();
|
instance = Locator.GetPlayerCamera().gameObject.AddComponent<GizmosInstance>();
|
||||||
DebugLog.DebugWrite("CREATE GIZMOS INSTANCE!");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,13 +44,13 @@ namespace QSB.WorldSync
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (QSBPlayerManager.LocalPlayer.PlayerStates.IsReady)
|
if (QSBPlayerManager.LocalPlayer.IsReady)
|
||||||
{
|
{
|
||||||
DoRebuild(scene);
|
DoRebuild(scene);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.LocalPlayer.PlayerStates.IsReady, () => DoRebuild(scene));
|
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.LocalPlayer.IsReady, () => DoRebuild(scene));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void DoRebuild(OWScene scene)
|
private static void DoRebuild(OWScene scene)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user