diff --git a/Subsurface/Source/Camera.cs b/Subsurface/Source/Camera.cs index 5739ab2c5..cd23b9fb0 100644 --- a/Subsurface/Source/Camera.cs +++ b/Subsurface/Source/Camera.cs @@ -183,7 +183,7 @@ namespace Barotrauma } else { - Vector2 mousePos = new Vector2(PlayerInput.GetMouseState.X, PlayerInput.GetMouseState.Y); + Vector2 mousePos = PlayerInput.MousePosition; Vector2 offset = mousePos - new Vector2(resolution.X / 2.0f, resolution.Y / 2.0f); diff --git a/Subsurface/Source/CoroutineManager.cs b/Subsurface/Source/CoroutineManager.cs index fbc50a3bd..2fb853b17 100644 --- a/Subsurface/Source/CoroutineManager.cs +++ b/Subsurface/Source/CoroutineManager.cs @@ -70,18 +70,18 @@ namespace Barotrauma } } - //try - //{ + try + { Coroutines[i].MoveNext(); -// } + } -// catch (Exception e) -// { -//#if DEBUG -// DebugConsole.ThrowError("Coroutine " + Coroutines[i] + " threw an exception: " + e.Message); -//#endif -// Coroutines.RemoveAt(i); -// } + catch (Exception e) + { +#if DEBUG + DebugConsole.ThrowError("Coroutine " + Coroutines[i] + " threw an exception: " + e.Message); +#endif + Coroutines.RemoveAt(i); + } } } diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index 3c2372f97..0f305bae9 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -99,7 +99,7 @@ namespace Barotrauma //textBox.Update(deltaTime); - if (PlayerInput.GetKeyboardState.IsKeyDown(Keys.Enter) && textBox.Text != "") + if (PlayerInput.KeyDown(Keys.Enter) && textBox.Text != "") { NewMessage(textBox.Text, Color.White); ExecuteCommand(textBox.Text, game); diff --git a/Subsurface/Source/GUI/GUI.cs b/Subsurface/Source/GUI/GUI.cs index 8625a1bb9..d63eda23f 100644 --- a/Subsurface/Source/GUI/GUI.cs +++ b/Subsurface/Source/GUI/GUI.cs @@ -300,7 +300,7 @@ namespace Barotrauma if (rect.Contains(PlayerInput.MousePosition)) { - clicked = (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed); + clicked = PlayerInput.LeftButtonDown(); color = clicked ? new Color(100, 100, 100) : new Color(250, 250, 250); diff --git a/Subsurface/Source/GUI/GUIButton.cs b/Subsurface/Source/GUI/GUIButton.cs index e75436c11..468aa6f91 100644 --- a/Subsurface/Source/GUI/GUIButton.cs +++ b/Subsurface/Source/GUI/GUIButton.cs @@ -152,7 +152,7 @@ namespace Barotrauma if (rect.Contains(PlayerInput.MousePosition) && CanBeSelected && Enabled && (MouseOn == null || MouseOn == this || IsParentOf(MouseOn))) { state = ComponentState.Hover; - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) + if (PlayerInput.LeftButtonDown()) { if (OnPressed != null) { diff --git a/Subsurface/Source/GUI/GUITextBox.cs b/Subsurface/Source/GUI/GUITextBox.cs index ade97466e..897f680e4 100644 --- a/Subsurface/Source/GUI/GUITextBox.cs +++ b/Subsurface/Source/GUI/GUITextBox.cs @@ -152,7 +152,7 @@ namespace Barotrauma if (style != null) style.Apply(textBlock, this); textBlock.Padding = new Vector4(3.0f, 0.0f, 3.0f, 0.0f); - previousMouse = PlayerInput.GetMouseState; + //previousMouse = PlayerInput.GetMouseState; CaretEnabled = true; //SetTextPos(); @@ -171,7 +171,7 @@ namespace Barotrauma if (keyboardDispatcher.Subscriber == this) keyboardDispatcher.Subscriber = null; } - MouseState previousMouse; + //MouseState previousMouse; public override void Update(float deltaTime) { if (!Visible) return; diff --git a/Subsurface/Source/GUI/GUITickBox.cs b/Subsurface/Source/GUI/GUITickBox.cs index 3c4953291..f6097edfa 100644 --- a/Subsurface/Source/GUI/GUITickBox.cs +++ b/Subsurface/Source/GUI/GUITickBox.cs @@ -61,7 +61,7 @@ namespace Barotrauma box.State = ComponentState.Hover; - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) + if (PlayerInput.LeftButtonDown()) { box.State = ComponentState.Selected; } diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs index 28ed5c998..e248da4e5 100644 --- a/Subsurface/Source/Items/CharacterInventory.cs +++ b/Subsurface/Source/Items/CharacterInventory.cs @@ -326,10 +326,10 @@ namespace Barotrauma if (draggingItem != null && !draggingItemSlot.Contains(PlayerInput.MousePosition)) { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) + if (PlayerInput.LeftButtonDown()) { - slotRect.X = PlayerInput.GetMouseState.X - slotRect.Width / 2; - slotRect.Y = PlayerInput.GetMouseState.Y - slotRect.Height / 2; + slotRect.X = (int)PlayerInput.MousePosition.X - slotRect.Width / 2; + slotRect.Y = (int)PlayerInput.MousePosition.Y - slotRect.Height / 2; DrawSlot(spriteBatch, slotRect, draggingItem, false, false); } diff --git a/Subsurface/Source/Items/Components/Holdable/RepairTool.cs b/Subsurface/Source/Items/Components/Holdable/RepairTool.cs index 09873d8b0..f40c34d5a 100644 --- a/Subsurface/Source/Items/Components/Holdable/RepairTool.cs +++ b/Subsurface/Source/Items/Components/Holdable/RepairTool.cs @@ -136,7 +136,7 @@ namespace Barotrauma.Items.Components ignoredBodies.Add(limb.body.FarseerBody); } - Vector2 rayStart = item.WorldPosition + TransformedBarrelPos; + Vector2 rayStart = item.WorldPosition; Vector2 rayEnd = targetPosition; Body targetBody = Submarine.PickBody( diff --git a/Subsurface/Source/Items/Components/Signal/Wire.cs b/Subsurface/Source/Items/Components/Signal/Wire.cs index ec748568e..289b008b3 100644 --- a/Subsurface/Source/Items/Components/Signal/Wire.cs +++ b/Subsurface/Source/Items/Components/Signal/Wire.cs @@ -351,7 +351,7 @@ namespace Barotrauma.Items.Components if (selectedNodeIndex == null && draggingWire == null)// && !MapEntity.SelectedAny) { - if (PlayerInput.LeftButtonDown() && PlayerInput.GetOldMouseState.LeftButton == Microsoft.Xna.Framework.Input.ButtonState.Released) + if (PlayerInput.LeftButtonClicked()) { MapEntity.DisableSelect = true; MapEntity.SelectEntity(item); diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs index 94021653e..2393997e4 100644 --- a/Subsurface/Source/Items/Inventory.cs +++ b/Subsurface/Source/Items/Inventory.cs @@ -205,10 +205,10 @@ namespace Barotrauma if (draggingItem != null && !draggingItemSlot.Contains(PlayerInput.MousePosition) && draggingItem.Container == this.Owner) { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) + if (PlayerInput.LeftButtonDown()) { - slotRect.X = PlayerInput.GetMouseState.X - slotRect.Width / 2; - slotRect.Y = PlayerInput.GetMouseState.Y - slotRect.Height / 2; + slotRect.X = (int)PlayerInput.MousePosition.X - slotRect.Width / 2; + slotRect.Y = (int)PlayerInput.MousePosition.Y - slotRect.Height / 2; //GUI.DrawRectangle(spriteBatch, rect, Color.White, true); //draggingItem.sprite.Draw(spriteBatch, new Vector2(rect.X + rect.Width / 2, rect.Y + rect.Height / 2), Color.White); @@ -261,12 +261,12 @@ namespace Barotrauma { if (draggingItem == null) { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) + if (PlayerInput.LeftButtonDown()) { draggingItem = item; } } - else if (PlayerInput.GetMouseState.LeftButton == ButtonState.Released) + else if (PlayerInput.LeftButtonReleased()) { if (PlayerInput.DoubleClicked()) { diff --git a/Subsurface/Source/Items/ItemPrefab.cs b/Subsurface/Source/Items/ItemPrefab.cs index 35cb39684..32ec8048f 100644 --- a/Subsurface/Source/Items/ItemPrefab.cs +++ b/Subsurface/Source/Items/ItemPrefab.cs @@ -114,8 +114,7 @@ namespace Barotrauma if (placePosition == Vector2.Zero) { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) - placePosition = position; + if (PlayerInput.LeftButtonDown()) placePosition = position; } else { @@ -124,7 +123,7 @@ namespace Barotrauma if (resizeVertical) placeSize.Y = Math.Max(placePosition.Y - position.Y, size.Y); - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Released) + if (PlayerInput.LeftButtonReleased()) { var item = new Item(new Rectangle((int)placePosition.X, (int)placePosition.Y, (int)placeSize.X, (int)placeSize.Y), this, Submarine.Loaded); placePosition = Vector2.Zero; diff --git a/Subsurface/Source/Map/MapEntity.cs b/Subsurface/Source/Map/MapEntity.cs index d3a542d81..c29f15baf 100644 --- a/Subsurface/Source/Map/MapEntity.cs +++ b/Subsurface/Source/Map/MapEntity.cs @@ -253,7 +253,7 @@ namespace Barotrauma return; } - if (PlayerInput.GetKeyboardState.IsKeyDown(Keys.Delete)) + if (PlayerInput.KeyDown(Keys.Delete)) { foreach (MapEntity e in selectedList) e.Remove(); selectedList.Clear(); @@ -283,7 +283,7 @@ namespace Barotrauma //started moving selected entities if (startMovingPos != Vector2.Zero) { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Released) + if (PlayerInput.LeftButtonReleased()) { //mouse released -> move the entities to the new position of the mouse @@ -320,10 +320,10 @@ namespace Barotrauma e.isHighlighted = true; } - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Released) + if (PlayerInput.LeftButtonReleased()) { - if (PlayerInput.GetKeyboardState.IsKeyDown(Keys.LeftControl) || - PlayerInput.GetKeyboardState.IsKeyDown(Keys.RightControl)) + if (PlayerInput.KeyDown(Keys.LeftControl) || + PlayerInput.KeyDown(Keys.RightControl)) { foreach (MapEntity e in newSelection) { @@ -353,8 +353,8 @@ namespace Barotrauma else { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed && - PlayerInput.GetKeyboardState.IsKeyUp(Keys.Space)) + if (PlayerInput.LeftButtonDown() && + PlayerInput.KeyUp(Keys.Space)) { //if clicking a selected entity, start moving it foreach (MapEntity e in selectedList) @@ -377,7 +377,7 @@ namespace Barotrauma { if (GUIComponent.MouseOn != null) return; - Vector2 position = new Vector2(PlayerInput.GetMouseState.X, PlayerInput.GetMouseState.Y); + Vector2 position = PlayerInput.MousePosition; position = cam.ScreenToWorld(position); if (startMovingPos != Vector2.Zero) diff --git a/Subsurface/Source/Map/MapEntityPrefab.cs b/Subsurface/Source/Map/MapEntityPrefab.cs index c026f2eda..150942020 100644 --- a/Subsurface/Source/Map/MapEntityPrefab.cs +++ b/Subsurface/Source/Map/MapEntityPrefab.cs @@ -134,7 +134,7 @@ namespace Barotrauma GUI.DrawLine(spriteBatch, new Vector2(position.X, -(position.Y - GameMain.GraphicsHeight)), new Vector2(position.X, -(position.Y + GameMain.GraphicsHeight)), Color.White); - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) placePosition = position; + if (PlayerInput.LeftButtonDown()) placePosition = position; } else { @@ -152,7 +152,7 @@ namespace Barotrauma newRect.Location -= Submarine.Loaded.Position.ToPoint(); } - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Released) + if (PlayerInput.LeftButtonReleased()) { object[] lobject = new object[] { this, newRect }; constructor.Invoke(lobject); @@ -164,7 +164,7 @@ namespace Barotrauma GUI.DrawRectangle(spriteBatch, newRect, Color.DarkBlue); } - if (PlayerInput.GetMouseState.RightButton == ButtonState.Pressed) + if (PlayerInput.RightButtonDown()) { placePosition = Vector2.Zero; selected = null; diff --git a/Subsurface/Source/Map/Structure.cs b/Subsurface/Source/Map/Structure.cs index ece4518c4..66b18e72e 100644 --- a/Subsurface/Source/Map/Structure.cs +++ b/Subsurface/Source/Map/Structure.cs @@ -283,11 +283,11 @@ namespace Barotrauma if (StairDirection == Direction.Left) { - return MathUtils.LineToPointDistance(new Vector2(rect.X, rect.Y), new Vector2(rect.Right, rect.Y - rect.Height), position)< 40.0f; + return MathUtils.LineToPointDistance(new Vector2(WorldRect.X, WorldRect.Y), new Vector2(WorldRect.Right, WorldRect.Y - WorldRect.Height), position) < 40.0f; } else - { - return MathUtils.LineToPointDistance(new Vector2(rect.X,rect.Y-rect.Height), new Vector2(rect.Right, rect.Y), position) <40.0f; + { + return MathUtils.LineToPointDistance(new Vector2(WorldRect.X, WorldRect.Y - rect.Height), new Vector2(WorldRect.Right, WorldRect.Y), position) < 40.0f; } } } diff --git a/Subsurface/Source/Map/StructurePrefab.cs b/Subsurface/Source/Map/StructurePrefab.cs index 2b2df7539..f19cc52ed 100644 --- a/Subsurface/Source/Map/StructurePrefab.cs +++ b/Subsurface/Source/Map/StructurePrefab.cs @@ -124,7 +124,7 @@ namespace Barotrauma if (placePosition == Vector2.Zero) { - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Pressed) + if (PlayerInput.LeftButtonDown()) placePosition = Submarine.MouseToWorldGrid(cam); newRect.X = (int)position.X; @@ -140,7 +140,7 @@ namespace Barotrauma newRect = Submarine.AbsRect(placePosition, placeSize); - if (PlayerInput.GetMouseState.LeftButton == ButtonState.Released) + if (PlayerInput.LeftButtonReleased()) { if (Submarine.Loaded != null) { @@ -161,7 +161,7 @@ namespace Barotrauma GUI.DrawRectangle(spriteBatch, new Rectangle(newRect.X - GameMain.GraphicsWidth, -newRect.Y, newRect.Width + GameMain.GraphicsWidth*2, newRect.Height), Color.White); GUI.DrawRectangle(spriteBatch, new Rectangle(newRect.X, -newRect.Y - GameMain.GraphicsHeight, newRect.Width, newRect.Height + GameMain.GraphicsHeight*2), Color.White); - if (PlayerInput.GetMouseState.RightButton == ButtonState.Pressed) selected = null; + if (PlayerInput.RightButtonDown()) selected = null; } } } diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index f32694aa3..b02b4c92d 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -258,7 +258,7 @@ namespace Barotrauma public static Vector2 MouseToWorldGrid(Camera cam) { - Vector2 position = new Vector2(PlayerInput.GetMouseState.X, PlayerInput.GetMouseState.Y); + Vector2 position = PlayerInput.MousePosition; position = cam.ScreenToWorld(position); return VectorToWorldGrid(position); diff --git a/Subsurface/Source/PlayerInput.cs b/Subsurface/Source/PlayerInput.cs index 12dedae1e..a93f6e742 100644 --- a/Subsurface/Source/PlayerInput.cs +++ b/Subsurface/Source/PlayerInput.cs @@ -214,14 +214,14 @@ namespace Barotrauma get { return new Vector2(mouseState.Position.X, mouseState.Position.Y); } } - public static MouseState GetMouseState - { - get { return mouseState; } - } - public static MouseState GetOldMouseState - { - get { return oldMouseState; } - } + //public static MouseState GetMouseState + //{ + // get { return mouseState; } + //} + //public static MouseState GetOldMouseState + //{ + // get { return oldMouseState; } + //} public static bool MouseInsideWindow { @@ -231,74 +231,91 @@ namespace Barotrauma public static Vector2 MouseSpeed { get - { - return MousePosition - new Vector2(oldMouseState.X, oldMouseState.Y); + { + return GameMain.Instance.IsActive ? MousePosition - new Vector2(oldMouseState.X, oldMouseState.Y) : Vector2.Zero; } } - public static KeyboardState GetKeyboardState - { - get { return keyboardState; } - } + public static KeyboardState GetKeyboardState + { + get { return keyboardState; } + } - public static KeyboardState GetOldKeyboardState - { - get { return oldKeyboardState; } - } + public static KeyboardState GetOldKeyboardState + { + get { return oldKeyboardState; } + } public static int ScrollWheelSpeed { - get { return mouseState.ScrollWheelValue - oldMouseState.ScrollWheelValue; } + get { return GameMain.Instance.IsActive ? mouseState.ScrollWheelValue - oldMouseState.ScrollWheelValue : 0; } } public static bool LeftButtonDown() { - return mouseState.LeftButton == ButtonState.Pressed; + return GameMain.Instance.IsActive && mouseState.LeftButton == ButtonState.Pressed; + } + + public static bool LeftButtonReleased() + { + return GameMain.Instance.IsActive && mouseState.LeftButton == ButtonState.Released; } public static bool LeftButtonClicked() { - return (oldMouseState.LeftButton == ButtonState.Pressed + return (GameMain.Instance.IsActive && + oldMouseState.LeftButton == ButtonState.Pressed && mouseState.LeftButton == ButtonState.Released); } public static bool RightButtonDown() { - return mouseState.RightButton == ButtonState.Pressed; + return GameMain.Instance.IsActive && mouseState.RightButton == ButtonState.Pressed; } public static bool RightButtonClicked() { - return (oldMouseState.RightButton == ButtonState.Pressed + return (GameMain.Instance.IsActive && + oldMouseState.RightButton == ButtonState.Pressed && mouseState.RightButton == ButtonState.Released); } public static bool DoubleClicked() { - return doubleClicked; + return GameMain.Instance.IsActive && doubleClicked; } public static bool KeyHit(InputType inputType) { - return GameMain.Config.KeyBind(inputType).IsHit(); + return GameMain.Instance.IsActive && GameMain.Config.KeyBind(inputType).IsHit(); } public static bool KeyDown(InputType inputType) { - return GameMain.Config.KeyBind(inputType).IsDown(); + return GameMain.Instance.IsActive && GameMain.Config.KeyBind(inputType).IsDown(); + } + + public static bool KeyUp(InputType inputType) + { + return GameMain.Instance.IsActive && !GameMain.Config.KeyBind(inputType).IsDown(); } public static bool KeyHit(Keys button) { - return (oldKeyboardState.IsKeyDown(button) && keyboardState.IsKeyUp(button)); + return (GameMain.Instance.IsActive && oldKeyboardState.IsKeyDown(button) && keyboardState.IsKeyUp(button)); } public static bool KeyDown(Keys button) { - return (keyboardState.IsKeyDown(button)); + return (GameMain.Instance.IsActive && keyboardState.IsKeyDown(button)); } + public static bool KeyUp(Keys button) + { + return GameMain.Instance.IsActive && keyboardState.IsKeyUp(button); + } + public static void Update(double deltaTime) { timeSinceClick += deltaTime; diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs index 7168b4315..e64f19178 100644 --- a/Subsurface/Source/Screens/GameScreen.cs +++ b/Subsurface/Source/Screens/GameScreen.cs @@ -202,7 +202,7 @@ namespace Barotrauma GUI.Draw((float)deltaTime, spriteBatch, cam); - if (PlayerInput.GetMouseState.LeftButton != ButtonState.Pressed) Inventory.draggingItem = null; + if (!PlayerInput.LeftButtonDown()) Inventory.draggingItem = null; spriteBatch.End(); } diff --git a/Subsurface/Source/Screens/LobbyScreen.cs b/Subsurface/Source/Screens/LobbyScreen.cs index e67d8a119..0160487b4 100644 --- a/Subsurface/Source/Screens/LobbyScreen.cs +++ b/Subsurface/Source/Screens/LobbyScreen.cs @@ -525,6 +525,8 @@ namespace Barotrauma private bool StartShift(GUIButton button, object selection) { + if (GameMain.GameSession.Map.SelectedConnection == null) return false; + GameMain.ShowLoading(ShiftLoading()); //GameMain.GameSession.StartShift(selectedLevel, false); diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 20e934c35..ae415765e 100644 Binary files a/Subsurface_Solution.v12.suo and b/Subsurface_Solution.v12.suo differ