60 lines
2.2 KiB
C#
60 lines
2.2 KiB
C#
using Barotrauma.Networking;
|
|
using System;
|
|
|
|
namespace Barotrauma.Items.Components
|
|
{
|
|
partial class Reactor
|
|
{
|
|
const float NetworkUpdateIntervalLow = 10.0f;
|
|
|
|
private Client blameOnBroken;
|
|
|
|
private float? nextServerLogWriteTime;
|
|
private float lastServerLogWriteTime;
|
|
|
|
public void ServerEventRead(IReadMessage msg, Client c)
|
|
{
|
|
bool autoTemp = msg.ReadBoolean();
|
|
bool powerOn = msg.ReadBoolean();
|
|
float fissionRate = msg.ReadRangedSingle(0.0f, 100.0f, 8);
|
|
float turbineOutput = msg.ReadRangedSingle(0.0f, 100.0f, 8);
|
|
float temperatureBoostAmount = msg.ReadRangedSingle(-TemperatureBoostAmount, TemperatureBoostAmount, 8);
|
|
|
|
if (!item.CanClientAccess(c)) { return; }
|
|
|
|
IsActive = true;
|
|
|
|
if (!autoTemp && AutoTemp) { blameOnBroken = c; }
|
|
if (turbineOutput < TargetTurbineOutput) { blameOnBroken = c; }
|
|
if (fissionRate > TargetFissionRate) { blameOnBroken = c; }
|
|
if (!_powerOn && powerOn) { blameOnBroken = c; }
|
|
|
|
AutoTemp = autoTemp;
|
|
_powerOn = powerOn;
|
|
TargetFissionRate = fissionRate;
|
|
TargetTurbineOutput = turbineOutput;
|
|
if (AllowTemperatureBoost) { temperatureBoost = temperatureBoostAmount; }
|
|
|
|
LastUser = c.Character;
|
|
if (nextServerLogWriteTime == null)
|
|
{
|
|
nextServerLogWriteTime = Math.Max(lastServerLogWriteTime + 1.0f, (float)Timing.TotalTime);
|
|
}
|
|
|
|
//need to create a server event to notify all clients of the changed state
|
|
unsentChanges = true;
|
|
}
|
|
|
|
public void ServerEventWrite(IWriteMessage msg, Client c, NetEntityEvent.IData extraData = null)
|
|
{
|
|
msg.WriteBoolean(autoTemp);
|
|
msg.WriteBoolean(_powerOn);
|
|
msg.WriteRangedSingle(temperature, 0.0f, 100.0f, 8);
|
|
msg.WriteRangedSingle(TargetFissionRate, 0.0f, 100.0f, 8);
|
|
msg.WriteRangedSingle(TargetTurbineOutput, 0.0f, 100.0f, 8);
|
|
msg.WriteRangedSingle(degreeOfSuccess, 0.0f, 1.0f, 8);
|
|
msg.WriteRangedSingle(temperatureBoost, -TemperatureBoostAmount, TemperatureBoostAmount, 8);
|
|
}
|
|
}
|
|
}
|