From 9a54b89bf35a0da44ac1a4f446fd9726fd81347a Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 10 Apr 2019 13:30:25 +0300 Subject: [PATCH] (0eb0c36ec) Fixed door background sprites being drawn in front of characters (TODO: update sprite depths in the subs) --- .../Source/Screens/ServerListScreen.cs | 59 ++++++++++++++++--- .../Source/Items/Components/Door.cs | 19 +++--- .../BarotraumaShared/Source/Items/Item.cs | 2 - 3 files changed, 59 insertions(+), 21 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/Screens/ServerListScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/ServerListScreen.cs index e4a78aa10..324c0f459 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/ServerListScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/ServerListScreen.cs @@ -84,13 +84,6 @@ namespace Barotrauma var filterHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), leftColumn.RectTransform)) { RelativeSpacing = 0.05f }; - var filterHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), leftColumn.RectTransform)) { RelativeSpacing = 0.05f }; - - new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), filterHolder.RectTransform), TextManager.Get("FilterServers")); - searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.13f), filterHolder.RectTransform), ""); - - var filterHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), leftColumn.RectTransform)) { RelativeSpacing = 0.05f }; - new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), filterHolder.RectTransform), TextManager.Get("FilterServers")); searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.13f), filterHolder.RectTransform), ""); @@ -159,6 +152,58 @@ namespace Barotrauma Enabled = false }; + //------------------------------------------------------------------------------------- + //right column + //------------------------------------------------------------------------------------- + + var rightColumn = new GUILayoutGroup(new RectTransform(new Vector2(1.0f - leftColumn.RectTransform.RelativeSize.X - 0.017f, 1.0f), + paddedFrame.RectTransform, Anchor.CenterRight)) + { + RelativeSpacing = 0.02f, + Stretch = true + }; + + var serverListHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), rightColumn.RectTransform)) { Stretch = true, RelativeSpacing = 0.02f }; + + serverList = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), serverListHolder.RectTransform, Anchor.Center)) + { + OnSelected = (btn, obj) => { + ServerInfo serverInfo = (ServerInfo)obj; + + serverInfo.CreatePreviewWindow(serverPreview); + + return true; + } + }; + + serverList.OnSelected += SelectServer; + + serverPreview = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), serverListHolder.RectTransform, Anchor.Center)); + + columnRelativeWidth = new float[] { 0.04f, 0.02f, 0.044f, 0.77f, 0.02f, 0.075f, 0.06f }; + + var buttonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.075f), rightColumn.RectTransform), style: null); + + GUIButton button = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform, Anchor.TopLeft), + TextManager.Get("Back"), style: "GUIButtonLarge") + { + OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu + }; + + var refreshButton = new GUIButton(new RectTransform(new Vector2(buttonContainer.Rect.Height / (float)buttonContainer.Rect.Width, 0.9f), buttonContainer.RectTransform, Anchor.Center), + "", style: "GUIButtonRefresh") { + + ToolTip = TextManager.Get("ServerListRefresh"), + OnClicked = RefreshServers + }; + + joinButton = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform, Anchor.TopRight), + TextManager.Get("ServerListJoin"), style: "GUIButtonLarge") + { + OnClicked = JoinServer, + Enabled = false + }; + //-------------------------------------------------------- button.SelectedColor = button.Color; diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Door.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Door.cs index 1fc64fb27..9e95085aa 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Door.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Door.cs @@ -212,36 +212,31 @@ namespace Barotrauma.Items.Components } private string accessDeniedTxt = TextManager.Get("AccessDenied"); - private string cannotOpenText = TextManager.Get("DoorMsgCannotOpen"); - private bool hasValidIdCard; + private bool hasIdCard; public override bool HasRequiredItems(Character character, bool addMessage, string msg = null) { if (item.Condition <= RepairThreshold) return true; //For repairing var idCard = character.Inventory.FindItemByIdentifier("idcard"); - hasValidIdCard = requiredItems.Any(ri => ri.Value.Any(r => r.MatchesItem(idCard))); - Msg = hasValidIdCard ? "ItemMsgOpen" : "ItemMsgForceOpenCrowbar"; + hasIdCard = requiredItems.Any(ri => ri.Value.Any(r => r.MatchesItem(idCard))); + Msg = hasIdCard ? "ItemMsgOpen" : "ItemMsgForceOpenCrowbar"; ParseMsg(); - if (addMessage) - { - msg = msg ?? (requiredItems.Any(ri => ri.Value.Any(r => r.Identifiers.Contains("idcard"))) ? accessDeniedTxt : cannotOpenText); - } //this is a bit pointless atm because if canBePicked is false it won't allow you to do Pick() anyway, however it's still good for future-proofing. - return requiredItems.Any() ? base.HasRequiredItems(character, addMessage, msg) : canBePicked; + return requiredItems.Any() ? base.HasRequiredItems(character, addMessage, msg ?? accessDeniedTxt) : canBePicked; } public override bool Pick(Character picker) { if (item.Condition <= RepairThreshold) { return true; } - if (HasRequiredItems(picker, false) && hasValidIdCard) { return false; } + if (HasRequiredItems(picker, false) && hasIdCard) { return false; } return base.Pick(picker); } public override bool OnPicked(Character picker) { if (item.Condition <= RepairThreshold) return true; //repairs - if (requiredItems.Any() && !hasValidIdCard) + if (requiredItems.Any() && !hasIdCard) { ForceOpen(ActionType.OnPicked); } @@ -261,7 +256,7 @@ namespace Barotrauma.Items.Components //can only be selected if the item is broken if (item.Condition <= RepairThreshold) return true; //repairs bool hasRequiredItems = HasRequiredItems(character, false); - if (requiredItems.None() || hasRequiredItems && hasValidIdCard) + if (requiredItems.None() || hasRequiredItems && hasIdCard) { float originalPickingTime = PickingTime; PickingTime = 0; diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs index 95beb42a3..9e78d920e 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs @@ -2062,8 +2062,6 @@ namespace Barotrauma public virtual void Reset() { SerializableProperties = SerializableProperty.DeserializeProperties(this, Prefab.ConfigElement); - Sprite.ReloadXML(); - SpriteDepth = Sprite.Depth; components.ForEach(c => c.Reset()); }