Files
Nitrox/NitroxModel/Packets/InitialPlayerSync.cs
2025-07-06 00:23:46 +02:00

147 lines
6.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NitroxModel.DataStructures;
using NitroxModel.DataStructures.GameLogic;
using NitroxModel.DataStructures.Unity;
using NitroxModel.DataStructures.Util;
using NitroxModel.MultiplayerSession;
using NitroxModel.Server;
namespace NitroxModel.Packets
{
[Serializable]
public class InitialPlayerSync : Packet
{
public NitroxId AssignedEscapePodId { get; }
public Dictionary<string, NitroxId> EquippedItems { get; }
public List<NitroxTechType> UsedItems { get; }
public Optional<NitroxId>[] QuickSlotsBindingIds { get; }
public NitroxId PlayerGameObjectId { get; }
public bool FirstTimeConnecting { get; }
public InitialPDAData PDAData { get; }
public InitialStoryGoalData StoryGoalData { get; }
public NitroxVector3 PlayerSpawnData { get; }
public NitroxQuaternion PlayerSpawnRotation { get; }
public Optional<NitroxId> PlayerSubRootId { get; }
public PlayerStatsData PlayerStatsData { get; }
public List<PlayerContext> OtherPlayers { get; }
public List<Entity> GlobalRootEntities { get; }
public List<SimulatedEntity> InitialSimulationOwnerships { get; }
public NitroxGameMode GameMode { get; }
public Perms Permissions { get; }
public IntroCinematicMode IntroCinematicMode { get; }
public SubnauticaPlayerPreferences Preferences { get; }
public TimeData TimeData { get; }
public bool IsFirstPlayer { get; }
public Dictionary<NitroxId, int> BuildOperationIds { get; }
public bool KeepInventoryOnDeath { get; }
public SessionSettings SessionSettings { get; }
public InitialPlayerSync(NitroxId playerGameObjectId,
bool firstTimeConnecting,
NitroxId assignedEscapePodId,
IDictionary<string, NitroxId> equipment,
IEnumerable<NitroxTechType> usedItems,
Optional<NitroxId>[] quickSlotsBindingIds,
InitialPDAData pdaData,
InitialStoryGoalData storyGoalData,
NitroxVector3 playerSpawnData,
NitroxQuaternion playerSpawnRotation,
Optional<NitroxId> playerSubRootId,
PlayerStatsData playerStatsData,
IEnumerable<PlayerContext> otherPlayers,
IEnumerable<Entity> globalRootEntities,
IEnumerable<SimulatedEntity> initialSimulationOwnerships,
NitroxGameMode gameMode,
Perms perms,
IntroCinematicMode introCinematicMode,
SubnauticaPlayerPreferences preferences,
TimeData timeData,
bool isFirstPlayer,
Dictionary<NitroxId, int> buildOperationIds,
bool keepInventoryOnDeath,
SessionSettings sessionSettings)
{
AssignedEscapePodId = assignedEscapePodId;
PlayerGameObjectId = playerGameObjectId;
FirstTimeConnecting = firstTimeConnecting;
EquippedItems = new(equipment);
UsedItems = usedItems.ToList();
QuickSlotsBindingIds = quickSlotsBindingIds;
PDAData = pdaData;
StoryGoalData = storyGoalData;
PlayerSpawnData = playerSpawnData;
PlayerSpawnRotation = playerSpawnRotation;
PlayerSubRootId = playerSubRootId;
PlayerStatsData = playerStatsData;
OtherPlayers = otherPlayers.ToList();
GlobalRootEntities = globalRootEntities.ToList();
InitialSimulationOwnerships = initialSimulationOwnerships.ToList();
GameMode = gameMode;
Permissions = perms;
IntroCinematicMode = introCinematicMode;
Preferences = preferences;
TimeData = timeData;
IsFirstPlayer = isFirstPlayer;
BuildOperationIds = buildOperationIds;
KeepInventoryOnDeath = keepInventoryOnDeath;
SessionSettings = sessionSettings;
}
/// <remarks>Used for deserialization</remarks>
public InitialPlayerSync(
NitroxId assignedEscapePodId,
Dictionary<string, NitroxId> equippedItems,
List<NitroxTechType> usedItems,
Optional<NitroxId>[] quickSlotsBindingIds,
NitroxId playerGameObjectId,
bool firstTimeConnecting,
InitialPDAData pdaData,
InitialStoryGoalData storyGoalData,
NitroxVector3 playerSpawnData,
NitroxQuaternion playerSpawnRotation,
Optional<NitroxId> playerSubRootId,
PlayerStatsData playerStatsData,
List<PlayerContext> otherPlayers,
List<Entity> globalRootEntities,
List<SimulatedEntity> initialSimulationOwnerships,
NitroxGameMode gameMode,
Perms permissions,
IntroCinematicMode introCinematicMode,
SubnauticaPlayerPreferences preferences,
TimeData timeData,
bool isFirstPlayer,
Dictionary<NitroxId, int> buildOperationIds,
bool keepInventoryOnDeath,
SessionSettings sessionSettings)
{
AssignedEscapePodId = assignedEscapePodId;
PlayerGameObjectId = playerGameObjectId;
FirstTimeConnecting = firstTimeConnecting;
EquippedItems = equippedItems;
UsedItems = usedItems;
QuickSlotsBindingIds = quickSlotsBindingIds;
PDAData = pdaData;
StoryGoalData = storyGoalData;
PlayerSpawnData = playerSpawnData;
PlayerSpawnRotation = playerSpawnRotation;
PlayerSubRootId = playerSubRootId;
PlayerStatsData = playerStatsData;
OtherPlayers = otherPlayers;
GlobalRootEntities = globalRootEntities;
InitialSimulationOwnerships = initialSimulationOwnerships;
GameMode = gameMode;
Permissions = permissions;
IntroCinematicMode = introCinematicMode;
Preferences = preferences;
TimeData = timeData;
IsFirstPlayer = isFirstPlayer;
BuildOperationIds = buildOperationIds;
KeepInventoryOnDeath = keepInventoryOnDeath;
SessionSettings = sessionSettings;
}
}
}