Unstable 0.17.3.0

This commit is contained in:
Juan Pablo Arce
2022-03-22 14:44:12 -03:00
parent cefac171f5
commit 4206f6db42
100 changed files with 1380 additions and 655 deletions
@@ -1,12 +1,13 @@
using Barotrauma.Items.Components;
using Barotrauma.Networking;
using System;
using System.Xml.Linq;
namespace Barotrauma.MapCreatures.Behavior
{
partial class BallastFloraBehavior
{
const float DamageUpdateInterval = 1.0f;
private float damageUpdateTimer;
partial void LoadPrefab(ContentXElement element)
@@ -31,16 +32,38 @@ namespace Barotrauma.MapCreatures.Behavior
}
}
partial void UpdateDamage(float deltaTime)
{
damageUpdateTimer -= deltaTime;
if (damageUpdateTimer > 0.0f) { return; }
const int maxMessagesPerSecond = 10;
int messages = 0;
foreach (BallastFloraBranch branch in Branches)
{
//don't notify about minuscule amounts of damage (<= 1.0f)
if (branch.AccumulatedDamage > 1.0f)
{
CreateNetworkMessage(new BranchDamageEventData(branch));
branch.AccumulatedDamage = 0.0f;
messages++;
//throttle a bit: if a large ballast flora is withering, it can lead to a very large number of events otherwise
if (messages > maxMessagesPerSecond) { break; }
}
}
damageUpdateTimer = DamageUpdateInterval;
}
public void ServerWrite(IWriteMessage msg, IEventData eventData)
{
msg.Write((byte)eventData.NetworkHeader);
switch (eventData)
{
case SpawnEventData spawnEventData:
case SpawnEventData _:
ServerWriteSpawn(msg);
break;
case KillEventData killEventData:
case KillEventData _:
//do nothing
break;
case BranchCreateEventData branchCreateEventData:
@@ -72,6 +95,7 @@ namespace Barotrauma.MapCreatures.Behavior
var (x, y) = branch.Position;
msg.Write(parentId);
msg.Write((int)branch.ID);
msg.Write(branch.IsRootGrowth);
msg.WriteRangedInteger((byte)branch.Type, 0b0000, 0b1111);
msg.WriteRangedInteger((byte)branch.Sides, 0b0000, 0b1111);
msg.WriteRangedInteger(branch.FlowerConfig.Serialize(), 0, 0xFFF);
@@ -103,7 +127,7 @@ namespace Barotrauma.MapCreatures.Behavior
msg.Write(branch.ID);
}
public void SendNetworkMessage(IEventData extraData)
public void CreateNetworkMessage(IEventData extraData)
{
GameMain.Server.CreateEntityEvent(Parent, new Hull.BallastFloraEventData(this, extraData));
}