mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-19 12:40:56 +00:00
me me stupid
This commit is contained in:
parent
916056c605
commit
7c1f9ac3a6
@ -179,7 +179,7 @@ namespace QSB.Player
|
||||
return null;
|
||||
}
|
||||
|
||||
return playerList.Where(x => x.IsReady).OrderBy(x => Vector3.Distance(x.Body.transform.position, worldPoint)).FirstOrDefault();
|
||||
return playerList.Where(x => x.IsReady && x.Body != null).OrderBy(x => Vector3.Distance(x.Body.transform.position, worldPoint)).FirstOrDefault();
|
||||
}
|
||||
|
||||
public static IEnumerable<Tuple<PlayerInfo, IQSBOWItem>> GetPlayerCarryItems()
|
||||
|
@ -18,28 +18,6 @@ namespace QSB.Syncs
|
||||
|
||||
public abstract class SyncBase : QNetworkTransform
|
||||
{
|
||||
private static readonly Dictionary<uint, Dictionary<Type, SyncBase>> _storedTransformSyncs = new();
|
||||
|
||||
public static T GetPlayers<T>(PlayerInfo player)
|
||||
where T : SyncBase
|
||||
{
|
||||
var dictOfOwnedSyncs = _storedTransformSyncs[player.PlayerId];
|
||||
var wantedSync = dictOfOwnedSyncs[typeof(T)];
|
||||
if (wantedSync == default)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - _storedTransformSyncs does not contain type:{typeof(T)} under player {player.PlayerId}. Attempting to find manually...", MessageType.Error);
|
||||
var allSyncs = QSBWorldSync.GetUnityObjects<T>();
|
||||
wantedSync = allSyncs.First(x => x.Player == player);
|
||||
if (wantedSync == default)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - Could not find type:{typeof(T)} for player {player.PlayerId} manually!", MessageType.Error);
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
return (T)wantedSync;
|
||||
}
|
||||
|
||||
public uint AttachedNetId
|
||||
{
|
||||
get
|
||||
@ -76,13 +54,43 @@ namespace QSB.Syncs
|
||||
}
|
||||
|
||||
public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId);
|
||||
private bool _baseIsReady
|
||||
=> (!IsPlayerObject || QSBPlayerManager.PlayerExists(PlayerId))
|
||||
&& (!IsPlayerObject || Player != null)
|
||||
&& (!IsPlayerObject || Player.IsReady)
|
||||
&& NetId.Value != uint.MaxValue
|
||||
&& NetId.Value != 0U
|
||||
&& WorldObjectManager.AllObjectsAdded;
|
||||
|
||||
private bool _baseIsReady
|
||||
{
|
||||
get
|
||||
{
|
||||
if (NetId.Value is uint.MaxValue or 0U)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!WorldObjectManager.AllObjectsAdded)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsPlayerObject)
|
||||
{
|
||||
if (!QSBPlayerManager.PlayerExists(PlayerId))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Player == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Player.IsReady && !IsLocalPlayer)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public abstract bool IsReady { get; }
|
||||
public abstract bool UseInterpolation { get; }
|
||||
public abstract bool IgnoreDisabledAttachedObject { get; }
|
||||
@ -115,24 +123,6 @@ namespace QSB.Syncs
|
||||
|
||||
DontDestroyOnLoad(gameObject);
|
||||
QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
|
||||
if (Player == null)
|
||||
{
|
||||
if (IsPlayerObject)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - Player in start of {LogName} was null!", MessageType.Error);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_storedTransformSyncs.ContainsKey(PlayerId))
|
||||
{
|
||||
_storedTransformSyncs.Add(PlayerId, new Dictionary<Type, SyncBase>());
|
||||
}
|
||||
|
||||
var playerDict = _storedTransformSyncs[PlayerId];
|
||||
playerDict[GetType()] = this;
|
||||
}
|
||||
|
||||
protected virtual void OnDestroy()
|
||||
@ -146,14 +136,6 @@ namespace QSB.Syncs
|
||||
}
|
||||
|
||||
QSBSceneManager.OnSceneLoaded -= OnSceneLoaded;
|
||||
|
||||
if (!QSBPlayerManager.PlayerExists(PlayerId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var playerDict = _storedTransformSyncs[PlayerId];
|
||||
playerDict.Remove(GetType());
|
||||
}
|
||||
|
||||
protected virtual void Init()
|
||||
@ -182,7 +164,6 @@ namespace QSB.Syncs
|
||||
{
|
||||
if (!_isInitialized && IsReady && _baseIsReady)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
Init();
|
||||
|
@ -49,25 +49,19 @@ namespace QSB.WorldSync
|
||||
{
|
||||
if (!QSBNetworkManager.Instance.IsReady)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - Tried to rebuild WorldObjects when Network Manager not ready!", OWML.Common.MessageType.Warning);
|
||||
DebugLog.ToConsole($"Warning - Tried to rebuild WorldObjects when Network Manager not ready! Building when ready...", MessageType.Warning);
|
||||
QSBCore.UnityEvents.RunWhen(() => QSBNetworkManager.Instance.IsReady, () => Rebuild(scene));
|
||||
return;
|
||||
}
|
||||
|
||||
if (QSBPlayerManager.LocalPlayerId == uint.MaxValue)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - Tried to rebuild WorldObjects when LocalPlayer is not ready!", OWML.Common.MessageType.Warning);
|
||||
DebugLog.ToConsole($"Warning - Tried to rebuild WorldObjects when LocalPlayer is not ready! Building when ready...", MessageType.Warning);
|
||||
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.LocalPlayerId != uint.MaxValue, () => Rebuild(scene));
|
||||
return;
|
||||
}
|
||||
|
||||
if (QSBPlayerManager.LocalPlayer.IsReady)
|
||||
{
|
||||
DoRebuild(scene);
|
||||
return;
|
||||
}
|
||||
|
||||
QSBCore.UnityEvents.RunWhen(() => QSBPlayerManager.LocalPlayer.IsReady, () => DoRebuild(scene));
|
||||
DoRebuild(scene);
|
||||
}
|
||||
|
||||
private static void DoRebuild(OWScene scene)
|
||||
|
Loading…
x
Reference in New Issue
Block a user