35 lines
1.3 KiB
C#
35 lines
1.3 KiB
C#
using Barotrauma.Networking;
|
|
using System;
|
|
|
|
namespace Barotrauma.Items.Components
|
|
{
|
|
partial class Engine : Powered, IServerSerializable, IClientSerializable
|
|
{
|
|
public void ServerEventWrite(IWriteMessage msg, Client c, NetEntityEvent.IData extraData = null)
|
|
{
|
|
//force can only be adjusted at 10% intervals -> no need for more accuracy than this
|
|
msg.WriteRangedInteger((int)(targetForce / 10.0f), -10, 10);
|
|
msg.WriteUInt16(User == null ? Entity.NullEntityID : User.ID);
|
|
}
|
|
|
|
public void ServerEventRead(IReadMessage msg, Client c)
|
|
{
|
|
float newTargetForce = msg.ReadRangedInteger(-10, 10) * 10.0f;
|
|
|
|
if (item.CanClientAccess(c))
|
|
{
|
|
lastReceivedTargetForce = null;
|
|
if (Math.Abs(newTargetForce - targetForce) > 0.01f)
|
|
{
|
|
GameServer.Log(GameServer.CharacterLogName(c.Character) + " set the force of " + item.Name + " to " + (int)(newTargetForce) + " %", ServerLog.MessageType.ItemInteraction);
|
|
}
|
|
targetForce = newTargetForce;
|
|
User = c.Character;
|
|
}
|
|
|
|
//notify all clients of the changed state
|
|
item.CreateServerEvent(this);
|
|
}
|
|
}
|
|
}
|