mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-16 12:40:01 +00:00
Merge branch 'dev' into echoes-of-the-eye
This commit is contained in:
commit
88e3f3cb4f
MirrorWeaver/Weaver
QSB
Anglerfish/TransformSync
JellyfishSync/TransformSync
Menus
OrbSync/TransformSync
Player
QSBCore.csQSBNetworkManager.csQuantumSync
SaveSync/Messages
ShipSync/TransformSync
Syncs
TimeSync
Utility
WorldSync
debugsettings.jsonmanifest.json@ -22,7 +22,11 @@ namespace Mirror.Weaver
|
||||
|
||||
public static bool IsDerivedFrom(this TypeReference tr, Type baseClass)
|
||||
{
|
||||
if (tr == null)
|
||||
return false;
|
||||
TypeDefinition td = tr.Resolve();
|
||||
if (td == null)
|
||||
return false;
|
||||
if (!td.IsClass)
|
||||
return false;
|
||||
|
||||
|
@ -19,16 +19,16 @@ namespace QSB.Anglerfish.TransformSync
|
||||
protected override OWRigidbody InitAttachedRigidbody()
|
||||
=> _qsbAngler.AttachedObject._anglerBody;
|
||||
|
||||
public override void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
_instances.Add(this);
|
||||
base.Start();
|
||||
base.OnStartClient();
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
public override void OnStopClient()
|
||||
{
|
||||
_instances.Remove(this);
|
||||
base.OnDestroy();
|
||||
base.OnStopClient();
|
||||
|
||||
if (QSBCore.IsHost)
|
||||
{
|
||||
|
@ -21,16 +21,16 @@ namespace QSB.JellyfishSync.TransformSync
|
||||
protected override OWRigidbody InitAttachedRigidbody()
|
||||
=> _qsbJellyfish.AttachedObject._jellyfishBody;
|
||||
|
||||
public override void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
_instances.Add(this);
|
||||
base.Start();
|
||||
base.OnStartClient();
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
public override void OnStopClient()
|
||||
{
|
||||
_instances.Remove(this);
|
||||
base.OnDestroy();
|
||||
base.OnStopClient();
|
||||
|
||||
if (QSBCore.IsHost)
|
||||
{
|
||||
|
@ -232,7 +232,7 @@ namespace QSB.Menus
|
||||
|
||||
if (QSBCore.IsHost)
|
||||
{
|
||||
SetButtonActive(ResumeGameButton, StandaloneProfileManager.SharedInstance.currentProfileGameSave.loopCount > 1);
|
||||
QSBCore.UnityEvents.RunWhen(PlayerData.IsLoaded, () => SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1));
|
||||
SetButtonActive(NewGameButton, true);
|
||||
}
|
||||
else
|
||||
@ -244,7 +244,7 @@ namespace QSB.Menus
|
||||
else
|
||||
{
|
||||
SetButtonActive(ClientButton, true);
|
||||
SetButtonActive(ResumeGameButton, StandaloneProfileManager.SharedInstance.currentProfileGameSave.loopCount > 1);
|
||||
QSBCore.UnityEvents.RunWhen(PlayerData.IsLoaded, () => SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1));
|
||||
SetButtonActive(NewGameButton, true);
|
||||
}
|
||||
|
||||
@ -343,7 +343,7 @@ namespace QSB.Menus
|
||||
{
|
||||
KickReason.QSBVersionNotMatching => "Server refused connection as QSB version does not match.",
|
||||
KickReason.GameVersionNotMatching => "Server refused connection as Outer Wilds version does not match.",
|
||||
KickReason.GamePlatformNotMatching => "Server refused connection as Outer Wilds platform does not match. (Steam/Epic)",
|
||||
KickReason.GamePlatformNotMatching => "Server refused connection as Outer Wilds platform does not match. (Steam/Epic/Xbox)",
|
||||
KickReason.DLCNotMatching => "Server refused connection as DLC installation state does not match.",
|
||||
KickReason.InEye => "Server refused connection as game has progressed too far.",
|
||||
KickReason.None => "Kicked from server. No reason given.",
|
||||
@ -370,7 +370,7 @@ namespace QSB.Menus
|
||||
SetButtonActive(ClientButton, true);
|
||||
SetButtonActive(QuitButton, true);
|
||||
SetButtonActive(HostButton, true);
|
||||
SetButtonActive(ResumeGameButton, StandaloneProfileManager.SharedInstance.currentProfileGameSave.loopCount > 1);
|
||||
SetButtonActive(ResumeGameButton, PlayerData.LoadLoopCount() > 1);
|
||||
SetButtonActive(NewGameButton, true);
|
||||
}
|
||||
}
|
||||
|
@ -22,16 +22,16 @@ namespace QSB.OrbSync.TransformSync
|
||||
private QSBOrb _qsbOrb;
|
||||
private static readonly List<NomaiOrbTransformSync> _instances = new();
|
||||
|
||||
public override void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
_instances.Add(this);
|
||||
base.Start();
|
||||
base.OnStartClient();
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
public override void OnStopClient()
|
||||
{
|
||||
_instances.Remove(this);
|
||||
base.OnDestroy();
|
||||
base.OnStopClient();
|
||||
|
||||
if (QSBCore.IsHost)
|
||||
{
|
||||
|
@ -3,6 +3,7 @@
|
||||
public enum GamePlatform
|
||||
{
|
||||
Steam,
|
||||
Epic
|
||||
Epic,
|
||||
Xbox
|
||||
}
|
||||
}
|
||||
|
@ -43,53 +43,44 @@ namespace QSB.Player.TransformSync
|
||||
private Transform GetStickPivot()
|
||||
=> QSBWorldSync.GetUnityObjects<RoastingStickController>().First().transform.Find("Stick_Root/Stick_Pivot");
|
||||
|
||||
public override void OnStartLocalPlayer()
|
||||
=> LocalInstance = this;
|
||||
|
||||
public override void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
var player = new PlayerInfo(this);
|
||||
QSBPlayerManager.PlayerList.SafeAdd(player);
|
||||
base.Start();
|
||||
base.OnStartClient();
|
||||
QSBPlayerManager.OnAddPlayer?.Invoke(Player);
|
||||
DebugLog.DebugWrite($"Create Player : id<{Player.PlayerId}>", MessageType.Info);
|
||||
}
|
||||
|
||||
public override void OnStartLocalPlayer() => LocalInstance = this;
|
||||
|
||||
protected override void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse)
|
||||
{
|
||||
if (!hasAuthority)
|
||||
{
|
||||
base.OnSceneLoaded(oldScene, newScene, isInUniverse);
|
||||
}
|
||||
|
||||
if (isInUniverse && !IsInitialized)
|
||||
{
|
||||
Player.IsReady = false;
|
||||
new PlayerReadyMessage(false).Send();
|
||||
}
|
||||
|
||||
if (!isInUniverse)
|
||||
{
|
||||
Player.IsReady = false;
|
||||
new PlayerReadyMessage(false).Send();
|
||||
}
|
||||
|
||||
base.OnSceneLoaded(oldScene, newScene, isInUniverse);
|
||||
|
||||
if (isLocalPlayer)
|
||||
{
|
||||
Player.IsReady = false;
|
||||
new PlayerReadyMessage(false).Send();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
Player.IsReady = true;
|
||||
new PlayerReadyMessage(true).Send();
|
||||
if (isLocalPlayer)
|
||||
{
|
||||
Player.IsReady = true;
|
||||
new PlayerReadyMessage(true).Send();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
public override void OnStopClient()
|
||||
{
|
||||
// TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player
|
||||
QSBPlayerManager.OnRemovePlayer?.Invoke(Player);
|
||||
base.OnDestroy();
|
||||
base.OnStopClient();
|
||||
Player.HudMarker?.Remove();
|
||||
QSBPlayerManager.PlayerList.Remove(Player);
|
||||
DebugLog.DebugWrite($"Remove Player : id<{Player.PlayerId}>", MessageType.Info);
|
||||
|
@ -1,21 +1,23 @@
|
||||
using Mirror;
|
||||
using OWML.Common;
|
||||
using OWML.ModHelper;
|
||||
using OWML.ModHelper.Input;
|
||||
using QSB.EyeOfTheUniverse.GalaxyMap;
|
||||
using QSB.EyeOfTheUniverse.MaskSync;
|
||||
using QSB.Inputs;
|
||||
using QSB.Menus;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.QuantumSync;
|
||||
using QSB.RespawnSync;
|
||||
using QSB.SatelliteSync;
|
||||
using QSB.StatueSync;
|
||||
using QSB.TimeSync;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
/*
|
||||
Copyright (C) 2020 - 2021
|
||||
@ -60,13 +62,11 @@ namespace QSB
|
||||
public static bool IsInMultiplayer => QSBNetworkManager.singleton.isNetworkActive;
|
||||
public static string QSBVersion => Helper.Manifest.Version;
|
||||
public static string GameVersion => Application.version;
|
||||
public static GamePlatform Platform => typeof(Achievements).Assembly.GetTypes().Any(x => x.Name == "EpicEntitlementRetriever")
|
||||
? GamePlatform.Epic
|
||||
: GamePlatform.Steam;
|
||||
public static GamePlatform Platform { get; private set; }
|
||||
public static bool DLCInstalled => EntitlementsManager.IsDlcOwned() == EntitlementsManager.AsyncOwnershipStatus.Owned;
|
||||
public static IMenuAPI MenuApi { get; private set; }
|
||||
|
||||
private static DebugSettings DebugSettings { get; set; } = new DebugSettings();
|
||||
private static DebugSettings DebugSettings { get; set; } = new();
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
@ -80,6 +80,23 @@ namespace QSB
|
||||
Helper = ModHelper;
|
||||
DebugLog.ToConsole($"* Start of QSB version {QSBVersion} - authored by {Helper.Manifest.Author}", MessageType.Info);
|
||||
|
||||
switch (EntitlementsManager.instance._entitlementRetriever.GetType().Name)
|
||||
{
|
||||
case "EpicEntitlementRetriever":
|
||||
Platform = GamePlatform.Epic;
|
||||
break;
|
||||
case "SteamEntitlementRetriever":
|
||||
Platform = GamePlatform.Steam;
|
||||
break;
|
||||
case "MSStoreEntitlementRetriever":
|
||||
Platform = GamePlatform.Xbox;
|
||||
break;
|
||||
case var other:
|
||||
DebugLog.ToConsole($"Cannot get game platform (entitlement retriever name = {other})\nTell a QSB Dev!", MessageType.Error);
|
||||
enabled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
MenuApi = ModHelper.Interaction.GetModApi<IMenuAPI>("_nebula.MenuFramework");
|
||||
|
||||
NetworkAssetBundle = Helper.Assets.LoadBundle("AssetBundles/network");
|
||||
@ -88,7 +105,7 @@ namespace QSB
|
||||
DebugAssetBundle = Helper.Assets.LoadBundle("AssetBundles/debug");
|
||||
TextAssetsBundle = Helper.Assets.LoadBundle("AssetBundles/textassets");
|
||||
|
||||
DebugSettings = ModHelper.Storage.Load<DebugSettings>("debugsettings.json");
|
||||
DebugSettings = Helper.Storage.Load<DebugSettings>("debugsettings.json");
|
||||
|
||||
if (DebugSettings == null)
|
||||
{
|
||||
@ -149,6 +166,22 @@ namespace QSB
|
||||
QSBNetworkManager.singleton.Port = Port;
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (Keyboard.current[Key.Q].isPressed && Keyboard.current[Key.D].isPressed &&
|
||||
(Keyboard.current[Key.Q].wasPressedThisFrame || Keyboard.current[Key.D].wasPressedThisFrame))
|
||||
{
|
||||
DebugSettings.DebugMode = !DebugSettings.DebugMode;
|
||||
|
||||
GetComponent<DebugActions>().enabled = DebugMode;
|
||||
GetComponent<DebugGUI>().enabled = DebugMode;
|
||||
QuantumManager.UpdateFromDebugSetting();
|
||||
DebugCameraSettings.UpdateFromDebugSetting();
|
||||
|
||||
DebugLog.ToConsole($"DEBUG MODE = {DebugMode}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,6 @@ using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.Player.Messages;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.PoolSync;
|
||||
using QSB.ShipSync.TransformSync;
|
||||
using QSB.TimeSync;
|
||||
using QSB.Tools.ProbeTool.TransformSync;
|
||||
@ -68,7 +67,7 @@ namespace QSB
|
||||
transport = gameObject.AddComponent<kcp2k.KcpTransport>();
|
||||
base.Awake();
|
||||
|
||||
PlayerName = GetPlayerName();
|
||||
InitPlayerName();
|
||||
|
||||
playerPrefab = QSBCore.NetworkAssetBundle.LoadAsset<GameObject>("Assets/Prefabs/NETWORK_Player_Body.prefab");
|
||||
playerPrefab.GetRequiredComponent<NetworkIdentity>().SetValue("m_AssetId", 1.ToGuid().ToString("N"));
|
||||
@ -94,21 +93,29 @@ namespace QSB
|
||||
ConfigureNetworkManager();
|
||||
}
|
||||
|
||||
private string GetPlayerName()
|
||||
private void InitPlayerName()
|
||||
{
|
||||
try
|
||||
QSBCore.UnityEvents.RunWhen(PlayerData.IsLoaded, () =>
|
||||
{
|
||||
var profileManager = StandaloneProfileManager.SharedInstance;
|
||||
profileManager.Initialize();
|
||||
var profile = profileManager._currentProfile;
|
||||
var profileName = profile.profileName;
|
||||
return profileName;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - Exception when getting player name : {ex}", MessageType.Error);
|
||||
return "Player";
|
||||
}
|
||||
try
|
||||
{
|
||||
var titleScreenManager = FindObjectOfType<TitleScreenManager>();
|
||||
var profileManager = titleScreenManager._profileManager;
|
||||
if (profileManager.GetType().Name == "MSStoreProfileManager")
|
||||
{
|
||||
PlayerName = (string)profileManager.GetType().GetProperty("userDisplayName").GetValue(profileManager);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayerName = StandaloneProfileManager.SharedInstance.currentProfile.profileName;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - Exception when getting player name : {ex}", MessageType.Error);
|
||||
PlayerName = "Player";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// create a new network prefab from the network object prefab template.
|
||||
|
@ -35,6 +35,8 @@ namespace QSB.QuantumSync
|
||||
{
|
||||
Shrine = QSBWorldSync.GetUnityObjects<QuantumShrine>().First();
|
||||
}
|
||||
|
||||
UpdateFromDebugSetting();
|
||||
}
|
||||
|
||||
public void PlayerLeave(PlayerInfo player)
|
||||
@ -121,5 +123,82 @@ namespace QSB.QuantumSync
|
||||
var worldObj = obj.GetWorldObject<IQSBQuantumObject>();
|
||||
return QSBPlayerManager.PlayerList.Where(x => x.EntangledObject == worldObj);
|
||||
}
|
||||
|
||||
#region debug shapes
|
||||
|
||||
private static GameObject _debugSphere, _debugCube, _debugCapsule;
|
||||
|
||||
private class DebugShape : MonoBehaviour { }
|
||||
|
||||
public static void UpdateFromDebugSetting()
|
||||
{
|
||||
if (QSBCore.ShowQuantumVisibilityObjects)
|
||||
{
|
||||
if (_debugSphere == null)
|
||||
{
|
||||
_debugSphere = QSBCore.DebugAssetBundle.LoadAsset<GameObject>("Assets/Prefabs/Sphere.prefab");
|
||||
}
|
||||
|
||||
if (_debugCube == null)
|
||||
{
|
||||
_debugCube = QSBCore.DebugAssetBundle.LoadAsset<GameObject>("Assets/Prefabs/Cube.prefab");
|
||||
}
|
||||
|
||||
if (_debugCapsule == null)
|
||||
{
|
||||
_debugCapsule = QSBCore.DebugAssetBundle.LoadAsset<GameObject>("Assets/Prefabs/Capsule.prefab");
|
||||
}
|
||||
|
||||
foreach (var quantumObject in QSBWorldSync.GetWorldObjects<IQSBQuantumObject>())
|
||||
{
|
||||
foreach (var shape in quantumObject.GetAttachedShapes())
|
||||
{
|
||||
if (shape is BoxShape boxShape)
|
||||
{
|
||||
var newCube = Instantiate(_debugCube);
|
||||
newCube.transform.parent = shape.transform;
|
||||
newCube.transform.localPosition = Vector3.zero;
|
||||
newCube.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
newCube.transform.localScale = boxShape.size;
|
||||
newCube.AddComponent<DebugShape>();
|
||||
}
|
||||
else if (shape is SphereShape sphereShape)
|
||||
{
|
||||
var newSphere = Instantiate(_debugSphere);
|
||||
newSphere.transform.parent = shape.transform;
|
||||
newSphere.transform.localPosition = Vector3.zero;
|
||||
newSphere.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
newSphere.transform.localScale = Vector3.one * (sphereShape.radius * 2);
|
||||
newSphere.AddComponent<DebugShape>();
|
||||
}
|
||||
else if (shape is CapsuleShape capsuleShape)
|
||||
{
|
||||
var newCapsule = Instantiate(_debugCapsule);
|
||||
newCapsule.transform.parent = shape.transform;
|
||||
newCapsule.transform.localPosition = Vector3.zero;
|
||||
newCapsule.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
newCapsule.transform.localScale = new Vector3(capsuleShape.radius * 2, capsuleShape.height, capsuleShape.radius * 2);
|
||||
newCapsule.AddComponent<DebugShape>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var quantumObject in QSBWorldSync.GetWorldObjects<IQSBQuantumObject>())
|
||||
{
|
||||
foreach (var shape in quantumObject.GetAttachedShapes())
|
||||
{
|
||||
var debugShape = shape.GetComponentInChildren<DebugShape>();
|
||||
if (debugShape)
|
||||
{
|
||||
Destroy(debugShape.gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,57 +38,6 @@ namespace QSB.QuantumSync.WorldObjects
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
if (QSBCore.ShowQuantumVisibilityObjects)
|
||||
{
|
||||
var debugBundle = QSBCore.DebugAssetBundle;
|
||||
var sphere = debugBundle.LoadAsset<GameObject>("Assets/Prefabs/Sphere.prefab");
|
||||
var cube = debugBundle.LoadAsset<GameObject>("Assets/Prefabs/Cube.prefab");
|
||||
var capsule = debugBundle.LoadAsset<GameObject>("Assets/Prefabs/Capsule.prefab");
|
||||
|
||||
if (cube == null)
|
||||
{
|
||||
DebugLog.DebugWrite($"CUBE IS NULL");
|
||||
}
|
||||
|
||||
if (sphere == null)
|
||||
{
|
||||
DebugLog.DebugWrite($"SPHERE IS NULL");
|
||||
}
|
||||
|
||||
if (capsule == null)
|
||||
{
|
||||
DebugLog.DebugWrite($"CAPSULE IS NULL");
|
||||
}
|
||||
|
||||
foreach (var shape in GetAttachedShapes())
|
||||
{
|
||||
if (shape is BoxShape boxShape)
|
||||
{
|
||||
var newCube = Object.Instantiate(cube);
|
||||
newCube.transform.parent = shape.transform;
|
||||
newCube.transform.localPosition = Vector3.zero;
|
||||
newCube.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
newCube.transform.localScale = boxShape.size;
|
||||
}
|
||||
else if (shape is SphereShape sphereShape)
|
||||
{
|
||||
var newSphere = Object.Instantiate(sphere);
|
||||
newSphere.transform.parent = shape.transform;
|
||||
newSphere.transform.localPosition = Vector3.zero;
|
||||
newSphere.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
newSphere.transform.localScale = Vector3.one * (sphereShape.radius * 2);
|
||||
}
|
||||
else if (shape is CapsuleShape capsuleShape)
|
||||
{
|
||||
var newCapsule = Object.Instantiate(capsule);
|
||||
newCapsule.transform.parent = shape.transform;
|
||||
newCapsule.transform.localPosition = Vector3.zero;
|
||||
newCapsule.transform.localRotation = Quaternion.Euler(0, 0, 0);
|
||||
newCapsule.transform.localScale = new Vector3(capsuleShape.radius * 2, capsuleShape.height, capsuleShape.radius * 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StartDelayedReady();
|
||||
QSBCore.UnityEvents.FireInNUpdates(LateInit, 5);
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ namespace QSB.SaveSync.Messages
|
||||
public GameStateMessage(uint toId)
|
||||
{
|
||||
To = toId;
|
||||
var gameSave = StandaloneProfileManager.SharedInstance.currentProfileGameSave;
|
||||
var gameSave = PlayerData._currentGameSave;
|
||||
WarpedToTheEye = gameSave.warpedToTheEye;
|
||||
SecondsRemainingOnWarp = gameSave.secondsRemainingOnWarp;
|
||||
LaunchCodesGiven = PlayerData.KnowsLaunchCodes();
|
||||
@ -89,7 +89,7 @@ namespace QSB.SaveSync.Messages
|
||||
|
||||
PlayerData.ResetGame();
|
||||
|
||||
var gameSave = StandaloneProfileManager.SharedInstance.currentProfileGameSave;
|
||||
var gameSave = PlayerData._currentGameSave;
|
||||
gameSave.loopCount = LoopCount;
|
||||
gameSave.knownFrequencies = KnownFrequencies;
|
||||
gameSave.knownSignals = KnownSignals;
|
||||
|
@ -16,7 +16,7 @@ namespace QSB.SaveSync.Messages
|
||||
{
|
||||
new GameStateMessage(From).Send();
|
||||
|
||||
var gameSave = StandaloneProfileManager.SharedInstance.currentProfileGameSave;
|
||||
var gameSave = PlayerData._currentGameSave;
|
||||
|
||||
var factSaves = gameSave.shipLogFactSaves;
|
||||
foreach (var item in factSaves)
|
||||
|
@ -15,9 +15,9 @@ namespace QSB.ShipSync.TransformSync
|
||||
protected override bool IsReady
|
||||
=> Locator.GetShipBody() != null;
|
||||
|
||||
public override void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
base.Start();
|
||||
base.OnStartClient();
|
||||
LocalInstance = this;
|
||||
}
|
||||
|
||||
|
@ -14,16 +14,16 @@ namespace QSB.Syncs.Sectored
|
||||
|
||||
private int _sectorId = -1;
|
||||
|
||||
public override void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
SectorSync = gameObject.AddComponent<SectorSync.SectorSync>();
|
||||
QSBSectorManager.Instance.TransformSyncs.Add(this);
|
||||
base.Start();
|
||||
base.OnStartClient();
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
public override void OnStopClient()
|
||||
{
|
||||
base.OnDestroy();
|
||||
base.OnStopClient();
|
||||
QSBSectorManager.Instance.TransformSyncs.Remove(this);
|
||||
Destroy(SectorSync);
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
using Mirror;
|
||||
using OWML.Common;
|
||||
using QSB.Player;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using System;
|
||||
@ -26,7 +25,7 @@ namespace QSB.Syncs
|
||||
{
|
||||
if (_player == null)
|
||||
{
|
||||
DebugLog.ToConsole("Error - trying to get SyncBase.Player before Start has been called! "
|
||||
DebugLog.ToConsole($"Error - trying to get SyncBase.Player for {netId} before Start has been called! "
|
||||
+ "this really should not be happening!\n"
|
||||
+ $"{Environment.StackTrace}",
|
||||
MessageType.Error);
|
||||
@ -54,7 +53,12 @@ namespace QSB.Syncs
|
||||
|
||||
if (IsPlayerObject)
|
||||
{
|
||||
if (!Player.IsReady && this is not PlayerTransformSync)
|
||||
if (_player == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isLocalPlayer && !Player.IsReady)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -88,7 +92,7 @@ namespace QSB.Syncs
|
||||
protected abstract void GetFromAttached();
|
||||
protected abstract void ApplyToAttached();
|
||||
|
||||
public virtual void Start()
|
||||
public override void OnStartClient()
|
||||
{
|
||||
if (IsPlayerObject)
|
||||
{
|
||||
@ -103,7 +107,7 @@ namespace QSB.Syncs
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
protected virtual void OnDestroy()
|
||||
public override void OnStopClient()
|
||||
{
|
||||
if (IsPlayerObject && !hasAuthority && AttachedTransform != null)
|
||||
{
|
||||
|
@ -121,7 +121,7 @@ namespace QSB.TimeSync
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!QSBCore.SkipTitleScreen)
|
||||
if (!QSBCore.AvoidTimeSync)
|
||||
{
|
||||
WakeUpOrSleep();
|
||||
}
|
||||
|
@ -31,13 +31,7 @@ namespace QSB.Utility
|
||||
|
||||
private void DamageShipElectricalSystem() => ShipManager.Instance.ShipElectricalComponent.SetDamaged(true);
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (!QSBCore.DebugMode)
|
||||
{
|
||||
Destroy(this);
|
||||
}
|
||||
}
|
||||
private void Awake() => enabled = QSBCore.DebugMode;
|
||||
|
||||
public void Update()
|
||||
{
|
||||
@ -51,7 +45,7 @@ namespace QSB.Utility
|
||||
* 7 - Warp to vessel
|
||||
* 8 - Place warp core into vessel
|
||||
* 9 - Load eye scene
|
||||
* 0 -
|
||||
* 0 - Die
|
||||
*/
|
||||
|
||||
if (Keyboard.current[Key.Numpad1].wasPressedThisFrame)
|
||||
@ -115,6 +109,11 @@ namespace QSB.Utility
|
||||
LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite);
|
||||
}
|
||||
}
|
||||
|
||||
if (Keyboard.current[Key.Numpad0].wasPressedThisFrame)
|
||||
{
|
||||
Locator.GetDeathManager().KillPlayer(DeathType.Default);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,16 +4,29 @@ namespace QSB.Utility
|
||||
{
|
||||
internal class DebugCameraSettings : MonoBehaviour
|
||||
{
|
||||
void Start()
|
||||
public static void UpdateFromDebugSetting()
|
||||
{
|
||||
if (QSBCore.GreySkybox)
|
||||
{
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
Camera.main.backgroundColor = Color.gray;
|
||||
}
|
||||
else
|
||||
{
|
||||
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
|
||||
Camera.main.backgroundColor = _origColor;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(OWScene arg1, OWScene arg2, bool arg3)
|
||||
private static Color _origColor;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_origColor = Camera.main.backgroundColor;
|
||||
UpdateFromDebugSetting();
|
||||
}
|
||||
|
||||
private static void OnSceneLoaded(OWScene arg1, OWScene arg2, bool arg3)
|
||||
=> Camera.main.backgroundColor = Color.gray;
|
||||
}
|
||||
}
|
||||
|
@ -32,11 +32,7 @@ namespace QSB.Utility
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (!QSBCore.DebugMode)
|
||||
{
|
||||
Destroy(this);
|
||||
return;
|
||||
}
|
||||
enabled = QSBCore.DebugMode;
|
||||
|
||||
guiGUIStyle.fontSize = 9;
|
||||
}
|
||||
|
@ -12,20 +12,19 @@ namespace QSB.Utility
|
||||
|
||||
public sealed override bool OnSerialize(NetworkWriter writer, bool initialState)
|
||||
{
|
||||
var changed = base.OnSerialize(writer, initialState);
|
||||
if (initialState && isServer)
|
||||
if (initialState)
|
||||
{
|
||||
Serialize(writer, true);
|
||||
UpdatePrevData();
|
||||
return true;
|
||||
}
|
||||
|
||||
return changed;
|
||||
return false;
|
||||
}
|
||||
|
||||
public sealed override void OnDeserialize(NetworkReader reader, bool initialState)
|
||||
{
|
||||
base.OnDeserialize(reader, initialState);
|
||||
if (initialState && !isServer)
|
||||
if (initialState)
|
||||
{
|
||||
UpdatePrevData();
|
||||
Deserialize(reader, true);
|
||||
|
@ -1,7 +1,20 @@
|
||||
namespace QSB.Utility.VariableSync
|
||||
using Mirror;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace QSB.Utility.VariableSync
|
||||
{
|
||||
public abstract class BaseVariableSyncer : QSBNetworkBehaviour
|
||||
public abstract class BaseVariableSyncer<T> : QSBNetworkBehaviour
|
||||
{
|
||||
protected override float SendInterval => 0.1f;
|
||||
|
||||
private T _prevValue;
|
||||
[NonSerialized]
|
||||
public T Value;
|
||||
|
||||
protected override bool HasChanged() => !EqualityComparer<T>.Default.Equals(_prevValue, Value);
|
||||
protected override void UpdatePrevData() => _prevValue = Value;
|
||||
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
|
||||
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<T>();
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,6 @@
|
||||
using Mirror;
|
||||
using System;
|
||||
|
||||
namespace QSB.Utility.VariableSync
|
||||
namespace QSB.Utility.VariableSync
|
||||
{
|
||||
public class BoolVariableSyncer : BaseVariableSyncer
|
||||
public class BoolVariableSyncer : BaseVariableSyncer<bool>
|
||||
{
|
||||
private bool _prevValue;
|
||||
[NonSerialized]
|
||||
public bool Value;
|
||||
|
||||
protected override bool HasChanged() => Value != _prevValue;
|
||||
protected override void UpdatePrevData() => _prevValue = Value;
|
||||
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
|
||||
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<bool>();
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,6 @@
|
||||
using Mirror;
|
||||
using System;
|
||||
|
||||
namespace QSB.Utility.VariableSync
|
||||
namespace QSB.Utility.VariableSync
|
||||
{
|
||||
public class FloatVariableSyncer : BaseVariableSyncer
|
||||
public class FloatVariableSyncer : BaseVariableSyncer<float>
|
||||
{
|
||||
private float _prevValue;
|
||||
[NonSerialized]
|
||||
public float Value;
|
||||
|
||||
protected override bool HasChanged() => Value != _prevValue;
|
||||
protected override void UpdatePrevData() => _prevValue = Value;
|
||||
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
|
||||
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<float>();
|
||||
}
|
||||
}
|
||||
|
@ -1,18 +1,8 @@
|
||||
using Mirror;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Utility.VariableSync
|
||||
{
|
||||
public class Vector3VariableSyncer : BaseVariableSyncer
|
||||
public class Vector3VariableSyncer : BaseVariableSyncer<Vector3>
|
||||
{
|
||||
private Vector3 _prevValue;
|
||||
[NonSerialized]
|
||||
public Vector3 Value;
|
||||
|
||||
protected override bool HasChanged() => Value != _prevValue;
|
||||
protected override void UpdatePrevData() => _prevValue = Value;
|
||||
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
|
||||
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<Vector3>();
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,6 @@ namespace QSB.WorldSync
|
||||
|
||||
public static void BuildWorldObjects(OWScene scene)
|
||||
{
|
||||
GameInit();
|
||||
|
||||
if (PlayerTransformSync.LocalInstance == null)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - Tried to build WorldObjects when LocalPlayer is not ready! Building when ready...", MessageType.Warning);
|
||||
@ -35,6 +33,8 @@ namespace QSB.WorldSync
|
||||
return;
|
||||
}
|
||||
|
||||
GameInit();
|
||||
|
||||
DoBuild(scene);
|
||||
}
|
||||
|
||||
@ -78,6 +78,11 @@ namespace QSB.WorldSync
|
||||
|
||||
public static void RemoveWorldObjects()
|
||||
{
|
||||
if (!AllObjectsReady)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
GameReset();
|
||||
|
||||
AllObjectsAdded = false;
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"debugMode": true,
|
||||
"drawLines": true,
|
||||
"showQuantumVisibilityObjects": true,
|
||||
"showDebugLabels": true,
|
||||
"debugMode": false,
|
||||
"drawLines": false,
|
||||
"showQuantumVisibilityObjects": false,
|
||||
"showDebugLabels": false,
|
||||
"avoidTimeSync": false,
|
||||
"skipTitleScreen": true,
|
||||
"greySkybox": true
|
||||
|
@ -7,7 +7,7 @@
|
||||
"body": "- Disable *all* other mods. (Can heavily affect performance)\n- Make sure you are not running any other network-intensive applications.\n- Make sure you have forwarded/opened the correct ports. (See the GitHub readme.)"
|
||||
},
|
||||
"uniqueName": "Raicuparta.QuantumSpaceBuddies",
|
||||
"version": "0.15.0",
|
||||
"version": "0.15.1",
|
||||
"owmlVersion": "2.3.1",
|
||||
"dependencies": [ "_nebula.MenuFramework" ]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user