r2mods/ilspy_dump/ror2_csproj/RoR2/NetworkUser.cs

1579 lines
40 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.InteropServices;
using System.Text;
using JetBrains.Annotations;
using Rewired;
using RoR2.Networking;
using RoR2.Stats;
using Unity;
using UnityEngine;
using UnityEngine.Networking;
namespace RoR2;
[RequireComponent(typeof(NetworkLoadout))]
public class NetworkUser : NetworkBehaviour
{
public delegate void NetworkUserGenericDelegate(NetworkUser networkUser);
private static readonly List<NetworkUser> instancesList;
public static readonly ReadOnlyCollection<NetworkUser> readOnlyInstancesList;
private static readonly List<NetworkUser> localPlayers;
public static readonly ReadOnlyCollection<NetworkUser> readOnlyLocalPlayersList;
[SyncVar(hook = "OnSyncId")]
private NetworkUserId _id;
[SyncVar]
public byte rewiredPlayerId;
[SyncVar(hook = "OnSyncMasterObjectId")]
private NetworkInstanceId _masterObjectId;
[CanBeNull]
public LocalUser localUser;
public CameraRigController cameraRigController;
public string userName = "";
[SyncVar]
public Color32 userColor = Color.red;
[SyncVar]
private uint netLunarCoins;
[SyncVar]
public ItemIndex rebirthItem = ItemIndex.None;
private MemoizedGetComponent<CharacterMaster> cachedMaster;
private MemoizedGetComponent<PlayerCharacterMasterController> cachedPlayerCharacterMasterController;
private MemoizedGetComponent<PlayerStatsComponent> cachedPlayerStatsComponent;
private GameObject _masterObject;
[NonSerialized]
[SyncVar(hook = "SetBodyPreference")]
public BodyIndex bodyIndexPreference = BodyIndex.None;
private float secondAccumulator;
[NonSerialized]
public List<UnlockableDef> unlockables = new List<UnlockableDef>();
public List<string> debugUnlockablesList = new List<string>();
private static NetworkInstanceId serverCurrentStage;
private NetworkInstanceId _serverLastStageAcknowledgedByClient;
private static int kRpcRpcDeductLunarCoins;
private static int kCmdCmdAwardLunarCoins;
private static int kCmdCmdStoreRebirthItems;
private static int kRpcRpcStoreRebirthItems;
private static int kCmdCmdSetRebirthItems;
private static int kRpcRpcAwardLunarCoins;
private static int kCmdCmdSetNetLunarCoins;
private static int kCmdCmdSetBodyPreference;
private static int kCmdCmdSendConsoleCommand;
private static int kCmdCmdSendNewUnlockables;
private static int kRpcRpcRequestUnlockables;
private static int kCmdCmdReportAchievement;
private static int kCmdCmdReportUnlock;
private static int kCmdCmdAcknowledgeStage;
private static int kCmdCmdSubmitVote;
public NetworkLoadout networkLoadout { get; private set; }
public NetworkUserId id
{
get
{
return _id;
}
set
{
if (!_id.Equals(value))
{
Network_id = value;
UpdateUserName();
}
}
}
public bool authed => id.HasValidValue();
public Player inputPlayer => localUser?.inputPlayer;
public uint lunarCoins
{
get
{
if (localUser != null)
{
return localUser.userProfile.coins;
}
return netLunarCoins;
}
}
public CharacterMaster master => cachedMaster.Get(masterObject);
public PlayerCharacterMasterController masterController => cachedPlayerCharacterMasterController.Get(masterObject);
public PlayerStatsComponent masterPlayerStatsComponent => cachedPlayerStatsComponent.Get(masterObject);
public GameObject masterObject
{
get
{
if (!_masterObject)
{
_masterObject = Util.FindNetworkObject(_masterObjectId);
}
return _masterObject;
}
set
{
if ((bool)value)
{
Network_masterObjectId = value.GetComponent<NetworkIdentity>().netId;
_masterObject = value;
}
else
{
Network_masterObjectId = NetworkInstanceId.Invalid;
_masterObject = null;
}
}
}
public bool isParticipating => masterObject;
public bool isSplitScreenExtraPlayer => id.subId != 0;
public bool serverIsClientLoaded { get; private set; }
private NetworkInstanceId serverLastStageAcknowledgedByClient
{
get
{
return _serverLastStageAcknowledgedByClient;
}
set
{
if (!(_serverLastStageAcknowledgedByClient == value))
{
_serverLastStageAcknowledgedByClient = value;
if (serverCurrentStage == _serverLastStageAcknowledgedByClient)
{
serverIsClientLoaded = true;
NetworkUser.onNetworkUserLoadedSceneServer?.Invoke(this);
}
}
}
}
public NetworkUserId Network_id
{
get
{
return _id;
}
[param: In]
set
{
if (NetworkServer.localClientActive && !base.syncVarHookGuard)
{
base.syncVarHookGuard = true;
OnSyncId(value);
base.syncVarHookGuard = false;
}
SetSyncVar(value, ref _id, 1u);
}
}
public byte NetworkrewiredPlayerId
{
get
{
return rewiredPlayerId;
}
[param: In]
set
{
SetSyncVar(value, ref rewiredPlayerId, 2u);
}
}
public NetworkInstanceId Network_masterObjectId
{
get
{
return _masterObjectId;
}
[param: In]
set
{
if (NetworkServer.localClientActive && !base.syncVarHookGuard)
{
base.syncVarHookGuard = true;
OnSyncMasterObjectId(value);
base.syncVarHookGuard = false;
}
SetSyncVar(value, ref _masterObjectId, 4u);
}
}
public Color32 NetworkuserColor
{
get
{
return userColor;
}
[param: In]
set
{
SetSyncVar<Color32>(value, ref userColor, 8u);
}
}
public uint NetworknetLunarCoins
{
get
{
return netLunarCoins;
}
[param: In]
set
{
SetSyncVar(value, ref netLunarCoins, 16u);
}
}
public ItemIndex NetworkrebirthItem
{
get
{
return rebirthItem;
}
[param: In]
set
{
ulong newValueAsUlong = (ulong)value;
ulong fieldValueAsUlong = (ulong)rebirthItem;
SetSyncVarEnum(value, newValueAsUlong, ref rebirthItem, fieldValueAsUlong, 32u);
}
}
public BodyIndex NetworkbodyIndexPreference
{
get
{
return bodyIndexPreference;
}
[param: In]
set
{
if (NetworkServer.localClientActive && !base.syncVarHookGuard)
{
base.syncVarHookGuard = true;
SetBodyPreference(value);
base.syncVarHookGuard = false;
}
ulong newValueAsUlong = (ulong)value;
ulong fieldValueAsUlong = (ulong)bodyIndexPreference;
SetSyncVarEnum(value, newValueAsUlong, ref bodyIndexPreference, fieldValueAsUlong, 64u);
}
}
public static event Action<NetworkUser> onNetworkUserLoadedSceneServer;
public static event Action<NetworkUser> onLoadoutChangedGlobal;
[Obsolete("Use onPostNetworkUserStart instead", false)]
public static event NetworkUserGenericDelegate OnPostNetworkUserStart
{
add
{
onPostNetworkUserStart += value;
}
remove
{
onPostNetworkUserStart -= value;
}
}
public static event NetworkUserGenericDelegate onPostNetworkUserStart;
[Obsolete("Use onNetworkUserUnlockablesUpdated instead", false)]
public static event NetworkUserGenericDelegate OnNetworkUserUnlockablesUpdated
{
add
{
onNetworkUserUnlockablesUpdated += value;
}
remove
{
onNetworkUserUnlockablesUpdated -= value;
}
}
public static event NetworkUserGenericDelegate onNetworkUserUnlockablesUpdated;
public static event NetworkUserGenericDelegate onNetworkUserDiscovered;
public static event NetworkUserGenericDelegate onNetworkUserLost;
public static event NetworkUserGenericDelegate onNetworkUserBodyPreferenceChanged;
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void Init()
{
UserProfile.onUnlockableGranted += delegate(UserProfile userProfile, UnlockableDef unlockableDef)
{
if (NetworkClient.active)
{
NetworkUser networkUser3 = FindNetworkUserByUserProfile(userProfile);
if ((bool)networkUser3)
{
networkUser3.SendServerUnlockables();
}
}
};
UserProfile.onLoadoutChangedGlobal += delegate(UserProfile userProfile)
{
if (NetworkClient.active)
{
NetworkUser networkUser2 = FindNetworkUserByUserProfile(userProfile);
if ((bool)networkUser2)
{
networkUser2.PullLoadoutFromUserProfile();
}
}
};
UserProfile.onSurvivorPreferenceChangedGlobal += delegate(UserProfile userProfile)
{
if (NetworkClient.active)
{
NetworkUser networkUser = FindNetworkUserByUserProfile(userProfile);
if ((bool)networkUser)
{
networkUser.SetSurvivorPreferenceClient(userProfile.GetSurvivorPreference());
}
}
};
Stage.onStageStartGlobal += delegate(Stage stage)
{
if (NetworkServer.active)
{
serverCurrentStage = stage.netId;
}
foreach (NetworkUser localPlayer in localPlayers)
{
localPlayer.CallCmdAcknowledgeStage(stage.netId);
}
};
}
private void OnEnable()
{
instancesList.Add(this);
NetworkUser.onNetworkUserDiscovered?.Invoke(this);
}
private void OnDisable()
{
NetworkUser.onNetworkUserLost?.Invoke(this);
instancesList.Remove(this);
}
private void Awake()
{
UnityEngine.Object.DontDestroyOnLoad(base.gameObject);
networkLoadout = GetComponent<NetworkLoadout>();
networkLoadout.onLoadoutUpdated += OnLoadoutUpdated;
}
private void OnLoadoutUpdated()
{
NetworkUser.onLoadoutChangedGlobal?.Invoke(this);
}
private void PullLoadoutFromUserProfile()
{
UserProfile userProfile = localUser?.userProfile;
if (userProfile != null)
{
Loadout loadout = Loadout.RequestInstance();
userProfile.CopyLoadout(loadout);
networkLoadout.SetLoadout(loadout);
Loadout.ReturnInstance(loadout);
}
}
private void Start()
{
if (base.isLocalPlayer)
{
LocalUserManager.FindLocalUser(base.playerControllerId)?.LinkNetworkUser(this);
PullLoadoutFromUserProfile();
if (!Run.instance || bodyIndexPreference == BodyIndex.None)
{
SetSurvivorPreferenceClient(localUser.userProfile.GetSurvivorPreference());
}
}
if ((bool)Run.instance)
{
Run.instance.OnUserAdded(this);
}
if (NetworkClient.active)
{
SyncLunarCoinsToServer();
SyncRebirthItemsToServer();
SendServerUnlockables();
}
OnLoadoutUpdated();
NetworkUser.onPostNetworkUserStart?.Invoke(this);
if (base.isLocalPlayer && (bool)Stage.instance)
{
CallCmdAcknowledgeStage(Stage.instance.netId);
}
}
private void OnDestroy()
{
localPlayers.Remove(this);
Run.instance?.OnUserRemoved(this);
RunCameraManager.instance?.OnUserRemoved(this);
localUser?.UnlinkNetworkUser();
}
public void BumpDLCChecker()
{
NetworkUser.onPostNetworkUserStart(this);
}
public override void OnStartLocalPlayer()
{
base.OnStartLocalPlayer();
if (!localPlayers.Contains(this))
{
localPlayers.Add(this);
}
else
{
Debug.LogError("OnStartLocalPlayer Already has THIS local player!");
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine($"OnStartLocalPlayer LOCAL_PLAYERS COUNT {localPlayers.Count}:");
foreach (NetworkUser localPlayer in localPlayers)
{
stringBuilder.AppendLine("\t" + localPlayer.id.strValue);
}
}
public override void OnStartClient()
{
UpdateUserName();
}
private void OnSyncId(NetworkUserId newId)
{
id = newId;
}
private void OnSyncMasterObjectId(NetworkInstanceId newValue)
{
_masterObject = null;
Network_masterObjectId = newValue;
}
public NetworkPlayerName GetNetworkPlayerName()
{
NetworkPlayerName result = default(NetworkPlayerName);
result.nameOverride = ((id.strValue != null) ? id.strValue : null);
result.playerId = ((!string.IsNullOrEmpty(id.strValue)) ? default(PlatformID) : new PlatformID(id.value));
return result;
}
[Server]
public void DeductLunarCoins(uint count)
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::DeductLunarCoins(System.UInt32)' called on client");
return;
}
NetworknetLunarCoins = HGMath.UintSafeSubtract(netLunarCoins, count);
CallRpcDeductLunarCoins(count);
}
[ClientRpc]
private void RpcDeductLunarCoins(uint count)
{
if (localUser != null)
{
localUser.userProfile.coins = HGMath.UintSafeSubtract(localUser.userProfile.coins, count);
SyncLunarCoinsToServer();
}
}
[Server]
public void AwardLunarCoins(uint count)
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::AwardLunarCoins(System.UInt32)' called on client");
return;
}
NetworknetLunarCoins = HGMath.UintSafeAdd(netLunarCoins, count);
CallRpcAwardLunarCoins(count);
}
[Command]
public void CmdAwardLunarCoins(uint count)
{
AwardLunarCoins(count);
}
[Command]
public void CmdStoreRebirthItems(ItemIndex item)
{
StoreRebirthItems(item);
}
[Server]
private void StoreRebirthItems(ItemIndex item)
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::StoreRebirthItems(RoR2.ItemIndex)' called on client");
return;
}
NetworkrebirthItem = item;
CallRpcStoreRebirthItems(item);
}
[ClientRpc]
private void RpcStoreRebirthItems(ItemIndex item)
{
if (localUser != null)
{
localUser.userProfile.RebirthItem = PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex(item))?.internalName;
SyncRebirthItemsToServer();
}
}
[Client]
private void SyncRebirthItemsToServer()
{
if (!NetworkClient.active)
{
Debug.LogWarning("[Client] function 'System.Void RoR2.NetworkUser::SyncRebirthItemsToServer()' called on server");
}
else if (localUser != null)
{
UserProfile userProfile = localUser.userProfile;
if (!string.IsNullOrEmpty(userProfile.RebirthItem))
{
CallCmdSetRebirthItems((userProfile.RebirthItem != null) ? PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex(userProfile.RebirthItem)).itemIndex : ItemIndex.None);
}
}
}
[Command]
private void CmdSetRebirthItems(ItemIndex item)
{
NetworkrebirthItem = item;
}
[ClientRpc]
private void RpcAwardLunarCoins(uint count)
{
if (localUser != null)
{
_ = localUser.userProfile.name;
localUser.userProfile.coins = HGMath.UintSafeAdd(localUser.userProfile.coins, count);
localUser.userProfile.totalCollectedCoins = HGMath.UintSafeAdd(localUser.userProfile.totalCollectedCoins, count);
SyncLunarCoinsToServer();
}
}
[Client]
private void SyncLunarCoinsToServer()
{
if (!NetworkClient.active)
{
Debug.LogWarning("[Client] function 'System.Void RoR2.NetworkUser::SyncLunarCoinsToServer()' called on server");
}
else if (localUser != null)
{
CallCmdSetNetLunarCoins(localUser.userProfile.coins);
}
}
[Command]
private void CmdSetNetLunarCoins(uint newNetLunarCoins)
{
NetworknetLunarCoins = newNetLunarCoins;
}
public CharacterBody GetCurrentBody()
{
CharacterMaster characterMaster = master;
if ((bool)characterMaster)
{
return characterMaster.GetBody();
}
return null;
}
[Server]
public void CopyLoadoutFromMaster()
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::CopyLoadoutFromMaster()' called on client");
}
else
{
networkLoadout.SetLoadout(master.loadout);
}
}
[Server]
public void CopyLoadoutToMaster()
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::CopyLoadoutToMaster()' called on client");
return;
}
Loadout loadout = Loadout.RequestInstance();
networkLoadout.CopyLoadout(loadout);
master.SetLoadoutServer(loadout);
Loadout.ReturnInstance(loadout);
}
private void SetBodyPreference(BodyIndex newBodyIndexPreference)
{
NetworkbodyIndexPreference = newBodyIndexPreference;
NetworkUser.onNetworkUserBodyPreferenceChanged?.Invoke(this);
}
[Command]
public void CmdSetBodyPreference(BodyIndex newBodyIndexPreference)
{
SetBodyPreference(newBodyIndexPreference);
}
[Client]
public void SetSurvivorPreferenceClient(SurvivorDef survivorDef)
{
if (!NetworkClient.active)
{
Debug.LogWarning("[Client] function 'System.Void RoR2.NetworkUser::SetSurvivorPreferenceClient(RoR2.SurvivorDef)' called on server");
return;
}
if (!survivorDef)
{
throw new ArgumentException("Provided object is null or invalid", "survivorDef");
}
BodyIndex bodyIndexFromSurvivorIndex = SurvivorCatalog.GetBodyIndexFromSurvivorIndex(survivorDef ? survivorDef.survivorIndex : SurvivorIndex.None);
CallCmdSetBodyPreference(bodyIndexFromSurvivorIndex);
}
public SurvivorDef GetSurvivorPreference()
{
return SurvivorCatalog.GetSurvivorDef(SurvivorCatalog.GetSurvivorIndexFromBodyIndex(bodyIndexPreference));
}
private void Update()
{
if (localUser == null)
{
return;
}
if (Time.timeScale != 0f)
{
secondAccumulator += Time.unscaledDeltaTime;
}
if (!(secondAccumulator >= 1f))
{
return;
}
secondAccumulator -= 1f;
if (!Run.instance)
{
return;
}
localUser.userProfile.totalRunSeconds++;
if ((bool)masterObject)
{
CharacterMaster component = masterObject.GetComponent<CharacterMaster>();
if ((bool)component && component.hasBody)
{
localUser.userProfile.totalAliveSeconds++;
}
}
}
public void UpdateUserName()
{
userName = GetNetworkPlayerName().GetResolvedName();
}
[Command]
public void CmdSendConsoleCommand(string commandName, string[] args)
{
Console.instance.RunClientCmd(this, commandName, args);
}
[Client]
public void SendServerUnlockables()
{
if (!NetworkClient.active)
{
Debug.LogWarning("[Client] function 'System.Void RoR2.NetworkUser::SendServerUnlockables()' called on server");
}
else if (localUser != null)
{
int unlockableCount = localUser.userProfile.statSheet.GetUnlockableCount();
UnlockableIndex[] array = new UnlockableIndex[unlockableCount];
for (int i = 0; i < unlockableCount; i++)
{
array[i] = localUser.userProfile.statSheet.GetUnlockableIndex(i);
}
CallCmdSendNewUnlockables(array);
}
}
[Command]
private void CmdSendNewUnlockables(UnlockableIndex[] newUnlockableIndices)
{
unlockables.Clear();
debugUnlockablesList.Clear();
int i = 0;
for (int num = newUnlockableIndices.Length; i < num; i++)
{
UnlockableDef unlockableDef = UnlockableCatalog.GetUnlockableDef(newUnlockableIndices[i]);
if (unlockableDef != null)
{
unlockables.Add(unlockableDef);
debugUnlockablesList.Add(unlockableDef.cachedName);
}
}
NetworkUser.onNetworkUserUnlockablesUpdated?.Invoke(this);
}
[Server]
public void ServerRequestUnlockables()
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::ServerRequestUnlockables()' called on client");
}
else
{
CallRpcRequestUnlockables();
}
}
[ClientRpc]
private void RpcRequestUnlockables()
{
if (Util.HasEffectiveAuthority(base.gameObject))
{
SendServerUnlockables();
}
}
[Command]
public void CmdReportAchievement(string achievementNameToken)
{
Chat.SubjectFormatChatMessage subjectFormatChatMessage = new Chat.SubjectFormatChatMessage();
subjectFormatChatMessage.baseToken = "ACHIEVEMENT_UNLOCKED_MESSAGE";
subjectFormatChatMessage.subjectAsNetworkUser = this;
subjectFormatChatMessage.paramTokens = new string[1] { achievementNameToken };
Chat.SendBroadcastChat(subjectFormatChatMessage);
}
[Command]
public void CmdReportUnlock(UnlockableIndex unlockIndex)
{
Debug.LogFormat("NetworkUser.CmdReportUnlock({0})", unlockIndex);
UnlockableDef unlockableDef = UnlockableCatalog.GetUnlockableDef(unlockIndex);
if (unlockableDef != null)
{
ServerHandleUnlock(unlockableDef);
}
}
[Server]
public void ServerHandleUnlock([NotNull] UnlockableDef unlockableDef)
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::ServerHandleUnlock(RoR2.UnlockableDef)' called on client");
return;
}
Debug.LogFormat("NetworkUser.ServerHandleUnlock({0})", unlockableDef.cachedName);
if ((bool)masterObject)
{
PlayerStatsComponent component = masterObject.GetComponent<PlayerStatsComponent>();
if ((bool)component)
{
component.currentStats.AddUnlockable(unlockableDef);
component.ForceNextTransmit();
}
}
}
[Server]
public void ServerRemoveUnlock(UnlockableIndex index)
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::ServerRemoveUnlock(RoR2.UnlockableIndex)' called on client");
return;
}
UnlockableDef unlockableDef = UnlockableCatalog.GetUnlockableDef(index);
Debug.LogFormat("NetworkUser.ServerRemoveUnlock({0})", unlockableDef.cachedName);
if ((bool)masterObject)
{
PlayerStatsComponent component = masterObject.GetComponent<PlayerStatsComponent>();
if ((bool)component)
{
component.currentStats.RemoveUnlockable(index);
component.ForceNextTransmit();
}
}
(localUser?.userProfile)?.RevokeUnlockable(unlockableDef);
}
[Command]
public void CmdAcknowledgeStage(NetworkInstanceId stageNetworkId)
{
serverLastStageAcknowledgedByClient = stageNetworkId;
}
[Command]
public void CmdSubmitVote(GameObject voteControllerGameObject, int choiceIndex)
{
if ((bool)voteControllerGameObject)
{
VoteController component = voteControllerGameObject.GetComponent<VoteController>();
if ((bool)component)
{
component.ReceiveUserVote(this, choiceIndex);
}
}
}
public static bool AllParticipatingNetworkUsersReady()
{
ReadOnlyCollection<NetworkUser> readOnlyCollection = readOnlyInstancesList;
for (int i = 0; i < readOnlyCollection.Count; i++)
{
NetworkUser networkUser = readOnlyCollection[i];
if (networkUser.isParticipating && !networkUser.connectionToClient.isReady)
{
return false;
}
}
return true;
}
[CanBeNull]
private static NetworkUser FindNetworkUserByUserProfile([NotNull] UserProfile userProfile)
{
if (userProfile == null)
{
throw new ArgumentNullException("userProfile");
}
ReadOnlyCollection<LocalUser> readOnlyLocalUsersList = LocalUserManager.readOnlyLocalUsersList;
for (int i = 0; i < readOnlyLocalUsersList.Count; i++)
{
LocalUser localUser = readOnlyLocalUsersList[i];
if (localUser.userProfile == userProfile)
{
return localUser.currentNetworkUser;
}
}
return null;
}
static NetworkUser()
{
instancesList = new List<NetworkUser>();
readOnlyInstancesList = new ReadOnlyCollection<NetworkUser>(instancesList);
localPlayers = new List<NetworkUser>();
readOnlyLocalPlayersList = new ReadOnlyCollection<NetworkUser>(localPlayers);
kCmdCmdAwardLunarCoins = 654823536;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdAwardLunarCoins, InvokeCmdCmdAwardLunarCoins);
kCmdCmdStoreRebirthItems = -2063320580;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdStoreRebirthItems, InvokeCmdCmdStoreRebirthItems);
kCmdCmdSetRebirthItems = 1883408829;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdSetRebirthItems, InvokeCmdCmdSetRebirthItems);
kCmdCmdSetNetLunarCoins = -934763456;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdSetNetLunarCoins, InvokeCmdCmdSetNetLunarCoins);
kCmdCmdSetBodyPreference = 234442470;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdSetBodyPreference, InvokeCmdCmdSetBodyPreference);
kCmdCmdSendConsoleCommand = -1997680971;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdSendConsoleCommand, InvokeCmdCmdSendConsoleCommand);
kCmdCmdSendNewUnlockables = 1855027350;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdSendNewUnlockables, InvokeCmdCmdSendNewUnlockables);
kCmdCmdReportAchievement = -1674656990;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdReportAchievement, InvokeCmdCmdReportAchievement);
kCmdCmdReportUnlock = -1831223439;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdReportUnlock, InvokeCmdCmdReportUnlock);
kCmdCmdAcknowledgeStage = -2118585573;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdAcknowledgeStage, InvokeCmdCmdAcknowledgeStage);
kCmdCmdSubmitVote = 329593659;
NetworkBehaviour.RegisterCommandDelegate(typeof(NetworkUser), kCmdCmdSubmitVote, InvokeCmdCmdSubmitVote);
kRpcRpcDeductLunarCoins = -1554352898;
NetworkBehaviour.RegisterRpcDelegate(typeof(NetworkUser), kRpcRpcDeductLunarCoins, InvokeRpcRpcDeductLunarCoins);
kRpcRpcStoreRebirthItems = -669811482;
NetworkBehaviour.RegisterRpcDelegate(typeof(NetworkUser), kRpcRpcStoreRebirthItems, InvokeRpcRpcStoreRebirthItems);
kRpcRpcAwardLunarCoins = -604060198;
NetworkBehaviour.RegisterRpcDelegate(typeof(NetworkUser), kRpcRpcAwardLunarCoins, InvokeRpcRpcAwardLunarCoins);
kRpcRpcRequestUnlockables = -1809653515;
NetworkBehaviour.RegisterRpcDelegate(typeof(NetworkUser), kRpcRpcRequestUnlockables, InvokeRpcRpcRequestUnlockables);
NetworkCRC.RegisterBehaviour("NetworkUser", 0);
}
private void UNetVersion()
{
}
protected static void InvokeCmdCmdAwardLunarCoins(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdAwardLunarCoins called on client.");
}
else
{
((NetworkUser)obj).CmdAwardLunarCoins(reader.ReadPackedUInt32());
}
}
protected static void InvokeCmdCmdStoreRebirthItems(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdStoreRebirthItems called on client.");
}
else
{
((NetworkUser)obj).CmdStoreRebirthItems((ItemIndex)reader.ReadInt32());
}
}
protected static void InvokeCmdCmdSetRebirthItems(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdSetRebirthItems called on client.");
}
else
{
((NetworkUser)obj).CmdSetRebirthItems((ItemIndex)reader.ReadInt32());
}
}
protected static void InvokeCmdCmdSetNetLunarCoins(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdSetNetLunarCoins called on client.");
}
else
{
((NetworkUser)obj).CmdSetNetLunarCoins(reader.ReadPackedUInt32());
}
}
protected static void InvokeCmdCmdSetBodyPreference(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdSetBodyPreference called on client.");
}
else
{
((NetworkUser)obj).CmdSetBodyPreference((BodyIndex)reader.ReadInt32());
}
}
protected static void InvokeCmdCmdSendConsoleCommand(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdSendConsoleCommand called on client.");
}
else
{
((NetworkUser)obj).CmdSendConsoleCommand(reader.ReadString(), GeneratedNetworkCode._ReadArrayString_None(reader));
}
}
protected static void InvokeCmdCmdSendNewUnlockables(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdSendNewUnlockables called on client.");
}
else
{
((NetworkUser)obj).CmdSendNewUnlockables(GeneratedNetworkCode._ReadArrayUnlockableIndex_None(reader));
}
}
protected static void InvokeCmdCmdReportAchievement(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdReportAchievement called on client.");
}
else
{
((NetworkUser)obj).CmdReportAchievement(reader.ReadString());
}
}
protected static void InvokeCmdCmdReportUnlock(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdReportUnlock called on client.");
}
else
{
((NetworkUser)obj).CmdReportUnlock((UnlockableIndex)reader.ReadInt32());
}
}
protected static void InvokeCmdCmdAcknowledgeStage(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdAcknowledgeStage called on client.");
}
else
{
((NetworkUser)obj).CmdAcknowledgeStage(reader.ReadNetworkId());
}
}
protected static void InvokeCmdCmdSubmitVote(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkServer.active)
{
Debug.LogError("Command CmdSubmitVote called on client.");
}
else
{
((NetworkUser)obj).CmdSubmitVote(reader.ReadGameObject(), (int)reader.ReadPackedUInt32());
}
}
public void CallCmdAwardLunarCoins(uint count)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdAwardLunarCoins called on server.");
return;
}
if (base.isServer)
{
CmdAwardLunarCoins(count);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdAwardLunarCoins);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.WritePackedUInt32(count);
SendCommandInternal(networkWriter, 0, "CmdAwardLunarCoins");
}
public void CallCmdStoreRebirthItems(ItemIndex item)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdStoreRebirthItems called on server.");
return;
}
if (base.isServer)
{
CmdStoreRebirthItems(item);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdStoreRebirthItems);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write((int)item);
SendCommandInternal(networkWriter, 0, "CmdStoreRebirthItems");
}
public void CallCmdSetRebirthItems(ItemIndex item)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdSetRebirthItems called on server.");
return;
}
if (base.isServer)
{
CmdSetRebirthItems(item);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdSetRebirthItems);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write((int)item);
SendCommandInternal(networkWriter, 0, "CmdSetRebirthItems");
}
public void CallCmdSetNetLunarCoins(uint newNetLunarCoins)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdSetNetLunarCoins called on server.");
return;
}
if (base.isServer)
{
CmdSetNetLunarCoins(newNetLunarCoins);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdSetNetLunarCoins);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.WritePackedUInt32(newNetLunarCoins);
SendCommandInternal(networkWriter, 0, "CmdSetNetLunarCoins");
}
public void CallCmdSetBodyPreference(BodyIndex newBodyIndexPreference)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdSetBodyPreference called on server.");
return;
}
if (base.isServer)
{
CmdSetBodyPreference(newBodyIndexPreference);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdSetBodyPreference);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write((int)newBodyIndexPreference);
SendCommandInternal(networkWriter, 0, "CmdSetBodyPreference");
}
public void CallCmdSendConsoleCommand(string commandName, string[] args)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdSendConsoleCommand called on server.");
return;
}
if (base.isServer)
{
CmdSendConsoleCommand(commandName, args);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdSendConsoleCommand);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write(commandName);
GeneratedNetworkCode._WriteArrayString_None(networkWriter, args);
SendCommandInternal(networkWriter, 0, "CmdSendConsoleCommand");
}
public void CallCmdSendNewUnlockables(UnlockableIndex[] newUnlockableIndices)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdSendNewUnlockables called on server.");
return;
}
if (base.isServer)
{
CmdSendNewUnlockables(newUnlockableIndices);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdSendNewUnlockables);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
GeneratedNetworkCode._WriteArrayUnlockableIndex_None(networkWriter, newUnlockableIndices);
SendCommandInternal(networkWriter, 0, "CmdSendNewUnlockables");
}
public void CallCmdReportAchievement(string achievementNameToken)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdReportAchievement called on server.");
return;
}
if (base.isServer)
{
CmdReportAchievement(achievementNameToken);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdReportAchievement);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write(achievementNameToken);
SendCommandInternal(networkWriter, 0, "CmdReportAchievement");
}
public void CallCmdReportUnlock(UnlockableIndex unlockIndex)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdReportUnlock called on server.");
return;
}
if (base.isServer)
{
CmdReportUnlock(unlockIndex);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdReportUnlock);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write((int)unlockIndex);
SendCommandInternal(networkWriter, 0, "CmdReportUnlock");
}
public void CallCmdAcknowledgeStage(NetworkInstanceId stageNetworkId)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdAcknowledgeStage called on server.");
return;
}
if (base.isServer)
{
CmdAcknowledgeStage(stageNetworkId);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdAcknowledgeStage);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write(stageNetworkId);
SendCommandInternal(networkWriter, 0, "CmdAcknowledgeStage");
}
public void CallCmdSubmitVote(GameObject voteControllerGameObject, int choiceIndex)
{
if (!NetworkClient.active)
{
Debug.LogError("Command function CmdSubmitVote called on server.");
return;
}
if (base.isServer)
{
CmdSubmitVote(voteControllerGameObject, choiceIndex);
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)5);
networkWriter.WritePackedUInt32((uint)kCmdCmdSubmitVote);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write(voteControllerGameObject);
networkWriter.WritePackedUInt32((uint)choiceIndex);
SendCommandInternal(networkWriter, 0, "CmdSubmitVote");
}
protected static void InvokeRpcRpcDeductLunarCoins(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError("RPC RpcDeductLunarCoins called on server.");
}
else
{
((NetworkUser)obj).RpcDeductLunarCoins(reader.ReadPackedUInt32());
}
}
protected static void InvokeRpcRpcStoreRebirthItems(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError("RPC RpcStoreRebirthItems called on server.");
}
else
{
((NetworkUser)obj).RpcStoreRebirthItems((ItemIndex)reader.ReadInt32());
}
}
protected static void InvokeRpcRpcAwardLunarCoins(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError("RPC RpcAwardLunarCoins called on server.");
}
else
{
((NetworkUser)obj).RpcAwardLunarCoins(reader.ReadPackedUInt32());
}
}
protected static void InvokeRpcRpcRequestUnlockables(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError("RPC RpcRequestUnlockables called on server.");
}
else
{
((NetworkUser)obj).RpcRequestUnlockables();
}
}
public void CallRpcDeductLunarCoins(uint count)
{
if (!NetworkServer.active)
{
Debug.LogError("RPC Function RpcDeductLunarCoins called on client.");
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)2);
networkWriter.WritePackedUInt32((uint)kRpcRpcDeductLunarCoins);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.WritePackedUInt32(count);
SendRPCInternal(networkWriter, 0, "RpcDeductLunarCoins");
}
public void CallRpcStoreRebirthItems(ItemIndex item)
{
if (!NetworkServer.active)
{
Debug.LogError("RPC Function RpcStoreRebirthItems called on client.");
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)2);
networkWriter.WritePackedUInt32((uint)kRpcRpcStoreRebirthItems);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.Write((int)item);
SendRPCInternal(networkWriter, 0, "RpcStoreRebirthItems");
}
public void CallRpcAwardLunarCoins(uint count)
{
if (!NetworkServer.active)
{
Debug.LogError("RPC Function RpcAwardLunarCoins called on client.");
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)2);
networkWriter.WritePackedUInt32((uint)kRpcRpcAwardLunarCoins);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
networkWriter.WritePackedUInt32(count);
SendRPCInternal(networkWriter, 0, "RpcAwardLunarCoins");
}
public void CallRpcRequestUnlockables()
{
if (!NetworkServer.active)
{
Debug.LogError("RPC Function RpcRequestUnlockables called on client.");
return;
}
NetworkWriter networkWriter = new NetworkWriter();
networkWriter.Write((short)0);
networkWriter.Write((short)2);
networkWriter.WritePackedUInt32((uint)kRpcRpcRequestUnlockables);
networkWriter.Write(GetComponent<NetworkIdentity>().netId);
SendRPCInternal(networkWriter, 0, "RpcRequestUnlockables");
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
GeneratedNetworkCode._WriteNetworkUserId_None(writer, _id);
writer.WritePackedUInt32(rewiredPlayerId);
writer.Write(_masterObjectId);
writer.Write(userColor);
writer.WritePackedUInt32(netLunarCoins);
writer.Write((int)rebirthItem);
writer.Write((int)bodyIndexPreference);
return true;
}
bool flag = false;
if ((base.syncVarDirtyBits & (true ? 1u : 0u)) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
GeneratedNetworkCode._WriteNetworkUserId_None(writer, _id);
}
if ((base.syncVarDirtyBits & 2u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.WritePackedUInt32(rewiredPlayerId);
}
if ((base.syncVarDirtyBits & 4u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.Write(_masterObjectId);
}
if ((base.syncVarDirtyBits & 8u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.Write(userColor);
}
if ((base.syncVarDirtyBits & 0x10u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.WritePackedUInt32(netLunarCoins);
}
if ((base.syncVarDirtyBits & 0x20u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.Write((int)rebirthItem);
}
if ((base.syncVarDirtyBits & 0x40u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.Write((int)bodyIndexPreference);
}
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
_id = GeneratedNetworkCode._ReadNetworkUserId_None(reader);
rewiredPlayerId = (byte)reader.ReadPackedUInt32();
_masterObjectId = reader.ReadNetworkId();
userColor = reader.ReadColor32();
netLunarCoins = reader.ReadPackedUInt32();
rebirthItem = (ItemIndex)reader.ReadInt32();
bodyIndexPreference = (BodyIndex)reader.ReadInt32();
return;
}
int num = (int)reader.ReadPackedUInt32();
if (((uint)num & (true ? 1u : 0u)) != 0)
{
OnSyncId(GeneratedNetworkCode._ReadNetworkUserId_None(reader));
}
if (((uint)num & 2u) != 0)
{
rewiredPlayerId = (byte)reader.ReadPackedUInt32();
}
if (((uint)num & 4u) != 0)
{
OnSyncMasterObjectId(reader.ReadNetworkId());
}
if (((uint)num & 8u) != 0)
{
userColor = reader.ReadColor32();
}
if (((uint)num & 0x10u) != 0)
{
netLunarCoins = reader.ReadPackedUInt32();
}
if (((uint)num & 0x20u) != 0)
{
rebirthItem = (ItemIndex)reader.ReadInt32();
}
if (((uint)num & 0x40u) != 0)
{
SetBodyPreference((BodyIndex)reader.ReadInt32());
}
}
public override void PreStartClient()
{
}
}