From 5567dff1c9f9fd886dc8c0dd2facdd3da5fd7013 Mon Sep 17 00:00:00 2001 From: juanjp600 Date: Sat, 24 Sep 2016 18:11:09 -0300 Subject: [PATCH] Fixed input order execution + Controller direction syncing It was a dumb mistake indeed, now the player's movement is a lot less erratic. There's some very minor desync, though I might've just tested it incorrectly. --- Subsurface/Source/Characters/Character.cs | 20 +++++++++++++++++--- Subsurface/Source/Networking/GameServer.cs | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 451d74220..04cb08701 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -787,6 +787,18 @@ namespace Barotrauma } } + if (GameMain.Server != null && Character.Controlled != this) + { + if ((dequeuedInput & 16) > 0) + { + AnimController.TargetDir = Direction.Left; + } + else + { + AnimController.TargetDir = Direction.Right; + } + } + if (attackCoolDown >0.0f) { attackCoolDown -= deltaTime; @@ -1216,6 +1228,7 @@ namespace Barotrauma newInput |= IsKeyDown(InputType.Right) ? (byte)2 : (byte)0; newInput |= IsKeyDown(InputType.Up) ? (byte)4 : (byte)0; newInput |= IsKeyDown(InputType.Down) ? (byte)8 : (byte)0; + newInput |= (AnimController.TargetDir == Direction.Left) ? (byte)16 : (byte)0; memInput.Insert(0,newInput); LastNetworkUpdateID++; while (memInput.Count>60) @@ -1684,15 +1697,16 @@ namespace Barotrauma UInt32 networkUpdateID = msg.ReadUInt32(); byte inputCount = msg.ReadByte(); - + for (int i=0;i LastNetworkUpdateID) { LastNetworkUpdateID = networkUpdateID; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 6c62be45b..029350a9c 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -849,6 +849,7 @@ namespace Barotrauma.Networking DebugConsole.NewMessage(Convert.ToString(spawnPosition.X) + "," + Convert.ToString(spawnPosition.Y), Color.Lime); Character spawnedCharacter = Character.Create(Character.HumanConfigFile, spawnPosition, null, true, false); + spawnedCharacter.AnimController.Frozen = true; c.Character = spawnedCharacter; GameMain.GameSession.CrewManager.characters.Add(c.Character);