From 5a21d64b3a2d2d6c62c671b623058f711e5e20f5 Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 4 Nov 2015 20:21:34 +0200 Subject: [PATCH] FillNetworkData uses NetBuffer instead of OutgoingMessage --- .../Source/Characters/AI/AIController.cs | 2 +- .../Source/Characters/AI/EnemyAIController.cs | 2 +- Subsurface/Source/Characters/AICharacter.cs | 2 +- Subsurface/Source/Characters/Character.cs | 2 +- Subsurface/Source/Items/CharacterInventory.cs | 4 ++-- .../Items/Components/Holdable/Holdable.cs | 4 ++-- .../Source/Items/Components/ItemComponent.cs | 4 ++-- .../Source/Items/Components/Machines/Pump.cs | 4 ++-- .../Source/Items/Components/Machines/Radar.cs | 4 ++-- .../Items/Components/Machines/Reactor.cs | 4 ++-- .../Items/Components/Machines/Steering.cs | 4 ++-- .../Items/Components/Power/PowerContainer.cs | 4 ++-- .../Components/Signal/ConnectionPanel.cs | 4 ++-- .../Source/Items/Components/Signal/Wire.cs | 4 ++-- Subsurface/Source/Items/Inventory.cs | 4 ++-- Subsurface/Source/Items/Item.cs | 2 +- Subsurface/Source/Map/Entity.cs | 2 +- Subsurface/Source/Map/Hull.cs | 3 ++- Subsurface/Source/Map/Structure.cs | 2 +- Subsurface/Source/Map/Submarine.cs | 2 +- Subsurface/Source/Networking/GameServer.cs | 6 ++---- Subsurface/Source/Networking/NetworkEvent.cs | 6 ++---- Subsurface_Solution.v12.suo | Bin 757760 -> 757760 bytes 23 files changed, 36 insertions(+), 39 deletions(-) diff --git a/Subsurface/Source/Characters/AI/AIController.cs b/Subsurface/Source/Characters/AI/AIController.cs index e3fc2e544..77fff925b 100644 --- a/Subsurface/Source/Characters/AI/AIController.cs +++ b/Subsurface/Source/Characters/AI/AIController.cs @@ -58,7 +58,7 @@ namespace Barotrauma //protected Structure lastStructurePicked; - public virtual void FillNetworkData(NetOutgoingMessage message) { } + public virtual void FillNetworkData(NetBuffer message) { } public virtual void ReadNetworkData(NetIncomingMessage message) { } } diff --git a/Subsurface/Source/Characters/AI/EnemyAIController.cs b/Subsurface/Source/Characters/AI/EnemyAIController.cs index e1b237122..9206871df 100644 --- a/Subsurface/Source/Characters/AI/EnemyAIController.cs +++ b/Subsurface/Source/Characters/AI/EnemyAIController.cs @@ -508,7 +508,7 @@ namespace Barotrauma spriteBatch.DrawString(GUI.Font, "cooldown: " + coolDownTimer, pos - Vector2.UnitY * 120.0f, Color.Red); } - public override void FillNetworkData(NetOutgoingMessage message) + public override void FillNetworkData(NetBuffer message) { message.Write((byte)state); diff --git a/Subsurface/Source/Characters/AICharacter.cs b/Subsurface/Source/Characters/AICharacter.cs index e059b7ab8..367740635 100644 --- a/Subsurface/Source/Characters/AICharacter.cs +++ b/Subsurface/Source/Characters/AICharacter.cs @@ -83,7 +83,7 @@ namespace Barotrauma return result; } - public override bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public override bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { switch (type) { diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 75d9a9575..142a33cdd 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -1186,7 +1186,7 @@ namespace Barotrauma } } - public override bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public override bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { switch (type) { diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs index 396aec3ed..e7a2e91d7 100644 --- a/Subsurface/Source/Items/CharacterInventory.cs +++ b/Subsurface/Source/Items/CharacterInventory.cs @@ -355,7 +355,7 @@ namespace Barotrauma } } - public override bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public override bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { for (int i = 0; i < 5; i++ ) { @@ -371,7 +371,7 @@ namespace Barotrauma return true; } - public override void ReadNetworkData(NetworkEventType type, NetIncomingMessage message) + public override void ReadNetworkData(NetworkEventType type, NetBuffer message) { for (int i = 0; i<5; i++) { diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Subsurface/Source/Items/Components/Holdable/Holdable.cs index 881487f5e..6b2087ac9 100644 --- a/Subsurface/Source/Items/Components/Holdable/Holdable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Holdable.cs @@ -263,13 +263,13 @@ namespace Barotrauma.Items.Components } } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { message.Write(item.SimPosition.X); message.Write(item.SimPosition.Y); } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { Vector2 newPos = Vector2.Zero; diff --git a/Subsurface/Source/Items/Components/ItemComponent.cs b/Subsurface/Source/Items/Components/ItemComponent.cs index 618cee02b..15d47344d 100644 --- a/Subsurface/Source/Items/Components/ItemComponent.cs +++ b/Subsurface/Source/Items/Components/ItemComponent.cs @@ -701,11 +701,11 @@ namespace Barotrauma.Items.Components return ic; } - public virtual void FillNetworkData(NetworkEventType type, NetOutgoingMessage message) + public virtual void FillNetworkData(NetworkEventType type, NetBuffer message) { } - public virtual void ReadNetworkData(NetworkEventType type, NetIncomingMessage message) + public virtual void ReadNetworkData(NetworkEventType type, NetBuffer message) { } } diff --git a/Subsurface/Source/Items/Components/Machines/Pump.cs b/Subsurface/Source/Items/Components/Machines/Pump.cs index eb786fe56..c78ca9006 100644 --- a/Subsurface/Source/Items/Components/Machines/Pump.cs +++ b/Subsurface/Source/Items/Components/Machines/Pump.cs @@ -166,14 +166,14 @@ namespace Barotrauma.Items.Components if (!IsActive) currPowerConsumption = 0.0f; } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { message.WriteRangedInteger(-10,10,(int)(flowPercentage/10.0f)); message.Write(IsActive); message.WritePadBits(); } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { float newFlow = 0.0f; bool newActive; diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Subsurface/Source/Items/Components/Machines/Radar.cs index f1e4067e6..a0ac2f6cf 100644 --- a/Subsurface/Source/Items/Components/Machines/Radar.cs +++ b/Subsurface/Source/Items/Components/Machines/Radar.cs @@ -296,12 +296,12 @@ namespace Barotrauma.Items.Components spriteBatch.DrawString(GUI.SmallFont, (int)(dist / 80.0f) + " m", new Vector2(markerPos.X + 10, markerPos.Y + 15), Color.LightGreen); } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { message.Write(IsActive); } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { try { diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs index 8e2754a90..a3d0ce692 100644 --- a/Subsurface/Source/Items/Components/Machines/Reactor.cs +++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs @@ -423,7 +423,7 @@ namespace Barotrauma.Items.Components } } - public override void FillNetworkData(NetworkEventType type, NetOutgoingMessage message) + public override void FillNetworkData(NetworkEventType type, NetBuffer message) { message.Write(autoTemp); message.WriteRangedSingle(temperature, 0.0f, 10000.0f, 16); @@ -433,7 +433,7 @@ namespace Barotrauma.Items.Components message.WriteRangedSingle(fissionRate, 0.0f, 100.0f, 8); } - public override void ReadNetworkData(NetworkEventType type, NetIncomingMessage message) + public override void ReadNetworkData(NetworkEventType type, NetBuffer message) { bool newAutoTemp; float newTemperature, newShutDownTemp; diff --git a/Subsurface/Source/Items/Components/Machines/Steering.cs b/Subsurface/Source/Items/Components/Machines/Steering.cs index 9fb7936bc..807b27ce4 100644 --- a/Subsurface/Source/Items/Components/Machines/Steering.cs +++ b/Subsurface/Source/Items/Components/Machines/Steering.cs @@ -209,7 +209,7 @@ namespace Barotrauma.Items.Components } } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { message.Write(targetVelocity.X); message.Write(targetVelocity.Y); @@ -217,7 +217,7 @@ namespace Barotrauma.Items.Components message.Write(autoPilot); } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { Vector2 newTargetVelocity = Vector2.Zero; bool newAutoPilot = false; diff --git a/Subsurface/Source/Items/Components/Power/PowerContainer.cs b/Subsurface/Source/Items/Components/Power/PowerContainer.cs index 393f3e60a..a18909012 100644 --- a/Subsurface/Source/Items/Components/Power/PowerContainer.cs +++ b/Subsurface/Source/Items/Components/Power/PowerContainer.cs @@ -196,13 +196,13 @@ namespace Barotrauma.Items.Components } } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { message.WriteRangedSingle(MathHelper.Clamp(rechargeSpeed/MaxRechargeSpeed, 0.0f, 1.0f), 0.0f, 1.0f, 8); message.WriteRangedSingle(MathHelper.Clamp(charge/capacity,0.0f, 1.0f), 0.0f, 1.0f, 8); } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { float newRechargeSpeed = 0f; float newCharge = 0.0f; diff --git a/Subsurface/Source/Items/Components/Signal/ConnectionPanel.cs b/Subsurface/Source/Items/Components/Signal/ConnectionPanel.cs index 1fd38a981..f762079f4 100644 --- a/Subsurface/Source/Items/Components/Signal/ConnectionPanel.cs +++ b/Subsurface/Source/Items/Components/Signal/ConnectionPanel.cs @@ -124,7 +124,7 @@ namespace Barotrauma.Items.Components base.Remove(); } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { foreach (Connection c in connections) { @@ -137,7 +137,7 @@ namespace Barotrauma.Items.Components } } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { System.Diagnostics.Debug.WriteLine("connectionpanel update"); foreach (Connection c in connections) diff --git a/Subsurface/Source/Items/Components/Signal/Wire.cs b/Subsurface/Source/Items/Components/Signal/Wire.cs index f312e35b8..12b5b14b1 100644 --- a/Subsurface/Source/Items/Components/Signal/Wire.cs +++ b/Subsurface/Source/Items/Components/Signal/Wire.cs @@ -428,7 +428,7 @@ namespace Barotrauma.Items.Components base.Remove(); } - public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message) + public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { message.Write((byte)Math.Min(Nodes.Count, 10)); for (int i = 0; i < Math.Min(Nodes.Count,10); i++) @@ -438,7 +438,7 @@ namespace Barotrauma.Items.Components } } - public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message) + public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetBuffer message) { Nodes.Clear(); diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs index 382400e62..5e26e60f9 100644 --- a/Subsurface/Source/Items/Inventory.cs +++ b/Subsurface/Source/Items/Inventory.cs @@ -295,7 +295,7 @@ namespace Barotrauma spriteBatch.DrawString(GUI.Font, (int)item.Condition + " %", new Vector2(rect.X + rect.Width / 2, rect.Y + rect.Height / 2), Color.Red); } - public virtual bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public virtual bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { for (int i = 0; i newItemIDs = new List(); diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index 2c1d5fcfb..0295aae88 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -1223,7 +1223,7 @@ namespace Barotrauma NetworkEventType.ImportantComponentUpdate : NetworkEventType.ComponentUpdate, ID, isClient, index); } - public override bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public override bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { message.Write((byte)MathHelper.Clamp(condition*2.55f,0.0f,255.0f)); diff --git a/Subsurface/Source/Map/Entity.cs b/Subsurface/Source/Map/Entity.cs index 1449ad68e..4377ef8a9 100644 --- a/Subsurface/Source/Map/Entity.cs +++ b/Subsurface/Source/Map/Entity.cs @@ -65,7 +65,7 @@ namespace Barotrauma dictionary.Add(id, this); } - public virtual bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public virtual bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { return false; } diff --git a/Subsurface/Source/Map/Hull.cs b/Subsurface/Source/Map/Hull.cs index 7da365d7f..0f509df31 100644 --- a/Subsurface/Source/Map/Hull.cs +++ b/Subsurface/Source/Map/Hull.cs @@ -6,6 +6,7 @@ using System.Xml.Linq; using FarseerPhysics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using Lidgren.Network; namespace Barotrauma { @@ -471,7 +472,7 @@ namespace Barotrauma h.ID = (ushort)int.Parse(element.Attribute("ID").Value); } - public override bool FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message, object data) + public override bool FillNetworkData(Networking.NetworkEventType type, NetBuffer message, object data) { message.WriteRangedSingle(MathHelper.Clamp(volume/FullVolume, 0.0f, 1.5f), 0.0f, 1.5f, 6); diff --git a/Subsurface/Source/Map/Structure.cs b/Subsurface/Source/Map/Structure.cs index ed2477da5..0584d5541 100644 --- a/Subsurface/Source/Map/Structure.cs +++ b/Subsurface/Source/Map/Structure.cs @@ -636,7 +636,7 @@ namespace Barotrauma } - public override bool FillNetworkData(NetworkEventType type, NetOutgoingMessage message, object data) + public override bool FillNetworkData(NetworkEventType type, NetBuffer message, object data) { message.Write((float)NetTime.Now); diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index 3cb4469f8..094a301b6 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -383,7 +383,7 @@ namespace Barotrauma Level.Loaded.Move(-amount); } - public override bool FillNetworkData(Networking.NetworkEventType type, NetOutgoingMessage message, object data) + public override bool FillNetworkData(Networking.NetworkEventType type, NetBuffer message, object data) { if (subBody == null) return false; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index b0a17d05c..771cbc109 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -645,14 +645,12 @@ namespace Barotrauma.Networking NetOutgoingMessage message = server.CreateMessage(); message.Write((byte)PacketTypes.NetworkEvent); - - - + List msgBytes = new List(); foreach (NetworkEvent unreliableEvent in unreliableEvents) { - NetOutgoingMessage tempMessage = server.CreateMessage(); + NetBuffer tempMessage = new NetBuffer();// server.CreateMessage(); if (!unreliableEvent.FillData(tempMessage)) continue; tempMessage.WritePadBits(); diff --git a/Subsurface/Source/Networking/NetworkEvent.cs b/Subsurface/Source/Networking/NetworkEvent.cs index f7039dfa5..26350fa8a 100644 --- a/Subsurface/Source/Networking/NetworkEvent.cs +++ b/Subsurface/Source/Networking/NetworkEvent.cs @@ -21,9 +21,7 @@ namespace Barotrauma.Networking ItemFixed = 9, UpdateProperty = 10, - WallDamage = 11, - - + WallDamage = 11 } class NetworkEvent @@ -123,7 +121,7 @@ namespace Barotrauma.Networking events.Add(this); } - public bool FillData(NetOutgoingMessage message) + public bool FillData(NetBuffer message) { message.Write((byte)eventType); diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index db41847159432334793e4e97b96e41e86a20abdb..728c5959bae5232eaa57088d60ffab96f1809784 100644 GIT binary patch delta 11758 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 delta 13461 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