From c613e5fcf829a87abc2d1c7a152f5d268cb53af8 Mon Sep 17 00:00:00 2001 From: Regalis11 Date: Sun, 21 Feb 2016 20:46:57 +0200 Subject: [PATCH] AICharacte syncing bugfixes, cleanbuild removes the temp save folder, minor networkevent optimizations (enum max value == GetValues().Length-1) --- .vs/Subsurface_Solution/v14/.suo | Bin 783360 -> 783360 bytes .../Source/Characters/AI/EnemyAIController.cs | 14 ++- Subsurface/Source/Characters/AICharacter.cs | 92 ++++++++---------- Subsurface/Source/Characters/Character.cs | 8 +- Subsurface/Source/DebugConsole.cs | 6 ++ .../Items/Components/Machines/Steering.cs | 29 +++--- Subsurface/Source/Map/Submarine.cs | 20 +++- Subsurface/Source/Networking/NetStats.cs | 2 +- Subsurface/Source/Networking/NetworkEvent.cs | 8 +- 9 files changed, 97 insertions(+), 82 deletions(-) diff --git a/.vs/Subsurface_Solution/v14/.suo b/.vs/Subsurface_Solution/v14/.suo index a395e4ba0625a7f995bac2329a7d1c7171189ed8..667c418dc6b217e2d45c5aea5b86dd1f4c034c5b 100644 GIT binary patch delta 9572 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 delta 9329 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 jUCUe0g!ZDJEZyLm?7C^b?+>Bvn$Pn}%Byd=> NetConfig.CharacterIgnoreDistance) return false; + message.Write(AnimController.RefLimb.SimPosition.X); + message.Write(AnimController.RefLimb.SimPosition.Y); - message.Write(AnimController.RefLimb.SimPosition.X); - message.Write(AnimController.RefLimb.SimPosition.Y); - - - message.Write(AnimController.RefLimb.Rotation); - // i++; - //} + message.Write(AnimController.RefLimb.Rotation); message.WriteRangedSingle(MathHelper.Clamp(AnimController.StunTimer, 0.0f, 60.0f), 0.0f, 60.0f, 8); message.Write((byte)((health / maxHealth) * 255.0f)); @@ -115,30 +107,23 @@ namespace Barotrauma aiController.FillNetworkData(message); return true; case NetworkEventType.EntityUpdate: - //if (Submarine == null) - //{ - // if ((AnimController.RefLimb.SimPosition - Submarine.Loaded.SimPosition).Length() > NetConfig.CharacterIgnoreDistance) return false; - - //} - //else - //{ - // if (AnimController.RefLimb.SimPosition.Length() > NetConfig.CharacterIgnoreDistance) return false; - //} - message.Write(AnimController.TargetDir == Direction.Right); message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.X, -1.0f, 1.0f), -1.0f, 1.0f, 8); - message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.X, -1.0f, 1.0f), -1.0f, 1.0f, 8); + message.WriteRangedSingle(MathHelper.Clamp(AnimController.TargetMovement.Y, -1.0f, 1.0f), -1.0f, 1.0f, 8); message.Write(Submarine != null); - + message.Write(AnimController.RefLimb.SimPosition.X); message.Write(AnimController.RefLimb.SimPosition.Y); - return true; + return true; + default: +#if DEBUG + DebugConsole.ThrowError("AICharacter network event had a wrong type ("+type+")"); +#endif + return false; } - - return true; } public override void ReadNetworkData(NetworkEventType type, NetIncomingMessage message, float sendingTime, out object data) @@ -152,33 +137,27 @@ namespace Barotrauma Kill(CauseOfDeath.Damage, true); return; case NetworkEventType.ImportantEntityUpdate: - //foreach (Limb limb in AnimController.Limbs) - //{ - // if (limb.ignoreCollisions) continue; - Vector2 limbPos = AnimController.RefLimb.SimPosition; - float rotation = AnimController.RefLimb.Rotation; + Vector2 limbPos = AnimController.RefLimb.SimPosition; + float rotation = AnimController.RefLimb.Rotation; - try - { - limbPos.X = message.ReadFloat(); - limbPos.Y = message.ReadFloat(); + try + { + limbPos.X = message.ReadFloat(); + limbPos.Y = message.ReadFloat(); - rotation = message.ReadFloat(); - } - catch - { - return; - } + rotation = message.ReadFloat(); + } + catch + { + return; + } - if (AnimController.RefLimb.body != null) - { - //AnimController.RefLimb.body.TargetVelocity = limb.body.LinearVelocity; - AnimController.RefLimb.body.TargetPosition = limbPos;// +vel * (float)(deltaTime / 60.0); - AnimController.RefLimb.body.TargetRotation = rotation;// +angularVel * (float)(deltaTime / 60.0); - //limb.body.TargetAngularVelocity = limb.body.AngularVelocity; - } - //} + if (AnimController.RefLimb.body != null) + { + AnimController.RefLimb.body.TargetPosition = limbPos; + AnimController.RefLimb.body.TargetRotation = rotation; + } float newStunTimer = 0.0f, newHealth = 0.0f, newBleeding = 0.0f; @@ -190,7 +169,14 @@ namespace Barotrauma newBleeding = message.ReadRangedSingle(0.0f, 5.0f, 8); } - catch { return; } + catch (Exception e) + { +#if DEBUG + DebugConsole.ThrowError("Failed to read AICharacter update message", e); +#endif + + return; + } AnimController.StunTimer = newStunTimer; health = newHealth; @@ -231,9 +217,9 @@ namespace Barotrauma AnimController.TargetDir = (targetDir) ? Direction.Right : Direction.Left; AnimController.TargetMovement = targetMovement; - - AnimController.TargetMovement = AnimController.EstimateCurrPosition(pos, (float)(NetTime.Now) - sendingTime); - + + AnimController.RefLimb.body.TargetPosition = + AnimController.EstimateCurrPosition(pos, (float)(NetTime.Now) - sendingTime); if (inSub) { diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index a50e7aa1b..e0458869c 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -1393,17 +1393,17 @@ namespace Barotrauma if (inventory == null) return false; return inventory.FillNetworkData(NetworkEventType.InventoryUpdate, message, data); case NetworkEventType.ImportantEntityUpdate: - if (health>0.0f) + if (health > 0.0f) { message.Write(Math.Max((byte)((health / maxHealth) * 255.0f), (byte)1)); } else { message.Write((byte)0); - message.WriteRangedInteger(0, Enum.GetValues(typeof(CauseOfDeath)).Length, (int)lastAttackCauseOfDeath); + message.WriteRangedInteger(0, Enum.GetValues(typeof(CauseOfDeath)).Length-1, (int)lastAttackCauseOfDeath); } - if (AnimController.StunTimer<=0.0f && bleeding<=0.0f && oxygen>99.0f) + if (AnimController.StunTimer <= 0.0f && bleeding <= 0.0f && oxygen > 99.0f) { message.Write(true); } @@ -1566,7 +1566,7 @@ namespace Barotrauma if (health == 0.0f) { - causeOfDeath = (CauseOfDeath)message.ReadRangedInteger(0, Enum.GetValues(typeof(CauseOfDeath)).Length); + causeOfDeath = (CauseOfDeath)message.ReadRangedInteger(0, Enum.GetValues(typeof(CauseOfDeath)).Length-1); Kill(causeOfDeath, true); } diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index a91ccf3e4..881ba1590 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -449,6 +449,12 @@ namespace Barotrauma DebugConsole.NewMessage("Deleted "+saveFile, Color.Green); } + if (System.IO.Directory.Exists(System.IO.Path.Combine(SaveUtil.SaveFolder, "temp"))) + { + System.IO.Directory.Delete(System.IO.Path.Combine(SaveUtil.SaveFolder, "temp"), true); + DebugConsole.NewMessage("Deleted temp save folder", Color.Green); + } + if (System.IO.Directory.Exists(ServerLog.SavePath)) { var logFiles = System.IO.Directory.GetFiles(ServerLog.SavePath); diff --git a/Subsurface/Source/Items/Components/Machines/Steering.cs b/Subsurface/Source/Items/Components/Machines/Steering.cs index 3a8b59066..8e4f20246 100644 --- a/Subsurface/Source/Items/Components/Machines/Steering.cs +++ b/Subsurface/Source/Items/Components/Machines/Steering.cs @@ -46,7 +46,7 @@ namespace Barotrauma.Items.Components autopilotTickBox.Selected = value; maintainPosTickBox.Enabled = autoPilot; - + if (autoPilot) { if (pathFinder==null) pathFinder = new PathFinder(WayPoint.WayPointList, false); @@ -103,7 +103,7 @@ namespace Barotrauma.Items.Components autopilotTickBox.OnSelected = (GUITickBox box) => { AutoPilot = box.Selected; - item.NewComponentEvent(this, true, true); + valueChanged = true; return true; }; @@ -117,22 +117,23 @@ namespace Barotrauma.Items.Components { //base.Update(deltaTime, cam); + if (valueChanged) + { + networkUpdateTimer -= deltaTime; + if (networkUpdateTimer <= 0.0f) + { + item.NewComponentEvent(this, true, false); + networkUpdateTimer = 0.5f; + valueChanged = false; + } + } + if (voltage < minVoltage) return; - + if (autoPilot) { UpdateAutoPilot(deltaTime); } - else if (valueChanged) - { - networkUpdateTimer -= deltaTime; - if (networkUpdateTimer<=0.0f) - { - item.NewComponentEvent(this, true, false); - networkUpdateTimer = 1.0f; - valueChanged = false; - } - } item.SendSignal(targetVelocity.X.ToString(CultureInfo.InvariantCulture), "velocity_x_out"); @@ -277,7 +278,7 @@ namespace Barotrauma.Items.Components private bool ToggleMaintainPosition(GUITickBox tickBox) { - item.NewComponentEvent(this, true, true); + valueChanged = true; if (tickBox.Selected) { diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index 23d5ae734..d7af79305 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -567,17 +567,18 @@ namespace Barotrauma } catch (Exception e) { - DebugConsole.ThrowError("Directory ''" + SavePath + "'' not found and creating the directory failed.", e); return; } } - string[] filePaths; + List filePaths; + string[] subDirectories; try { - filePaths = Directory.GetFiles(SavePath); + filePaths = Directory.GetFiles(SavePath).ToList(); + subDirectories = Directory.GetDirectories(SavePath); } catch (Exception e) { @@ -585,6 +586,19 @@ namespace Barotrauma return; } + foreach (string subDirectory in subDirectories) + { + try + { + filePaths.AddRange(Directory.GetDirectories(subDirectory)); + } + catch (Exception e) + { + DebugConsole.ThrowError("Couldn't open subdirectory ''" + subDirectory + "''!", e); + return; + } + } + foreach (string path in filePaths) { //Map savedMap = new Map(mapPath); diff --git a/Subsurface/Source/Networking/NetStats.cs b/Subsurface/Source/Networking/NetStats.cs index 8fc3c3ddc..0bc89f864 100644 --- a/Subsurface/Source/Networking/NetStats.cs +++ b/Subsurface/Source/Networking/NetStats.cs @@ -78,7 +78,7 @@ namespace Barotrauma.Networking spriteBatch.DrawString(GUI.SmallFont, "Peak sent: " + MathUtils.GetBytesReadable((int)graphs[(int)NetStatType.SentBytes].LargestValue()) + "/s " + - "Avg sent: " + MathUtils.GetBytesReadable((int)graphs[(int)NetStatType.SentBytes].Average()) + " bytes/s", + "Avg sent: " + MathUtils.GetBytesReadable((int)graphs[(int)NetStatType.SentBytes].Average()) + "/s", new Vector2(rect.X + 10, rect.Y + 30), Color.Orange); spriteBatch.DrawString(GUI.SmallFont, "Peak resent: " + graphs[(int)NetStatType.ResentMessages].LargestValue() + " messages/s", diff --git a/Subsurface/Source/Networking/NetworkEvent.cs b/Subsurface/Source/Networking/NetworkEvent.cs index ac7a7438f..35f468f1b 100644 --- a/Subsurface/Source/Networking/NetworkEvent.cs +++ b/Subsurface/Source/Networking/NetworkEvent.cs @@ -132,7 +132,7 @@ namespace Barotrauma.Networking public bool FillData(NetBuffer message) { - message.WriteRangedInteger(0, Enum.GetValues(typeof(NetworkEventType)).Length, (int)eventType); + message.WriteRangedInteger(0, Enum.GetValues(typeof(NetworkEventType)).Length-1, (int)eventType); Entity e = Entity.FindEntityByID(id); if (e == null) return false; @@ -189,13 +189,13 @@ namespace Barotrauma.Networking try { - eventType = (NetworkEventType)message.ReadRangedInteger(0, Enum.GetValues(typeof(NetworkEventType)).Length); + eventType = (NetworkEventType)message.ReadRangedInteger(0, Enum.GetValues(typeof(NetworkEventType)).Length-1); id = message.ReadUInt16(); } - catch + catch (Exception exception) { #if DEBUG - DebugConsole.ThrowError("Received invalid network message"); + DebugConsole.ThrowError("Received invalid network message", exception); #endif return false; }