using System.Collections;
using NitroxClient.GameLogic.InitialSync.Abstract;
using NitroxModel.MultiplayerSession;
using NitroxModel.Packets;
namespace NitroxClient.GameLogic.InitialSync;
///
/// Makes sure the remote player object is loaded.
///
///
/// This allows for the remote player to:
/// - use equipment
///
public sealed class RemotePlayerInitialSyncProcessor : InitialSyncProcessor
{
private readonly PlayerManager remotePlayerManager;
public RemotePlayerInitialSyncProcessor(PlayerManager remotePlayerManager)
{
this.remotePlayerManager = remotePlayerManager;
}
public override IEnumerator Process(InitialPlayerSync packet, WaitScreen.ManualWaitItem waitScreenItem)
{
int remotePlayersSynced = 0;
foreach (PlayerContext otherPlayer in packet.OtherPlayers)
{
waitScreenItem.SetProgress(remotePlayersSynced, packet.OtherPlayers.Count);
remotePlayerManager.Create(otherPlayer);
remotePlayersSynced++;
yield return null;
}
}
}