From ba4ee843f3c8168f24debd32908a66c546f15e6e Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 4 Jan 2017 21:37:19 +0200 Subject: [PATCH] Syncing character/construction selection --- Subsurface/Source/Characters/Character.cs | 32 ++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 5a5420a2b..171691ede 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -2064,6 +2064,16 @@ namespace Barotrauma msg.Write(aiming); msg.Write(use); + if (selectedCharacter != null || selectedConstruction != null) + { + msg.Write(true); + msg.Write(selectedCharacter != null ? selectedCharacter.ID : selectedConstruction.ID); + } + else + { + msg.Write(false); + } + if (aiming) { //TODO: write this with less accuracy? @@ -2074,7 +2084,6 @@ namespace Barotrauma msg.Write(AnimController.TargetDir == Direction.Right); } - msg.Write(SimPosition.X); msg.Write(SimPosition.Y); @@ -2106,6 +2115,27 @@ namespace Barotrauma keys[(int)InputType.Use].Held = useInput; keys[(int)InputType.Use].SetState(false, useInput); + bool entitySelected = msg.ReadBoolean(); + if (entitySelected) + { + ushort entityID = msg.ReadUInt16(); + Entity selectedEntity = Entity.FindEntityByID(entityID); + if (selectedEntity is Character) + { + SelectCharacter((Character)selectedEntity); + } + else if (selectedEntity is Item) + { + selectedConstruction = (Item)selectedEntity; + if (selectedConstruction != null) selectedConstruction.Pick(this, true, true); + } + } + else + { + if (selectedCharacter != null) DeselectCharacter(); + selectedConstruction = null; + } + if (aimInput) { cursorPosition = new Vector2(