r2mods/ilspy_dump/ror2_csproj/RoR2/PortalDialerButtonControlle...

127 lines
2.5 KiB
C#

using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.Networking;
namespace RoR2;
public class PortalDialerButtonController : NetworkBehaviour
{
[SyncVar(hook = "OnSyncDigitIndex")]
public byte currentDigitIndex = 1;
public GameObject holderObject;
public GameObject swapEffect;
public ArtifactCompoundDef[] digitDefs;
private GameObject modelInstance;
public ArtifactCompoundDef currentDigitDef => digitDefs[currentDigitIndex];
public byte NetworkcurrentDigitIndex
{
get
{
return currentDigitIndex;
}
[param: In]
set
{
if (NetworkServer.localClientActive && !base.syncVarHookGuard)
{
base.syncVarHookGuard = true;
OnSyncDigitIndex(value);
base.syncVarHookGuard = false;
}
SetSyncVar(value, ref currentDigitIndex, 1u);
}
}
private void OnSyncDigitIndex(byte newDigitIndex)
{
NetworkcurrentDigitIndex = newDigitIndex;
if ((bool)modelInstance)
{
Object.Destroy(modelInstance);
}
if ((bool)swapEffect)
{
swapEffect.SetActive(value: false);
swapEffect.SetActive(value: true);
}
if ((bool)currentDigitDef.modelPrefab)
{
modelInstance = Object.Instantiate(currentDigitDef.modelPrefab, holderObject.transform);
}
}
public override void OnStartClient()
{
base.OnStartClient();
OnSyncDigitIndex(currentDigitIndex);
}
[Server]
public void CycleDigitServer()
{
if (!NetworkServer.active)
{
Debug.LogWarning("[Server] function 'System.Void RoR2.PortalDialerButtonController::CycleDigitServer()' called on client");
return;
}
byte b = (byte)(currentDigitIndex + 1);
if (b >= digitDefs.Length)
{
b = 1;
}
NetworkcurrentDigitIndex = b;
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
writer.WritePackedUInt32(currentDigitIndex);
return true;
}
bool flag = false;
if ((base.syncVarDirtyBits & (true ? 1u : 0u)) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
flag = true;
}
writer.WritePackedUInt32(currentDigitIndex);
}
if (!flag)
{
writer.WritePackedUInt32(base.syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
currentDigitIndex = (byte)reader.ReadPackedUInt32();
return;
}
int num = (int)reader.ReadPackedUInt32();
if (((uint)num & (true ? 1u : 0u)) != 0)
{
OnSyncDigitIndex((byte)reader.ReadPackedUInt32());
}
}
public override void PreStartClient()
{
}
}