RustDedicated/Assembly-CSharp/EngineSwitch.cs
2025-05-25 05:29:54 +09:30

113 lines
2.5 KiB
C#

#define UNITY_ASSERTIONS
using System;
using ConVar;
using Network;
using UnityEngine;
using UnityEngine.Assertions;
public class EngineSwitch : BaseEntity
{
public override bool OnRpcMessage(BasePlayer player, uint rpc, Message msg)
{
using (TimeWarning.New("EngineSwitch.OnRpcMessage"))
{
if (rpc == 1249530220 && player != null)
{
Assert.IsTrue(player.isServer, "SV_RPC Message is using a clientside player!");
if (Global.developer > 2)
{
Debug.Log("SV_RPCMessage: " + player?.ToString() + " - StartEngine ");
}
using (TimeWarning.New("StartEngine"))
{
using (TimeWarning.New("Conditions"))
{
if (!RPC_Server.MaxDistance.Test(1249530220u, "StartEngine", this, player, 3f))
{
return true;
}
}
try
{
using (TimeWarning.New("Call"))
{
RPCMessage msg2 = new RPCMessage
{
connection = msg.connection,
player = player,
read = msg.read
};
StartEngine(msg2);
}
}
catch (Exception exception)
{
Debug.LogException(exception);
player.Kick("RPC Error in StartEngine");
}
}
return true;
}
if (rpc == 1739656243 && player != null)
{
Assert.IsTrue(player.isServer, "SV_RPC Message is using a clientside player!");
if (Global.developer > 2)
{
Debug.Log("SV_RPCMessage: " + player?.ToString() + " - StopEngine ");
}
using (TimeWarning.New("StopEngine"))
{
using (TimeWarning.New("Conditions"))
{
if (!RPC_Server.MaxDistance.Test(1739656243u, "StopEngine", this, player, 3f))
{
return true;
}
}
try
{
using (TimeWarning.New("Call"))
{
RPCMessage msg3 = new RPCMessage
{
connection = msg.connection,
player = player,
read = msg.read
};
StopEngine(msg3);
}
}
catch (Exception exception2)
{
Debug.LogException(exception2);
player.Kick("RPC Error in StopEngine");
}
}
return true;
}
}
return base.OnRpcMessage(player, rpc, msg);
}
[RPC_Server]
[RPC_Server.MaxDistance(3f)]
public void StopEngine(RPCMessage msg)
{
MiningQuarry miningQuarry = GetParentEntity() as MiningQuarry;
if ((bool)miningQuarry)
{
miningQuarry.EngineSwitch(isOn: false);
}
}
[RPC_Server]
[RPC_Server.MaxDistance(3f)]
public void StartEngine(RPCMessage msg)
{
MiningQuarry miningQuarry = GetParentEntity() as MiningQuarry;
if ((bool)miningQuarry)
{
miningQuarry.EngineSwitch(isOn: true);
}
}
}