mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-15 18:39:50 +00:00
more stuff
This commit is contained in:
parent
f3ec0e8abb
commit
140fefe475
@ -1,4 +1,5 @@
|
||||
using Cysharp.Threading.Tasks;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using System.Linq;
|
||||
@ -10,16 +11,26 @@ namespace QSB.Player
|
||||
{
|
||||
public static async UniTaskVoid Create(PlayerInfo player, bool joining)
|
||||
{
|
||||
if (!player.IsLocalPlayer)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (joining)
|
||||
{
|
||||
if (PlayerTransformSync.LocalInstance == null ||
|
||||
player.PlayerId < QSBPlayerManager.LocalPlayerId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
await UniTask.WaitUntil(() => player.TransformSync.IsValid && player.TransformSync.ReferenceTransform);
|
||||
}
|
||||
|
||||
DebugLog.DebugWrite($"WARP {player.TransformSync}");
|
||||
|
||||
player.SetVisible(false);
|
||||
|
||||
bool Predicate() => player.TransformSync.IsValid && player.TransformSync.ReferenceTransform;
|
||||
if (!Predicate())
|
||||
{
|
||||
await UniTask.WaitUntil(Predicate);
|
||||
}
|
||||
|
||||
var go = new GameObject(nameof(JoinLeaveSingularity));
|
||||
go.transform.parent = player.TransformSync.ReferenceTransform;
|
||||
go.transform.localPosition = player.TransformSync.transform.position;
|
||||
|
@ -76,8 +76,6 @@ namespace QSB.Player.Messages
|
||||
player.Name = PlayerName;
|
||||
DebugLog.ToAll($"{player.Name} joined!", MessageType.Info);
|
||||
DebugLog.DebugWrite($"{player.Name} joined. id:{player.PlayerId}, qsbVersion:{QSBVersion}, gameVersion:{GameVersion}, dlcInstalled:{DlcInstalled}", MessageType.Info);
|
||||
|
||||
JoinLeaveSingularity.Create(player, true).Forget();
|
||||
}
|
||||
|
||||
public override void OnReceiveLocal()
|
||||
|
@ -44,16 +44,15 @@ namespace QSB.Player.TransformSync
|
||||
base.OnStartClient();
|
||||
QSBPlayerManager.OnAddPlayer?.Invoke(Player);
|
||||
DebugLog.DebugWrite($"Create Player : id<{Player.PlayerId}>", MessageType.Info);
|
||||
|
||||
JoinLeaveSingularity.Create(Player, true).Forget();
|
||||
}
|
||||
|
||||
public override void OnStartLocalPlayer() => LocalInstance = this;
|
||||
|
||||
public override void OnStopClient()
|
||||
{
|
||||
if (!isLocalPlayer)
|
||||
{
|
||||
JoinLeaveSingularity.Create(Player, false).Forget();
|
||||
}
|
||||
JoinLeaveSingularity.Create(Player, false).Forget();
|
||||
|
||||
// TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player
|
||||
QSBPlayerManager.OnRemovePlayer?.Invoke(Player);
|
||||
|
Loading…
x
Reference in New Issue
Block a user