mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-12 22:14:37 +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:
|
||||
if (__instance._playerInWatchVolume)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WACHING PLAYER");
|
||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||
__instance._solanumAnimController.StartWatchingPlayer();
|
||||
}
|
||||
@ -92,7 +91,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
// player left watch zone
|
||||
if (!__instance._playerInWatchVolume)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING SKY");
|
||||
__instance._state = NomaiConversationManager.State.WatchingSky;
|
||||
__instance._solanumAnimController.StopWatchingPlayer();
|
||||
}
|
||||
@ -104,7 +102,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
__instance._stoneCreationTimer -= Time.deltaTime;
|
||||
if (__instance._stoneCreationTimer <= 0f)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => CREATING STONES");
|
||||
__instance._state = NomaiConversationManager.State.CreatingStones;
|
||||
__instance._solanumAnimController.PlayCreateWordStones();
|
||||
}
|
||||
@ -123,7 +120,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
// raise cairns
|
||||
else if (__instance._solanumAnimController.IsPlayerLooking())
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => RAISING CAIRNS");
|
||||
__instance._state = NomaiConversationManager.State.RaisingCairns;
|
||||
__instance._solanumAnimController.PlayRaiseCairns();
|
||||
__instance._cairnAnimator.SetTrigger("Raise");
|
||||
@ -132,7 +128,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
}
|
||||
else if (__instance._activeResponseText == null && __instance._hasValidSocketedStonePair)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WRITING RESPONSE");
|
||||
__instance._activeResponseText = __instance._pendingResponseText;
|
||||
__instance._pendingResponseText = null;
|
||||
__instance._state = NomaiConversationManager.State.WritingResponse;
|
||||
@ -140,7 +135,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
}
|
||||
else if (__instance._activeResponseText != null && (!__instance._hasValidSocketedStonePair || __instance._pendingResponseText != null))
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => ERASING RESPONSE");
|
||||
__instance._state = NomaiConversationManager.State.ErasingResponse;
|
||||
__instance._solanumAnimController.StartWritingMessage();
|
||||
}
|
||||
@ -177,7 +171,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
case NomaiConversationManager.State.CreatingStones:
|
||||
if (!__instance._solanumAnimController.isPerformingAction)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||
__instance._conversationStonesCreated = true;
|
||||
}
|
||||
@ -186,7 +179,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
case NomaiConversationManager.State.RaisingCairns:
|
||||
if (!__instance._solanumAnimController.isPerformingAction)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||
__instance._cairnRaised = true;
|
||||
__instance._stoneSocketATrigger.SetActivation(true);
|
||||
@ -200,13 +192,11 @@ namespace QSB.Animation.NPC.Patches
|
||||
__instance._activeResponseText = null;
|
||||
if (__instance._pendingResponseText == null)
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||
__instance._solanumAnimController.StopWritingMessage(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING WRITING RESPONSE");
|
||||
__instance._activeResponseText = __instance._pendingResponseText;
|
||||
__instance._pendingResponseText = null;
|
||||
__instance._state = NomaiConversationManager.State.WritingResponse;
|
||||
@ -218,7 +208,6 @@ namespace QSB.Animation.NPC.Patches
|
||||
case NomaiConversationManager.State.WritingResponse:
|
||||
if (!__instance._solanumAnimController.isStartingWrite && !__instance._activeResponseText.IsAnimationPlaying())
|
||||
{
|
||||
DebugLog.DebugWrite($"{__instance._state} => WATCHING PLAYER");
|
||||
__instance._state = NomaiConversationManager.State.WatchingPlayer;
|
||||
__instance._solanumAnimController.StopWritingMessage(true);
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ namespace QSB.Animation.Player
|
||||
|
||||
public void SetSuitState(bool state)
|
||||
{
|
||||
if (!Player.PlayerStates.IsReady)
|
||||
if (!Player.IsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ namespace QSB.Animation.Player.Events
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -32,9 +32,9 @@ namespace QSB.Animation.Player.Events
|
||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||
{
|
||||
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;
|
||||
}
|
||||
@ -46,7 +46,7 @@ namespace QSB.Animation.Player.Events
|
||||
|
||||
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 type = message.ToggleValue ? AnimationType.PlayerSuited : AnimationType.PlayerUnsuited;
|
||||
animator.CurrentType = type;
|
||||
|
@ -29,7 +29,6 @@ namespace QSB.ClientServerStateSync
|
||||
return;
|
||||
}
|
||||
|
||||
DebugLog.DebugWrite($"CHANGE CLIENT STATE FROM {QSBPlayerManager.LocalPlayer.State} to {newState}");
|
||||
QSBPlayerManager.LocalPlayer.State = newState;
|
||||
OnChangeState?.Invoke(newState);
|
||||
}
|
||||
@ -46,29 +45,24 @@ namespace QSB.ClientServerStateSync
|
||||
switch (newScene)
|
||||
{
|
||||
case OWScene.TitleScreen:
|
||||
DebugLog.DebugWrite($"SERVER LOAD TITLESCREEN");
|
||||
newState = ClientState.InTitleScreen;
|
||||
break;
|
||||
case OWScene.Credits_Fast:
|
||||
DebugLog.DebugWrite($"SERVER LOAD SHORT CREDITS");
|
||||
newState = ClientState.WatchingShortCredits;
|
||||
break;
|
||||
case OWScene.Credits_Final:
|
||||
case OWScene.PostCreditsScene:
|
||||
DebugLog.DebugWrite($"SERVER LOAD LONG CREDITS");
|
||||
newState = ClientState.WatchingLongCredits;
|
||||
break;
|
||||
case OWScene.SolarSystem:
|
||||
if (oldScene == OWScene.SolarSystem)
|
||||
{
|
||||
// reloading scene
|
||||
DebugLog.DebugWrite($"SERVER RELOAD SOLARSYSTEM");
|
||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||
}
|
||||
else
|
||||
{
|
||||
// loading in from title screen
|
||||
DebugLog.DebugWrite($"SERVER LOAD SOLARSYSTEM");
|
||||
newState = ClientState.AliveInSolarSystem;
|
||||
}
|
||||
break;
|
||||
@ -85,22 +79,18 @@ namespace QSB.ClientServerStateSync
|
||||
switch (newScene)
|
||||
{
|
||||
case OWScene.TitleScreen:
|
||||
DebugLog.DebugWrite($"CLIENT LOAD TITLESCREEN");
|
||||
newState = ClientState.InTitleScreen;
|
||||
break;
|
||||
case OWScene.Credits_Fast:
|
||||
DebugLog.DebugWrite($"CLIENT LOAD SHORT CREDITS");
|
||||
newState = ClientState.WatchingShortCredits;
|
||||
break;
|
||||
case OWScene.Credits_Final:
|
||||
case OWScene.PostCreditsScene:
|
||||
DebugLog.DebugWrite($"CLIENT LOAD LONG CREDITS");
|
||||
newState = ClientState.WatchingLongCredits;
|
||||
break;
|
||||
case OWScene.SolarSystem:
|
||||
if (serverState == ServerState.WaitingForAllPlayersToDie)
|
||||
{
|
||||
DebugLog.DebugWrite($"SEVER IN DEATH PHASE - WAIT");
|
||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||
break;
|
||||
}
|
||||
@ -108,13 +98,11 @@ namespace QSB.ClientServerStateSync
|
||||
if (oldScene == OWScene.SolarSystem)
|
||||
{
|
||||
// reloading scene
|
||||
DebugLog.DebugWrite($"CLIENT RELOAD SOLARSYSTEM");
|
||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||
}
|
||||
else
|
||||
{
|
||||
// loading in from title screen
|
||||
DebugLog.DebugWrite($"CLIENT LOAD SOLARSYSTEM");
|
||||
if (serverState == ServerState.WaitingForAllPlayersToReady)
|
||||
{
|
||||
newState = ClientState.WaitingForOthersToReadyInSolarSystem;
|
||||
@ -171,32 +159,17 @@ namespace QSB.ClientServerStateSync
|
||||
|
||||
private ClientState ForceGetCurrentState()
|
||||
{
|
||||
DebugLog.DebugWrite($"ForceGetCurrentState");
|
||||
var currentScene = LoadManager.GetCurrentScene();
|
||||
var lastScene = LoadManager.GetPreviousScene();
|
||||
|
||||
switch (currentScene)
|
||||
return currentScene switch
|
||||
{
|
||||
case OWScene.TitleScreen:
|
||||
DebugLog.DebugWrite($"- TitleScreen");
|
||||
return ClientState.InTitleScreen;
|
||||
case OWScene.Credits_Fast:
|
||||
DebugLog.DebugWrite($"- Short Credits");
|
||||
return ClientState.WatchingShortCredits;
|
||||
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;
|
||||
}
|
||||
OWScene.TitleScreen => ClientState.InTitleScreen,
|
||||
OWScene.Credits_Fast => ClientState.WatchingShortCredits,
|
||||
OWScene.Credits_Final or OWScene.PostCreditsScene => ClientState.WatchingLongCredits,
|
||||
OWScene.SolarSystem => ClientState.AliveInSolarSystem,
|
||||
OWScene.EyeOfTheUniverse => ClientState.AliveInEye,
|
||||
_ => ClientState.NotLoaded,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,17 +54,14 @@ namespace QSB.ClientServerStateSync
|
||||
case OWScene.Credits_Fast:
|
||||
case OWScene.Credits_Final:
|
||||
case OWScene.PostCreditsScene:
|
||||
DebugLog.DebugWrite($"SERVER LOAD CREDITS");
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.Credits);
|
||||
break;
|
||||
|
||||
case OWScene.TitleScreen:
|
||||
DebugLog.DebugWrite($"SERVER LOAD TITLE SCREEN");
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.NotLoaded);
|
||||
break;
|
||||
|
||||
case OWScene.SolarSystem:
|
||||
DebugLog.DebugWrite($"SERVER LOAD SOLARSYSTEM");
|
||||
if (oldScene == OWScene.SolarSystem)
|
||||
{
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||
@ -77,7 +74,6 @@ namespace QSB.ClientServerStateSync
|
||||
break;
|
||||
|
||||
case OWScene.EyeOfTheUniverse:
|
||||
DebugLog.DebugWrite($"EYE");
|
||||
QSBEventManager.FireEvent(EventNames.QSBServerState, ServerState.WaitingForAllPlayersToReady);
|
||||
break;
|
||||
|
||||
@ -98,21 +94,15 @@ namespace QSB.ClientServerStateSync
|
||||
|
||||
private ServerState ForceGetCurrentState()
|
||||
{
|
||||
DebugLog.DebugWrite($"ForceGetCurrentState");
|
||||
|
||||
var currentScene = LoadManager.GetCurrentScene();
|
||||
var lastScene = LoadManager.GetPreviousScene();
|
||||
|
||||
switch (currentScene)
|
||||
{
|
||||
case OWScene.SolarSystem:
|
||||
DebugLog.DebugWrite($"- SolarSystem");
|
||||
return ServerState.InSolarSystem;
|
||||
case OWScene.EyeOfTheUniverse:
|
||||
DebugLog.DebugWrite($"- Eye");
|
||||
return ServerState.InEye;
|
||||
default:
|
||||
DebugLog.DebugWrite($"- Not Loaded");
|
||||
return ServerState.NotLoaded;
|
||||
}
|
||||
}
|
||||
|
@ -98,5 +98,6 @@
|
||||
public static string QSBMeteorSpecialImpact = "QSBMeteorSpecialImpact";
|
||||
public static string QSBFragmentDamage = "QSBFragmentDamage";
|
||||
public static string QSBFragmentResync = "QSBFragmentResync";
|
||||
public static string QSBLearnLaunchCodes = "QSBLearnLaunchCodes";
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
DebugEvent,
|
||||
SatelliteProjector,
|
||||
SatelliteProjectorSnapshot,
|
||||
LaunchCodes,
|
||||
|
||||
/*
|
||||
* SERVER EVENTS
|
||||
|
@ -2,6 +2,8 @@
|
||||
{
|
||||
public interface IQSBEvent
|
||||
{
|
||||
EventType Type { get; }
|
||||
|
||||
void SetupListener();
|
||||
void CloseListener();
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
using OWML.Common;
|
||||
using QSB.ClientServerStateSync;
|
||||
using QSB.Messaging;
|
||||
using QSB.Player;
|
||||
using QSB.Player.Events;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.Utility;
|
||||
using QuantumUNET.Components;
|
||||
@ -75,10 +77,24 @@ namespace QSB.Events
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
if (message.FromId == QSBPlayerManager.LocalPlayerId ||
|
||||
@ -92,7 +108,7 @@ namespace QSB.Events
|
||||
}
|
||||
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 QSB.MeteorSync.Events;
|
||||
using QSB.RespawnSync.Events;
|
||||
using System.Linq;
|
||||
using HarmonyLib;
|
||||
using System.Text;
|
||||
|
||||
namespace QSB.Events
|
||||
{
|
||||
@ -77,6 +80,7 @@ namespace QSB.Events
|
||||
new DebugEvent(),
|
||||
new SatelliteProjectorEvent(),
|
||||
new SatelliteProjectorSnapshotEvent(),
|
||||
new LaunchCodesEvent(),
|
||||
// World Objects
|
||||
new ElevatorEvent(),
|
||||
new GeyserEvent(),
|
||||
@ -129,6 +133,26 @@ namespace QSB.Events
|
||||
|
||||
_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;
|
||||
|
||||
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,
|
||||
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
|
||||
};
|
||||
|
||||
|
@ -7,23 +7,26 @@ namespace QSB.Player.Events
|
||||
public class PlayerInformationMessage : PlayerMessage
|
||||
{
|
||||
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 override void Deserialize(QNetworkReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
PlayerName = reader.ReadString();
|
||||
PlayerState = new PlayerState
|
||||
{
|
||||
IsReady = reader.ReadBoolean(),
|
||||
FlashlightActive = reader.ReadBoolean(),
|
||||
SuitedUp = reader.ReadBoolean(),
|
||||
ProbeLauncherEquipped = reader.ReadBoolean(),
|
||||
SignalscopeEquipped = reader.ReadBoolean(),
|
||||
TranslatorEquipped = reader.ReadBoolean(),
|
||||
ProbeActive = reader.ReadBoolean()
|
||||
};
|
||||
IsReady = reader.ReadBoolean();
|
||||
FlashlightActive = reader.ReadBoolean();
|
||||
SuitedUp = reader.ReadBoolean();
|
||||
ProbeLauncherEquipped = reader.ReadBoolean();
|
||||
SignalscopeEquipped = reader.ReadBoolean();
|
||||
TranslatorEquipped = reader.ReadBoolean();
|
||||
ProbeActive = reader.ReadBoolean();
|
||||
ClientState = (ClientState)reader.ReadInt32();
|
||||
}
|
||||
|
||||
@ -31,13 +34,13 @@ namespace QSB.Player.Events
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(PlayerName);
|
||||
writer.Write(PlayerState.IsReady);
|
||||
writer.Write(PlayerState.FlashlightActive);
|
||||
writer.Write(PlayerState.SuitedUp);
|
||||
writer.Write(PlayerState.ProbeLauncherEquipped);
|
||||
writer.Write(PlayerState.SignalscopeEquipped);
|
||||
writer.Write(PlayerState.TranslatorEquipped);
|
||||
writer.Write(PlayerState.ProbeActive);
|
||||
writer.Write(IsReady);
|
||||
writer.Write(FlashlightActive);
|
||||
writer.Write(SuitedUp);
|
||||
writer.Write(ProbeLauncherEquipped);
|
||||
writer.Write(SignalscopeEquipped);
|
||||
writer.Write(TranslatorEquipped);
|
||||
writer.Write(ProbeActive);
|
||||
writer.Write((int)ClientState);
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ namespace QSB.Player.Events
|
||||
|
||||
if (QSBSceneManager.IsInUniverse)
|
||||
{
|
||||
QSBPlayerManager.LocalPlayer.PlayerStates.IsReady = true;
|
||||
QSBPlayerManager.LocalPlayer.IsReady = true;
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ namespace QSB.Player.Events
|
||||
private static void HandleServer(ToggleMessage message)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
using HarmonyLib;
|
||||
using QSB.Events;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.Player.Patches
|
||||
@ -21,6 +22,32 @@ namespace QSB.Player.Patches
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(PauseMenuManager), nameof(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();
|
||||
}
|
||||
|
||||
if (!_isReady || !_player.PlayerStates.IsReady)
|
||||
if (!_isReady || !_player.IsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ using QSB.Animation.Player;
|
||||
using QSB.Animation.Player.Thrusters;
|
||||
using QSB.CampfireSync.WorldObjects;
|
||||
using QSB.ClientServerStateSync;
|
||||
using QSB.Events;
|
||||
using QSB.ItemSync.WorldObjects.Items;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.QuantumSync;
|
||||
@ -22,7 +23,6 @@ namespace QSB.Player
|
||||
public uint PlayerId { get; }
|
||||
public string Name { get; set; }
|
||||
public PlayerHUDMarker HudMarker { get; set; }
|
||||
public PlayerState PlayerStates { get; set; } = new PlayerState();
|
||||
public PlayerTransformSync TransformSync { get; set; }
|
||||
|
||||
// Body Objects
|
||||
@ -30,10 +30,11 @@ namespace QSB.Player
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_camera == null && PlayerStates.IsReady)
|
||||
if (_camera == null && IsReady)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - {PlayerId}.Camera is null!", MessageType.Warning);
|
||||
}
|
||||
|
||||
return _camera;
|
||||
}
|
||||
set
|
||||
@ -42,6 +43,7 @@ namespace QSB.Player
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - Setting {PlayerId}.Camera to null.", MessageType.Warning);
|
||||
}
|
||||
|
||||
_camera = value;
|
||||
}
|
||||
}
|
||||
@ -52,7 +54,7 @@ namespace QSB.Player
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_body == null && PlayerStates.IsReady)
|
||||
if (_body == null && IsReady)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - {PlayerId}.Body is null!", MessageType.Warning);
|
||||
}
|
||||
@ -77,7 +79,18 @@ namespace QSB.Player
|
||||
// Tools
|
||||
public GameObject ProbeBody { 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 Translator => GetToolByType(ToolType.Translator);
|
||||
public QSBProbeLauncherTool ProbeLauncher => (QSBProbeLauncherTool)GetToolByType(ToolType.ProbeLauncher);
|
||||
@ -105,11 +118,18 @@ namespace QSB.Player
|
||||
public JetpackAccelerationSync JetpackAcceleration { get; set; }
|
||||
|
||||
// Misc
|
||||
public bool IsReady { get; set; }
|
||||
public bool IsInMoon; // MOVE : move into PlayerStates?
|
||||
public bool IsInShrine; // MOVE : move into PlayerStates?
|
||||
public IQSBQuantumObject EntangledObject;
|
||||
public bool IsDead { 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
|
||||
public PlayerProbeLauncher LocalProbeLauncher
|
||||
@ -174,19 +194,35 @@ namespace QSB.Player
|
||||
CurrentCharacterDialogueTreeId = -1;
|
||||
}
|
||||
|
||||
public void UpdateStateObjects()
|
||||
public void UpdateObjectsFromStates()
|
||||
{
|
||||
if (OWInput.GetInputMode() == InputMode.None)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
FlashLight?.UpdateState(PlayerStates.FlashlightActive);
|
||||
Translator?.ChangeEquipState(PlayerStates.TranslatorEquipped);
|
||||
ProbeLauncher?.ChangeEquipState(PlayerStates.ProbeLauncherEquipped);
|
||||
Signalscope?.ChangeEquipState(PlayerStates.SignalscopeEquipped);
|
||||
FlashLight?.UpdateState(FlashlightActive);
|
||||
Translator?.ChangeEquipState(TranslatorEquipped);
|
||||
ProbeLauncher?.ChangeEquipState(ProbeLauncherEquipped);
|
||||
Signalscope?.ChangeEquipState(SignalscopeEquipped);
|
||||
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>()
|
||||
|
@ -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);
|
||||
player.Name = message.PlayerName;
|
||||
player.PlayerStates = message.PlayerState;
|
||||
if (LocalPlayer.PlayerStates.IsReady)
|
||||
player.IsReady = message.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;
|
||||
@ -172,7 +178,7 @@ namespace QSB.Player
|
||||
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()
|
||||
|
@ -60,12 +60,12 @@ namespace QSB.Player.TransformSync
|
||||
|
||||
if (isInUniverse)
|
||||
{
|
||||
Player.PlayerStates.IsReady = true;
|
||||
Player.IsReady = true;
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Player.PlayerStates.IsReady = false;
|
||||
Player.IsReady = false;
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, false);
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@
|
||||
<Compile Include="ConversationSync\ConversationManager.cs" />
|
||||
<Compile Include="DeathSync\EndLoopReason.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="DeathSync\Events\StartLoopEvent.cs" />
|
||||
<Compile Include="DeathSync\Patches\MapPatches.cs" />
|
||||
|
@ -49,6 +49,7 @@ namespace QSB.RespawnSync
|
||||
private void Init(OWScene newScene, bool inUniverse)
|
||||
{
|
||||
QSBPlayerManager.ShowAllPlayers();
|
||||
QSBPlayerManager.LocalPlayer.UpdateStatesFromObjects();
|
||||
QSBPlayerManager.PlayerList.ForEach(x => x.IsDead = false);
|
||||
_playersPendingRespawn.Clear();
|
||||
|
||||
@ -99,7 +100,6 @@ namespace QSB.RespawnSync
|
||||
|
||||
public void TriggerRespawnMap()
|
||||
{
|
||||
DebugLog.DebugWrite($"TRIGGER RESPAWN MAP");
|
||||
QSBPatchManager.DoPatchType(QSBPatchTypes.RespawnTime);
|
||||
QSBCore.UnityEvents.FireOnNextUpdate(() => GlobalMessenger.FireEvent("TriggerObservatoryMap"));
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using QSB.ClientServerStateSync;
|
||||
using QSB.Events;
|
||||
using QSB.Utility;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.StatueSync.Events
|
||||
@ -27,6 +28,8 @@ namespace QSB.StatueSync.Events
|
||||
|
||||
public override void OnReceiveLocal(bool server, StartStatueMessage message)
|
||||
{
|
||||
DebugLog.DebugWrite($"OnReceiveLocal StartStatueEvent");
|
||||
|
||||
if (!QSBCore.IsHost)
|
||||
{
|
||||
return;
|
||||
@ -36,6 +39,9 @@ namespace QSB.StatueSync.Events
|
||||
}
|
||||
|
||||
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.Utility;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
@ -12,14 +13,22 @@ namespace QSB.StatueSync
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
QSBSceneManager.OnUniverseSceneLoaded += (OWScene oldScene, OWScene newScene) => QSBPlayerManager.ShowAllPlayers();
|
||||
QSBSceneManager.OnUniverseSceneLoaded += OnUniverseSceneLoaded;
|
||||
}
|
||||
|
||||
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)
|
||||
=> StartCoroutine(BeginRemoteUplinkSequence(position, rotation, cameraDegrees));
|
||||
{
|
||||
StartCoroutine(BeginRemoteUplinkSequence(position, rotation, cameraDegrees));
|
||||
}
|
||||
|
||||
private IEnumerator BeginRemoteUplinkSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
||||
{
|
||||
|
@ -1,4 +1,6 @@
|
||||
using OWML.Common;
|
||||
using QSB.ClientServerStateSync;
|
||||
using QSB.Player;
|
||||
using QSB.Utility;
|
||||
using UnityEngine;
|
||||
|
||||
@ -56,8 +58,12 @@ namespace QSB.Syncs
|
||||
public void EncodePosition(Vector3 worldPosition)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -71,8 +77,12 @@ namespace QSB.Syncs
|
||||
public void EncodeRotation(Quaternion worldRotation)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -97,8 +107,12 @@ namespace QSB.Syncs
|
||||
public Vector3 GetTargetPosition_Unparented()
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
return Vector3.zero;
|
||||
}
|
||||
|
||||
@ -111,8 +125,12 @@ namespace QSB.Syncs
|
||||
public Quaternion GetTargetRotation_Unparented()
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
return Quaternion.identity;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ namespace QSB.Syncs.Sectored
|
||||
{
|
||||
writer.Write(-1);
|
||||
}
|
||||
else if (!Player.PlayerStates.IsReady)
|
||||
else if (!Player.IsReady)
|
||||
{
|
||||
writer.Write(-1);
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ namespace QSB.Syncs
|
||||
public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId);
|
||||
private bool _baseIsReady => QSBPlayerManager.PlayerExists(PlayerId)
|
||||
&& Player != null
|
||||
&& Player.PlayerStates.IsReady
|
||||
&& Player.IsReady
|
||||
&& NetId.Value != uint.MaxValue
|
||||
&& NetId.Value != 0U
|
||||
&& WorldObjectManager.AllReady;
|
||||
|
@ -1,5 +1,6 @@
|
||||
using HarmonyLib;
|
||||
using QSB.Patches;
|
||||
using QSB.Utility;
|
||||
|
||||
namespace QSB.TimeSync.Patches
|
||||
{
|
||||
@ -11,8 +12,10 @@ namespace QSB.TimeSync.Patches
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(PlayerCameraEffectController), nameof(PlayerCameraEffectController.OnStartOfTimeLoop))]
|
||||
public static bool PlayerCameraEffectController_OnStartOfTimeLoop()
|
||||
=> false;
|
||||
|
||||
{
|
||||
DebugLog.DebugWrite($"OnStartOfTimeLoop");
|
||||
return false;
|
||||
}
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(OWTime), nameof(OWTime.Pause))]
|
||||
public static bool StopPausing()
|
||||
|
@ -32,11 +32,11 @@ namespace QSB.Tools.FlashlightTool.Events
|
||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
player.PlayerStates.FlashlightActive = message.ToggleValue;
|
||||
player.FlashlightActive = message.ToggleValue;
|
||||
player.FlashLight?.UpdateState(message.ToggleValue);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
player.PlayerStates.ProbeLauncherEquipped = message.ToggleValue;
|
||||
player.ProbeLauncherEquipped = message.ToggleValue;
|
||||
player.ProbeLauncher?.ChangeEquipState(message.ToggleValue);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
if (!player.PlayerStates.IsReady || player.Probe == null)
|
||||
if (!player.IsReady || player.Probe == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ namespace QSB.Tools.ProbeTool.Events
|
||||
public override void OnReceiveRemote(bool server, FloatMessage message)
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
if (!player.PlayerStates.IsReady || player.Probe == null)
|
||||
if (!player.IsReady || player.Probe == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -32,11 +32,11 @@ namespace QSB.Tools.SignalscopeTool.Events
|
||||
public override void OnReceiveRemote(bool server, ToggleMessage message)
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
player.PlayerStates.SignalscopeEquipped = message.ToggleValue;
|
||||
player.SignalscopeEquipped = message.ToggleValue;
|
||||
player.Signalscope?.ChangeEquipState(message.ToggleValue);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
var player = QSBPlayerManager.GetPlayer(message.AboutId);
|
||||
player.PlayerStates.TranslatorEquipped = message.ToggleValue;
|
||||
player.TranslatorEquipped = message.ToggleValue;
|
||||
player.Translator?.ChangeEquipState(message.ToggleValue);
|
||||
}
|
||||
|
||||
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.Player;
|
||||
using QSB.QuantumSync;
|
||||
using QSB.ShipSync;
|
||||
using QSB.ShipSync.TransformSync;
|
||||
using QSB.ShipSync.WorldObjects;
|
||||
using QSB.Syncs;
|
||||
using QSB.TimeSync;
|
||||
using QSB.WorldSync;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Serialization;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Utility
|
||||
@ -60,6 +66,13 @@ namespace QSB.Utility
|
||||
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()
|
||||
{
|
||||
if (!QSBCore.DebugMode)
|
||||
@ -94,10 +107,13 @@ namespace QSB.Utility
|
||||
}
|
||||
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, $"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
|
||||
|
||||
@ -106,41 +122,91 @@ namespace QSB.Utility
|
||||
WriteLine(2, $"Player data :");
|
||||
foreach (var player in QSBPlayerManager.PlayerList)
|
||||
{
|
||||
if (player == null)
|
||||
{
|
||||
WriteLine(2, $"NULL PLAYER", Color.red);
|
||||
continue;
|
||||
}
|
||||
|
||||
WriteLine(2, $"{player.PlayerId}.{player.Name}");
|
||||
WriteLine(2, $"State : {player.State}");
|
||||
WriteLine(2, $"Dead : {player.IsDead}");
|
||||
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 referenceSector = networkTransform.ReferenceSector;
|
||||
var referenceTransform = networkTransform.ReferenceTransform;
|
||||
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)}");
|
||||
WriteLine(2, $" - Ref. Transform : {(referenceTransform == null ? "NULL" : referenceTransform.name)}");
|
||||
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;
|
||||
}
|
||||
*/
|
||||
WriteLine(2, $" - Ref. Sector : {(referenceSector == null ? "NULL" : referenceSector.Name)}", referenceSector == null ? Color.red : Color.white);
|
||||
WriteLine(2, $" - Ref. Transform : {(referenceTransform == null ? "NULL" : referenceTransform.name)}", referenceTransform == null ? Color.red : Color.white);
|
||||
WriteLine(2, $" - Parent : {(parent == null ? "NULL" : parent.name)}", parent == null ? Color.red : Color.white);
|
||||
}
|
||||
}
|
||||
#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)
|
||||
{
|
||||
if (player == null)
|
||||
{
|
||||
WriteLine(4, $"- NULL PLAYER", Color.red);
|
||||
continue;
|
||||
}
|
||||
|
||||
WriteLine(4, $"- {player.PlayerId}.{player.Name}");
|
||||
var allQuantumObjects = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>();
|
||||
var ownedQuantumObjects = allQuantumObjects.Where(x => x.ControllingPlayer == player.PlayerId);
|
||||
@ -148,9 +214,17 @@ namespace QSB.Utility
|
||||
foreach (var quantumObject in ownedQuantumObjects)
|
||||
{
|
||||
var qsbObj = quantumObject as IWorldObject;
|
||||
if (qsbObj == null)
|
||||
{
|
||||
WriteLine(4, $"NULL QSBOBJ", Color.red);
|
||||
}
|
||||
else
|
||||
{
|
||||
WriteLine(4, $"{qsbObj.Name} ({qsbObj.ObjectId})");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -87,7 +87,6 @@ namespace Popcron
|
||||
//instance = new GameObject(typeof(GizmosInstance).FullName).AddComponent<GizmosInstance>();
|
||||
//instance.gameObject.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector;
|
||||
instance = Locator.GetPlayerCamera().gameObject.AddComponent<GizmosInstance>();
|
||||
DebugLog.DebugWrite("CREATE GIZMOS INSTANCE!");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,13 +44,13 @@ namespace QSB.WorldSync
|
||||
return;
|
||||
}
|
||||
|
||||
if (QSBPlayerManager.LocalPlayer.PlayerStates.IsReady)
|
||||
if (QSBPlayerManager.LocalPlayer.IsReady)
|
||||
{
|
||||
DoRebuild(scene);
|
||||
return;
|
||||
}
|
||||
|
||||
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.LocalPlayer.PlayerStates.IsReady, () => DoRebuild(scene));
|
||||
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.LocalPlayer.IsReady, () => DoRebuild(scene));
|
||||
}
|
||||
|
||||
private static void DoRebuild(OWScene scene)
|
||||
|
Loading…
x
Reference in New Issue
Block a user