diff --git a/Subsurface/Source/GUI/GUIListBox.cs b/Subsurface/Source/GUI/GUIListBox.cs index 99e60be62..1b73e7385 100644 --- a/Subsurface/Source/GUI/GUIListBox.cs +++ b/Subsurface/Source/GUI/GUIListBox.cs @@ -197,6 +197,36 @@ namespace Barotrauma { scrollBar.BarScroll -= (PlayerInput.ScrollWheelSpeed / 500.0f) * BarSize; } + + for (int i = 0; i < children.Count; i++) + { + GUIComponent child = children[i]; + if (child == frame || !child.Visible) continue; + + if (enabled && child.CanBeFocused && + (MouseOn == this || (MouseOn != null && this.IsParentOf(MouseOn))) && child.Rect.Contains(PlayerInput.MousePosition)) + { + child.State = ComponentState.Hover; + if (PlayerInput.LeftButtonClicked()) + { + Debug.WriteLine("clicked"); + Select(i); + } + } + else if (selected.Contains(child)) + { + child.State = ComponentState.Selected; + + if (CheckSelected != null) + { + if (CheckSelected() != child.UserData) selected.Remove(child); + } + } + else + { + child.State = ComponentState.None; + } + } } public void Select(int childIndex, bool force = false) @@ -359,36 +389,6 @@ namespace Barotrauma } } - if (enabled && child.CanBeFocused && - (MouseOn == this || (MouseOn != null && this.IsParentOf(MouseOn))) && child.Rect.Contains(PlayerInput.MousePosition)) - { - child.State = ComponentState.Hover; - if (PlayerInput.LeftButtonClicked()) - { - Debug.WriteLine("clicked"); - Select(i); - //selected = child; - //if (OnSelected != null) - //{ - // if (!OnSelected(selected, child.UserData)) selected = null; - //} - - } - } - else if (selected.Contains(child)) - { - child.State = ComponentState.Selected; - - if (CheckSelected != null) - { - if (CheckSelected() != child.UserData) selected.Remove(child); - } - } - else - { - child.State = ComponentState.None; - } - child.Draw(spriteBatch); } diff --git a/Subsurface/Source/GUI/GUITextBox.cs b/Subsurface/Source/GUI/GUITextBox.cs index e50f41320..30bdd6c6a 100644 --- a/Subsurface/Source/GUI/GUITextBox.cs +++ b/Subsurface/Source/GUI/GUITextBox.cs @@ -217,6 +217,24 @@ namespace Barotrauma if (flashTimer > 0.0f) flashTimer -= deltaTime; if (!Enabled) return; + if (rect.Contains(PlayerInput.MousePosition) && Enabled && + (MouseOn == null || MouseOn == this || IsParentOf(MouseOn) || MouseOn.IsParentOf(this))) + { + + state = ComponentState.Hover; + if (PlayerInput.LeftButtonClicked()) + { + Select(); + if (OnSelected != null) OnSelected(this, Keys.None); + } + } + else + { + state = ComponentState.None; + } + + textBlock.State = state; + if (CaretEnabled) { caretTimer += deltaTime; @@ -248,24 +266,6 @@ namespace Barotrauma { if (!Visible) return; - if (rect.Contains(PlayerInput.MousePosition) && Enabled && - (MouseOn == null || MouseOn == this || IsParentOf(MouseOn) || MouseOn.IsParentOf(this))) - { - - state = ComponentState.Hover; - if (PlayerInput.LeftButtonClicked()) - { - Select(); - if (OnSelected != null) OnSelected(this, Keys.None); - } - } - else - { - state = ComponentState.None; - } - - textBlock.State = state; - DrawChildren(spriteBatch); if (!CaretEnabled) return; @@ -279,7 +279,6 @@ namespace Barotrauma new Vector2((int)caretPos.X + 2, caretPos.Y + Font.MeasureString("I").Y - 3), textBlock.TextColor * (textBlock.TextColor.A / 255.0f)); } - } public void ReceiveTextInput(char inputChar) diff --git a/Subsurface/Source/Map/Map/Map.cs b/Subsurface/Source/Map/Map/Map.cs index b876b3f2d..a15b19bea 100644 --- a/Subsurface/Source/Map/Map/Map.cs +++ b/Subsurface/Source/Map/Map/Map.cs @@ -254,20 +254,18 @@ namespace Barotrauma currentLocation.Discovered = true; } - public void Draw(SpriteBatch spriteBatch, Rectangle rect, float scale = 1.0f) + public void Update(float deltaTime, Rectangle rect, float scale = 1.0f) { Vector2 rectCenter = new Vector2(rect.Center.X, rect.Center.Y); Vector2 offset = -currentLocation.MapPosition; - iceTexture.DrawTiled(spriteBatch, new Vector2(rect.X, rect.Y), new Vector2(rect.Width, rect.Height), Vector2.Zero, Color.White*0.8f); - float maxDist = 20.0f; float closestDist = 0.0f; highlightedLocation = null; - for (int i = 0; i < locations.Count;i++ ) + for (int i = 0; i < locations.Count; i++) { Location location = locations[i]; - Vector2 pos = rectCenter + (location.MapPosition+offset) * scale; + Vector2 pos = rectCenter + (location.MapPosition + offset) * scale; if (!rect.Contains(pos)) continue; @@ -281,21 +279,30 @@ namespace Barotrauma foreach (LocationConnection connection in connections) { - Color crackColor = Color.White * Math.Max(connection.Difficulty/100.0f, 1.5f); - if (highlightedLocation != currentLocation && connection.Locations.Contains(highlightedLocation) && connection.Locations.Contains(currentLocation)) { - crackColor = Color.Red; - - if (PlayerInput.LeftButtonClicked()&& + if (PlayerInput.LeftButtonClicked() && selectedLocation != highlightedLocation && highlightedLocation != null) { selectedConnection = connection; - selectedLocation = highlightedLocation; - GameMain.LobbyScreen.SelectLocation(highlightedLocation, connection); - } + selectedLocation = highlightedLocation; + GameMain.LobbyScreen.SelectLocation(highlightedLocation, connection); + } } + } + } + + public void Draw(SpriteBatch spriteBatch, Rectangle rect, float scale = 1.0f) + { + Vector2 rectCenter = new Vector2(rect.Center.X, rect.Center.Y); + Vector2 offset = -currentLocation.MapPosition; + + iceTexture.DrawTiled(spriteBatch, new Vector2(rect.X, rect.Y), new Vector2(rect.Width, rect.Height), Vector2.Zero, Color.White*0.8f); + + foreach (LocationConnection connection in connections) + { + Color crackColor = Color.White * Math.Max(connection.Difficulty/100.0f, 1.5f); if (selectedLocation != currentLocation && (connection.Locations.Contains(selectedLocation) && connection.Locations.Contains(currentLocation))) diff --git a/Subsurface/Source/Screens/LobbyScreen.cs b/Subsurface/Source/Screens/LobbyScreen.cs index b37c1006f..96336860a 100644 --- a/Subsurface/Source/Screens/LobbyScreen.cs +++ b/Subsurface/Source/Screens/LobbyScreen.cs @@ -350,7 +350,12 @@ namespace Barotrauma mapZoom += PlayerInput.ScrollWheelSpeed / 1000.0f; mapZoom = MathHelper.Clamp(mapZoom, 1.0f, 4.0f); - //shiftPanel.Update((float)deltaTime); + + GameMain.GameSession.Map.Update((float)deltaTime, new Rectangle( + bottomPanel[selectedRightPanel].Rect.X + 20, + bottomPanel[selectedRightPanel].Rect.Y + 20, + bottomPanel[selectedRightPanel].Rect.Width - 310, + bottomPanel[selectedRightPanel].Rect.Height - 40), mapZoom); } public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)