From c8a7815ef84b05f6eb85be2a84c66567735dfb70 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Thu, 4 Apr 2019 11:06:59 +0300 Subject: [PATCH] (6ae5f1e59) Sync the new input with the server. --- .../Source/Characters/CharacterNetworking.cs | 7 ++++ .../Items/Components/Machines/Fabricator.cs | 34 +++++++++---------- .../Source/Characters/CharacterNetworking.cs | 6 ++++ .../Source/Characters/Character.cs | 8 +++++ .../Source/Characters/CharacterNetworking.cs | 6 +++- 5 files changed, 42 insertions(+), 19 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaClient/Source/Characters/CharacterNetworking.cs index 9569a07c5..8f9c23d0a 100644 --- a/Barotrauma/BarotraumaClient/Source/Characters/CharacterNetworking.cs +++ b/Barotrauma/BarotraumaClient/Source/Characters/CharacterNetworking.cs @@ -48,10 +48,12 @@ namespace Barotrauma if (IsKeyDown(InputType.Run)) newInput |= InputNetFlags.Run; if (IsKeyDown(InputType.Crouch)) newInput |= InputNetFlags.Crouch; if (IsKeyHit(InputType.Select)) newInput |= InputNetFlags.Select; //TODO: clean up the way this input is registered + if (IsKeyHit(InputType.Deselect)) newInput |= InputNetFlags.Deselect; if (IsKeyHit(InputType.Health)) newInput |= InputNetFlags.Health; if (IsKeyHit(InputType.Grab)) newInput |= InputNetFlags.Grab; if (IsKeyDown(InputType.Use)) newInput |= InputNetFlags.Use; if (IsKeyDown(InputType.Aim)) newInput |= InputNetFlags.Aim; + if (IsKeyDown(InputType.Shoot)) newInput |= InputNetFlags.Shoot; if (IsKeyDown(InputType.Attack)) newInput |= InputNetFlags.Attack; if (IsKeyDown(InputType.Ragdoll)) newInput |= InputNetFlags.Ragdoll; @@ -125,6 +127,7 @@ namespace Barotrauma msg.WriteRangedInteger(0, (int)InputNetFlags.MaxVal, (int)memInput[i].states); msg.Write(memInput[i].intAim); if (memInput[i].states.HasFlag(InputNetFlags.Select) || + memInput[i].states.HasFlag(InputNetFlags.Deselect) || memInput[i].states.HasFlag(InputNetFlags.Use) || memInput[i].states.HasFlag(InputNetFlags.Health) || memInput[i].states.HasFlag(InputNetFlags.Grab)) @@ -159,6 +162,10 @@ namespace Barotrauma keys[(int)InputType.Aim].Held = aimInput; keys[(int)InputType.Aim].SetState(false, aimInput); + bool shootInput = msg.ReadBoolean(); + keys[(int)InputType.Shoot].Held = shootInput; + keys[(int)InputType.Shoot].SetState(false, shootInput); + bool useInput = msg.ReadBoolean(); keys[(int)InputType.Use].Held = useInput; keys[(int)InputType.Use].SetState(false, useInput); diff --git a/Barotrauma/BarotraumaClient/Source/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaClient/Source/Items/Components/Machines/Fabricator.cs index 430242087..c19c9fa5e 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Components/Machines/Fabricator.cs @@ -318,6 +318,22 @@ namespace Barotrauma.Items.Components return true; } + itemIcon.Draw( + spriteBatch, + slotRect.Center.ToVector2(), + color: requiredItem.ItemPrefab.InventoryIconColor * 0.3f, + scale: Math.Min(slotRect.Width / itemIcon.size.X, slotRect.Height / itemIcon.size.Y)); + + if (slotRect.Contains(PlayerInput.MousePosition)) + { + string toolTipText = requiredItem.ItemPrefab.Name; + if (!string.IsNullOrEmpty(requiredItem.ItemPrefab.Description)) + { + toolTipText += '\n' + requiredItem.ItemPrefab.Description; + } + tooltip = new Pair(slotRect, toolTipText); + } + slotIndex++; } } @@ -343,24 +359,6 @@ namespace Barotrauma.Items.Components } } - private bool SelectItem(Character user, FabricationRecipe selectedItem) - { - selectedItemFrame.ClearChildren(); - - var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), selectedItemFrame.RectTransform, Anchor.Center)) { RelativeSpacing = 0.03f, Stretch = true }; - - /*var itemIcon = selectedItem.TargetItem.InventoryIcon ?? selectedItem.TargetItem.sprite; - if (itemIcon != null) - { - GUIImage img = new GUIImage(new RectTransform(new Point(40, 40), paddedFrame.RectTransform), - itemIcon, scaleToFit: true) - { - Color = selectedItem.TargetItem.InventoryIconColor - }; - }*/ - var nameBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedFrame.RectTransform), - selectedItem.TargetItem.Name, textAlignment: Alignment.CenterLeft); - if (GameMain.Client != null) { inadequateSkills = selectedItem.RequiredSkills.FindAll(skill => user.GetSkillLevel(skill.Identifier) < skill.Level); diff --git a/Barotrauma/BarotraumaServer/Source/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaServer/Source/Characters/CharacterNetworking.cs index 9845cb86c..8854987f8 100644 --- a/Barotrauma/BarotraumaServer/Source/Characters/CharacterNetworking.cs +++ b/Barotrauma/BarotraumaServer/Source/Characters/CharacterNetworking.cs @@ -87,6 +87,7 @@ namespace Barotrauma //reset focus when attempting to use/select something if (memInput[memInput.Count - 1].states.HasFlag(InputNetFlags.Use) || memInput[memInput.Count - 1].states.HasFlag(InputNetFlags.Select) || + memInput[memInput.Count - 1].states.HasFlag(InputNetFlags.Deselect) || memInput[memInput.Count - 1].states.HasFlag(InputNetFlags.Health) || memInput[memInput.Count - 1].states.HasFlag(InputNetFlags.Grab)) { @@ -180,6 +181,7 @@ namespace Barotrauma newAim = msg.ReadUInt16(); if (newInput.HasFlag(InputNetFlags.Select) || + newInput.HasFlag(InputNetFlags.Deselect) || newInput.HasFlag(InputNetFlags.Use) || newInput.HasFlag(InputNetFlags.Health) || newInput.HasFlag(InputNetFlags.Grab)) @@ -325,23 +327,27 @@ namespace Barotrauma bool aiming = false; bool use = false; bool attack = false; + bool shoot = false; if (IsRemotePlayer) { aiming = dequeuedInput.HasFlag(InputNetFlags.Aim); use = dequeuedInput.HasFlag(InputNetFlags.Use); attack = dequeuedInput.HasFlag(InputNetFlags.Attack); + shoot = dequeuedInput.HasFlag(InputNetFlags.Shoot); } else if (keys != null) { aiming = keys[(int)InputType.Aim].GetHeldQueue; use = keys[(int)InputType.Use].GetHeldQueue; attack = keys[(int)InputType.Attack].GetHeldQueue; + shoot = keys[(int)InputType.Shoot].GetHeldQueue; networkUpdateSent = true; } tempBuffer.Write(aiming); + tempBuffer.Write(shoot); tempBuffer.Write(use); if (AnimController is HumanoidAnimController) { diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs index 16b6165c8..d2d481a1c 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs @@ -892,12 +892,16 @@ namespace Barotrauma return !(dequeuedInput.HasFlag(InputNetFlags.Crouch)) && (prevDequeuedInput.HasFlag(InputNetFlags.Crouch)); case InputType.Select: return dequeuedInput.HasFlag(InputNetFlags.Select); //TODO: clean up the way this input is registered + case InputType.Deselect: + return dequeuedInput.HasFlag(InputNetFlags.Deselect); case InputType.Health: return dequeuedInput.HasFlag(InputNetFlags.Health); case InputType.Grab: return dequeuedInput.HasFlag(InputNetFlags.Grab); case InputType.Use: return !(dequeuedInput.HasFlag(InputNetFlags.Use)) && (prevDequeuedInput.HasFlag(InputNetFlags.Use)); + case InputType.Shoot: + return !(dequeuedInput.HasFlag(InputNetFlags.Shoot)) && (prevDequeuedInput.HasFlag(InputNetFlags.Shoot)); case InputType.Ragdoll: return !(dequeuedInput.HasFlag(InputNetFlags.Ragdoll)) && (prevDequeuedInput.HasFlag(InputNetFlags.Ragdoll)); default: @@ -930,10 +934,14 @@ namespace Barotrauma return dequeuedInput.HasFlag(InputNetFlags.Crouch); case InputType.Select: return false; //TODO: clean up the way this input is registered + case InputType.Deselect: + return false; case InputType.Aim: return dequeuedInput.HasFlag(InputNetFlags.Aim); case InputType.Use: return dequeuedInput.HasFlag(InputNetFlags.Use); + case InputType.Shoot: + return dequeuedInput.HasFlag(InputNetFlags.Shoot); case InputType.Attack: return dequeuedInput.HasFlag(InputNetFlags.Attack); case InputType.Ragdoll: diff --git a/Barotrauma/BarotraumaShared/Source/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaShared/Source/Characters/CharacterNetworking.cs index ac52f3b2b..4f0068328 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/CharacterNetworking.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/CharacterNetworking.cs @@ -55,8 +55,12 @@ namespace Barotrauma Ragdoll = 0x800, Health = 0x1000, Grab = 0x2000, + Deselect = 0x4000, // 16384 + Shoot = 0x8000, // 32768 - MaxVal = 0x3FFF + MaxVal = 0xFFFF // 65535 + //MaxVal = 0x7FFF // 32767 + //MaxVal = 0x3FFF // 16383 } private InputNetFlags dequeuedInput = 0; private InputNetFlags prevDequeuedInput = 0;