From 8a7af2affdfedab2e7d2986776d05d0539402b17 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Fri, 15 Dec 2017 00:25:46 +0200 Subject: [PATCH] Players can't use other items when a railgun controller is selected. Prevents accidentally firing weapons or hitting people with something while using the railguns. Closes #94 --- .../Content/Items/Weapons/railgun.xml | 3 ++- .../BarotraumaShared/Source/Characters/Character.cs | 13 ++++++++----- .../BarotraumaShared/Source/Items/ItemPrefab.cs | 7 +++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Content/Items/Weapons/railgun.xml b/Barotrauma/BarotraumaShared/Content/Items/Weapons/railgun.xml index 969b6213c..50662afde 100644 --- a/Barotrauma/BarotraumaShared/Content/Items/Weapons/railgun.xml +++ b/Barotrauma/BarotraumaShared/Content/Items/Weapons/railgun.xml @@ -36,11 +36,12 @@ category="Machine" type="Controller" linkable="true" + disableitemusagewhenselected="true" > - + diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs index a506e62d1..63a52738e 100644 --- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs @@ -926,13 +926,16 @@ namespace Barotrauma } } - for (int i = 0; i < selectedItems.Length; i++ ) + if (SelectedConstruction == null || !SelectedConstruction.Prefab.DisableItemUsageWhenSelected) { - if (selectedItems[i] == null) continue; - if (i == 1 && selectedItems[0] == selectedItems[1]) continue; + for (int i = 0; i < selectedItems.Length; i++ ) + { + if (selectedItems[i] == null) continue; + if (i == 1 && selectedItems[0] == selectedItems[1]) continue; - if (IsKeyDown(InputType.Use)) selectedItems[i].Use(deltaTime, this); - if (IsKeyDown(InputType.Aim) && selectedItems[i] != null) selectedItems[i].SecondaryUse(deltaTime, this); + if (IsKeyDown(InputType.Use)) selectedItems[i].Use(deltaTime, this); + if (IsKeyDown(InputType.Aim) && selectedItems[i] != null) selectedItems[i].SecondaryUse(deltaTime, this); + } } if (selectedConstruction != null) diff --git a/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs b/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs index a1ec49bbd..dba9dfd98 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/ItemPrefab.cs @@ -134,6 +134,13 @@ namespace Barotrauma private set; } + [Serialize(false, false)] + public bool DisableItemUsageWhenSelected + { + get; + private set; + } + public bool CanSpriteFlipX { get { return canSpriteFlipX; }