From 3de4645357ac8a738eb131024af685137a4ebe58 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 8 Oct 2016 19:46:56 +0300 Subject: [PATCH] Separated waypoint edit/update methods, fixed items/structures being immediately placed when selecting them in the editor, fixed GUIListBox children ovrlapping with the scrollbar --- Subsurface/Source/GUI/GUIListBox.cs | 40 ++++++++-------------- Subsurface/Source/Map/WayPoint.cs | 31 ++++++++++------- Subsurface/Source/Screens/EditMapScreen.cs | 25 +++++++------- 3 files changed, 45 insertions(+), 51 deletions(-) diff --git a/Subsurface/Source/GUI/GUIListBox.cs b/Subsurface/Source/GUI/GUIListBox.cs index 987848f4f..187c55890 100644 --- a/Subsurface/Source/GUI/GUIListBox.cs +++ b/Subsurface/Source/GUI/GUIListBox.cs @@ -103,15 +103,6 @@ namespace Barotrauma get { return scrollBarEnabled; } set { - if (value) - { - if (!scrollBarEnabled && scrollBarHidden) ShowScrollBar(); - } - else - { - if (scrollBarEnabled && !scrollBarHidden) HideScrollBar(); - } - scrollBarEnabled = value; } } @@ -337,14 +328,24 @@ namespace Barotrauma Math.Max(Math.Min((float)rect.Width / (float)totalSize, 1.0f), 5.0f / rect.Width) : Math.Max(Math.Min((float)rect.Height / (float)totalSize, 1.0f), 5.0f / rect.Height); - if (scrollBar.BarSize < 1.0f && scrollBarHidden) ShowScrollBar(); - if (scrollBar.BarSize >= 1.0f && !scrollBarHidden) HideScrollBar(); + scrollBarHidden = scrollBar.BarSize >= 1.0f; } public override void AddChild(GUIComponent child) { + //temporarily reduce the size of the rect to prevent the child from expanding over the scrollbar + if (scrollBar.IsHorizontal) + rect.Height -= scrollBar.Rect.Height; + else + rect.Width -= scrollBar.Rect.Width; + base.AddChild(child); + if (scrollBar.IsHorizontal) + rect.Height += scrollBar.Rect.Height; + else + rect.Width += scrollBar.Rect.Width; + //float oldScroll = scrollBar.BarScroll; //float oldSize = scrollBar.BarSize; UpdateScrollBarSize(); @@ -373,25 +374,12 @@ namespace Barotrauma UpdateScrollBarSize(); } - - private void ShowScrollBar() - { - if (scrollBarHidden && !scrollBar.IsHorizontal) Rect = new Rectangle(rect.X, rect.Y, rect.Width - scrollBar.Rect.Width, rect.Height); - scrollBarHidden = false; - - } - - private void HideScrollBar() - { - if (!scrollBarHidden && !scrollBar.IsHorizontal) Rect = new Rectangle(rect.X, rect.Y, rect.Width + scrollBar.Rect.Width, rect.Height); - scrollBarHidden = true; - } - + public override void Draw(SpriteBatch spriteBatch) { if (!Visible) return; - base.Draw(spriteBatch); + //base.Draw(spriteBatch); frame.Draw(spriteBatch); //GUI.DrawRectangle(spriteBatch, rect, color*alpha, true); diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs index 05c14b5a2..35dae5e41 100644 --- a/Subsurface/Source/Map/WayPoint.cs +++ b/Subsurface/Source/Map/WayPoint.cs @@ -171,32 +171,37 @@ namespace Barotrauma } } - public override void DrawEditing(SpriteBatch spriteBatch, Camera cam) + public override void UpdateEditing(Camera cam) { if (editingHUD == null || editingHUD.UserData != this) { editingHUD = CreateEditingHUD(); } - + editingHUD.Update((float)Timing.Step); - editingHUD.Draw(spriteBatch); - if (!PlayerInput.LeftButtonClicked()) return; + if (PlayerInput.LeftButtonClicked()) + { + Vector2 position = cam.ScreenToWorld(PlayerInput.MousePosition); - Vector2 position = cam.ScreenToWorld(PlayerInput.MousePosition); + foreach (MapEntity e in mapEntityList) + { + if (e.GetType() != typeof(WayPoint)) continue; + if (e == this) continue; - foreach (MapEntity e in mapEntityList) - { - if (e.GetType()!=typeof(WayPoint)) continue; - if (e == this) continue; + if (!Submarine.RectContains(e.Rect, position)) continue; - if (!Submarine.RectContains(e.Rect, position)) continue; - - linkedTo.Add(e); - e.linkedTo.Add(this); + linkedTo.Add(e); + e.linkedTo.Add(this); + } } } + public override void DrawEditing(SpriteBatch spriteBatch, Camera cam) + { + if (editingHUD != null) editingHUD.Draw(spriteBatch); + } + private bool ChangeSpawnType(GUIButton button, object obj) { GUITextBlock spawnTypeText = button.Parent as GUITextBlock; diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Subsurface/Source/Screens/EditMapScreen.cs index 989eabd5c..a97b2ba3c 100644 --- a/Subsurface/Source/Screens/EditMapScreen.cs +++ b/Subsurface/Source/Screens/EditMapScreen.cs @@ -835,6 +835,11 @@ namespace Barotrauma } else { + foreach (MapEntity me in MapEntity.mapEntityList) + { + me.IsHighlighted = false; + } + if (dummyCharacter.SelectedConstruction==null) { Vector2 mouseSimPos = FarseerPhysics.ConvertUnits.ToSimUnits(dummyCharacter.CursorPosition); @@ -861,6 +866,13 @@ namespace Barotrauma GUIComponent.MouseOn = null; + if (!characterMode && !wiringMode) + { + if (MapEntityPrefab.Selected != null) MapEntityPrefab.Selected.UpdatePlacing(cam); + + MapEntity.UpdateEditor(cam); + } + leftPanel.Update((float)deltaTime); topPanel.Update((float)deltaTime); @@ -872,7 +884,7 @@ namespace Barotrauma } wiringToolPanel.Update((float)deltaTime); } - + if (loadFrame!=null) { loadFrame.Update((float)deltaTime); @@ -888,20 +900,9 @@ namespace Barotrauma if (PlayerInput.RightButtonClicked()) selectedTab = -1; } - if (!characterMode && !wiringMode) - { - if (MapEntityPrefab.Selected != null) MapEntityPrefab.Selected.UpdatePlacing(cam); - - MapEntity.UpdateEditor(cam); - } if ((characterMode || wiringMode) && dummyCharacter != null) { - foreach (MapEntity me in MapEntity.mapEntityList) - { - me.IsHighlighted = false; - } - dummyCharacter.AnimController.FindHull(dummyCharacter.CursorWorldPosition, false); foreach (Item item in dummyCharacter.SelectedItems)