From 08ab6185c4bc1e9b84718559fb444b85cd372f5b Mon Sep 17 00:00:00 2001 From: Juan Pablo Arce Date: Tue, 4 Feb 2020 11:54:57 -0300 Subject: [PATCH] (eba811de) Unstable 0.9.703.0 --- .../ClientSource/Characters/CharacterHUD.cs | 7 +- .../ClientSource/Characters/CharacterInfo.cs | 6 +- .../Characters/Health/CharacterHealth.cs | 211 ++++-- .../Extensions/ColorExtensions.cs | 5 + .../ClientSource/Fonts/ScalableFont.cs | 197 ++--- .../ClientSource/GUI/ChatBox.cs | 14 +- .../ClientSource/GUI/ComponentStyle.cs | 11 +- .../BarotraumaClient/ClientSource/GUI/GUI.cs | 95 ++- .../ClientSource/GUI/GUIComponent.cs | 8 +- .../ClientSource/GUI/GUIListBox.cs | 47 +- .../ClientSource/GUI/GUIStyle.cs | 20 +- .../ClientSource/GUI/GUITextBlock.cs | 60 +- .../ClientSource/GUI/GUITextBox.cs | 9 +- .../ClientSource/GUI/HUDLayoutSettings.cs | 24 +- .../ClientSource/GUI/RectTransform.cs | 130 +++- .../ClientSource/GUI/UISprite.cs | 3 +- .../ClientSource/GUI/VideoPlayer.cs | 6 +- .../BarotraumaClient/ClientSource/GameMain.cs | 1 + .../ClientSource/GameSession/CrewManager.cs | 679 ++++++++---------- .../GameModes/Tutorials/MechanicTutorial.cs | 2 +- .../ClientSource/Items/CharacterInventory.cs | 63 +- .../Items/Components/ItemContainer.cs | 53 +- .../Components/Machines/Deconstructor.cs | 135 ++-- .../Items/Components/Machines/Engine.cs | 2 +- .../Items/Components/Machines/Fabricator.cs | 269 ++++--- .../Items/Components/Machines/MiniMap.cs | 1 + .../Items/Components/Machines/Pump.cs | 6 +- .../Items/Components/Machines/Reactor.cs | 42 +- .../Items/Components/Machines/Sonar.cs | 74 +- .../Items/Components/Machines/Steering.cs | 96 ++- .../Items/Components/Power/PowerTransfer.cs | 2 +- .../Items/Components/Signal/Connection.cs | 7 +- .../Components/Signal/CustomInterface.cs | 53 +- .../Items/Components/Signal/Wire.cs | 14 +- .../ClientSource/Items/Inventory.cs | 175 ++--- .../ClientSource/Items/Item.cs | 41 +- .../ClientSource/Map/MapEntity.cs | 13 +- .../ClientSource/Map/Structure.cs | 3 +- .../ClientSource/Networking/GameClient.cs | 44 +- .../ClientSource/Networking/ServerInfo.cs | 2 +- .../ClientSource/Networking/SteamManager.cs | 1 + .../ClientSource/Particles/ParticlePrefab.cs | 2 +- .../ClientSource/Screens/CampaignUI.cs | 28 +- .../CharacterEditor/CharacterEditorScreen.cs | 15 +- .../ClientSource/Screens/GameScreen.cs | 4 +- .../ClientSource/Screens/NetLobbyScreen.cs | 12 +- .../ClientSource/Screens/ServerListScreen.cs | 16 +- .../Screens/SpriteEditorScreen.cs | 2 +- .../Screens/SteamWorkshopScreen.cs | 11 +- .../ClientSource/Screens/SubEditorScreen.cs | 169 +++-- .../Serialization/SerializableEntityEditor.cs | 27 +- .../ClientSource/Sounds/OpenAL/Alc.cs | 21 + .../ClientSource/Sounds/SoundManager.cs | 54 +- .../Utils/LocalizationCSVtoXML.cs | 9 +- .../ClientSource/Utils/ToolBox.cs | 2 +- .../BarotraumaClient/LinuxClient.csproj | 2 +- Barotrauma/BarotraumaClient/MacClient.csproj | 2 +- .../BarotraumaClient/WindowsClient.csproj | 2 +- .../BarotraumaServer/LinuxServer.csproj | 2 +- Barotrauma/BarotraumaServer/MacServer.csproj | 2 +- .../ServerSource/DebugConsole.cs | 82 ++- .../BarotraumaServer/ServerSource/GameMain.cs | 1 + .../Items/Components/Machines/Reactor.cs | 6 +- .../ServerSource/Networking/GameServer.cs | 6 + .../BarotraumaServer/WindowsServer.csproj | 2 +- .../Data/ContentPackages/Vanilla 0.9.xml | 3 + .../Characters/AI/IndoorsSteeringManager.cs | 6 +- .../SharedSource/Characters/AI/Order.cs | 10 + .../Animation/HumanoidAnimController.cs | 2 +- .../SharedSource/Characters/Character.cs | 91 +-- .../Characters/Health/CharacterHealth.cs | 4 +- .../SharedSource/Characters/SkillSettings.cs | 117 +++ .../SharedSource/ContentPackage.cs | 3 +- .../SharedSource/DebugConsole.cs | 44 +- .../Events/Missions/MonsterMission.cs | 30 +- .../SharedSource/Events/ScriptedEventSet.cs | 2 +- .../Components/Machines/Deconstructor.cs | 2 +- .../Items/Components/Machines/Fabricator.cs | 48 +- .../Items/Components/Machines/Reactor.cs | 3 +- .../Items/Components/Machines/Sonar.cs | 6 +- .../Items/Components/Machines/Steering.cs | 16 +- .../Items/Components/Repairable.cs | 7 +- .../Items/Components/Signal/WifiComponent.cs | 10 +- .../Items/Components/Signal/Wire.cs | 20 +- .../SharedSource/Items/Inventory.cs | 6 - .../BarotraumaShared/SharedSource/Map/Gap.cs | 14 +- .../SharedSource/Map/MapEntity.cs | 3 + .../SharedSource/Map/Structure.cs | 5 +- .../SharedSource/Map/Submarine.cs | 1 + .../Networking/ChildServerRelay.cs | 12 +- .../SharedSource/Networking/RespawnManager.cs | 11 + .../SharedSource/Screens/GameScreen.cs | 20 +- .../Serialization/SerializableProperty.cs | 2 +- .../SharedSource/Utils/AssemblyInfo.cs | 2 + .../BarotraumaShared/Submarines/Bunyip.sub | Bin 262712 -> 0 bytes .../BarotraumaShared/Submarines/Muikku.sub | Bin 57750 -> 0 bytes .../BarotraumaShared/Submarines/Orca.sub | Bin 197061 -> 196583 bytes Barotrauma/BarotraumaShared/changelog.txt | 36 +- .../Interfaces/ISteamMatchmakingServers.cs | 34 +- .../ServerList/Internet.cs | 2 +- 100 files changed, 2162 insertions(+), 1520 deletions(-) create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/SkillSettings.cs delete mode 100644 Barotrauma/BarotraumaShared/Submarines/Bunyip.sub delete mode 100644 Barotrauma/BarotraumaShared/Submarines/Muikku.sub diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs index fa96db75a..adeb499d2 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs @@ -168,10 +168,13 @@ namespace Barotrauma public static void Draw(SpriteBatch spriteBatch, Character character, Camera cam) { - if (GUI.DisableHUD) return; + if (GUI.DisableHUD) { return; } character.CharacterHealth.Alignment = Alignment.Right; - GUI.InfoAreaBackground.Draw(spriteBatch, Vector2.Zero); + if (Screen.Selected == GameMain.GameScreen) + { + GUI.InfoAreaBackground.Draw(spriteBatch, Vector2.Zero, scale: GUI.Scale); + } if (GameMain.GameSession?.CrewManager != null) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs index 74060629d..2a4a64976 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs @@ -41,7 +41,7 @@ namespace Barotrauma Name, textColor: nameColor, font: GUI.LargeFont) { Padding = Vector4.Zero, - AutoScale = true + AutoScaleHorizontal = true }; if (Job != null) @@ -213,10 +213,10 @@ namespace Barotrauma } } - public void DrawJobIcon(SpriteBatch spriteBatch) + public void DrawJobIcon(SpriteBatch spriteBatch, Vector2? pos = null, float scale = 1.0f) { if (jobIcon == null) return; - jobIcon.Draw(spriteBatch, jobIconPos, Job.Prefab.UIColor, scale: .5f * GUI.Scale); + jobIcon.Draw(spriteBatch, pos ?? jobIconPos, Job.Prefab.UIColor, scale: .5f * GUI.Scale * scale); } private void DrawAttachmentSprite(SpriteBatch spriteBatch, WearableSprite attachment, Sprite head, Vector2 drawPos, float scale, float depthStep, SpriteEffects spriteEffects = SpriteEffects.None) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs index b0e0891e8..761d082b3 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs @@ -150,6 +150,9 @@ namespace Barotrauma private SpriteSheet limbIndicatorOverlay; private float limbIndicatorOverlayAnimState; + private SpriteSheet medUIExtra; + private float medUIExtraAnimState; + private GUIComponent draggingMed; private int highlightedLimbIndex = -1; @@ -237,7 +240,7 @@ namespace Barotrauma get { return healthBarPulsateTimer; } set { healthBarPulsateTimer = MathHelper.Clamp(value, 0.0f, 10.0f); } } - + partial void InitProjSpecific(XElement element, Character character) { DisplayedVitality = MaxVitality; @@ -259,7 +262,7 @@ namespace Barotrauma barSize: 1.0f, color: GUIColorSettings.HealthBarColorHigh, style: horizontal ? "CharacterHealthBar" : "GUIProgressBarVertical", false) { Enabled = true, - HoverCursor = CursorState.Hand, + HoverCursor = CursorState.Hand, IsHorizontal = horizontal }; healthBarShadow = new GUIProgressBar(HUDLayoutSettings.ToRectTransform(HUDLayoutSettings.HealthBarAreaLeft, GUI.Canvas), @@ -271,12 +274,14 @@ namespace Barotrauma healthInterfaceFrame = new GUIFrame(new RectTransform(new Vector2(0.85f * 1.1f, 0.66f * 0.85f * 1.1f), GUI.Canvas, anchor: Anchor.Center, scaleBasis: ScaleBasis.Smallest), style: "ItemUI"); - var healthInterfaceLayout = new GUILayoutGroup(new RectTransform(Vector2.One / 1.1f, healthInterfaceFrame.RectTransform, anchor: Anchor.Center), true); + var healthInterfaceLayout = new GUILayoutGroup(new RectTransform(Vector2.One / 1.05f, healthInterfaceFrame.RectTransform, anchor: Anchor.Center), true); + + var healthWindowContainer = new GUIFrame(new RectTransform(new Vector2(0.45f, 1.0f), healthInterfaceLayout.RectTransform), style: null); //limb selection frame - healthWindow = new GUIFrame(new RectTransform(new Vector2(0.45f, 1.0f), healthInterfaceLayout.RectTransform), style: null); + healthWindow = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.9f), healthWindowContainer.RectTransform, Anchor.CenterRight, Pivot.CenterRight), style: "GUIFrameListBox"); - var healthWindowVerticalLayout = new GUILayoutGroup(new RectTransform(Vector2.One * 0.9f, healthWindow.RectTransform, Anchor.Center)); + var healthWindowVerticalLayout = new GUILayoutGroup(new RectTransform(Vector2.One * 0.95f, healthWindow.RectTransform, Anchor.Center)); var paddedHealthWindow = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.95f), healthWindowVerticalLayout.RectTransform), true) { @@ -301,9 +306,34 @@ namespace Barotrauma CanBeFocused = false }; - GUILayoutGroup selectedLimbLayout = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), paddedHealthWindow.RectTransform)); + var rightSide = new GUIFrame(new RectTransform(new Vector2(0.4f, 1.0f), paddedHealthWindow.RectTransform), style: null); + + new GUICustomComponent(new RectTransform(new Vector2(1.0f, 0.3f), rightSide.RectTransform, Anchor.BottomRight, Pivot.BottomRight), + (sb, component) => + { + if (medUIExtra == null) { return; } + float overlayScale = Math.Min( + component.Rect.Width / (float)medUIExtra.FrameSize.X, + component.Rect.Height / (float)medUIExtra.FrameSize.Y); + + int frame = (int)medUIExtraAnimState; + + medUIExtra.Draw(sb, frame, component.Rect.Center.ToVector2(), Color.Gray, origin: medUIExtra.FrameSize.ToVector2() / 2, rotate: 0.0f, + scale: Vector2.One * overlayScale); + }, + (dt, component) => + { + medUIExtraAnimState += dt * 10.0f; + while (medUIExtraAnimState >= 16.0f) + { + medUIExtraAnimState -= 16.0f; + } + }); + + GUILayoutGroup selectedLimbLayout = new GUILayoutGroup(new RectTransform(Vector2.One, rightSide.RectTransform)); selectedLimbText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.08f), selectedLimbLayout.RectTransform), "", font: GUI.LargeFont); + selectedLimbText.AutoScaleHorizontal = true; afflictionIconContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.92f), selectedLimbLayout.RectTransform), style: null); afflictionIconContainer.KeepSpaceForScrollBar = true; @@ -327,9 +357,21 @@ namespace Barotrauma afflictionInfoFrame = new GUIFrame(new RectTransform(new Vector2(0.55f, 1.0f), healthInterfaceLayout.RectTransform), style: null); var paddedInfoFrame = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.9f), afflictionInfoFrame.RectTransform, Anchor.Center), style: null); - var infoLayout = new GUILayoutGroup(new RectTransform(Vector2.One, paddedInfoFrame.RectTransform)); + var infoLayout = new GUILayoutGroup(new RectTransform(Vector2.One, paddedInfoFrame.RectTransform)) + { + Stretch = true, + RelativeSpacing = 0.03f + }; - var nameContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), infoLayout.RectTransform) { MinSize = new Point(0, 20) }, isHorizontal: true) + var textContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.6f), infoLayout.RectTransform), style: "GUIFrameListBox"); + + var textLayout = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 1.0f), textContainer.RectTransform, Anchor.Center, Pivot.Center)) + { + Stretch = true, + RelativeSpacing = 0.03f + }; + + var nameContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.2f), textLayout.RectTransform) { MinSize = new Point(0, 20) }, isHorizontal: true) { Stretch = true }; @@ -338,25 +380,29 @@ namespace Barotrauma onDraw: (spriteBatch, component) => { character.Info.DrawPortrait(spriteBatch, new Vector2(component.Rect.X, component.Rect.Center.Y - component.Rect.Width / 2), component.Rect.Width); + character.Info.DrawJobIcon(spriteBatch, new Vector2(component.Rect.Right + component.Rect.Width, (float)component.Rect.Top + component.Rect.Height * 0.75f), 0.75f); }); - characterName = new GUITextBlock(new RectTransform(new Vector2(0.85f, 1.0f), nameContainer.RectTransform), "", textAlignment: Alignment.CenterLeft, font: GUI.LargeFont) + characterName = new GUITextBlock(new RectTransform(new Vector2(0.85f, 1.0f), nameContainer.RectTransform), "", textAlignment: Alignment.BottomLeft, font: GUI.SubHeadingFont) { - AutoScale = true + AutoScaleHorizontal = true }; + new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), textLayout.RectTransform), style: "HorizontalLine"); - afflictionInfoContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.4f), infoLayout.RectTransform, Anchor.TopLeft)); + afflictionInfoContainer = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.4f), textLayout.RectTransform, Anchor.TopLeft), style: null); - new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), infoLayout.RectTransform, Anchor.TopLeft), TextManager.Get("SuitableTreatments"), textAlignment: Alignment.TopLeft); + new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), textLayout.RectTransform), style: "HorizontalLine"); - treatmentLayout = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.2f), infoLayout.RectTransform), true) + new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), textLayout.RectTransform, Anchor.TopLeft), TextManager.Get("SuitableTreatments"), textAlignment: Alignment.TopLeft); + + treatmentLayout = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.15f), textLayout.RectTransform), true) { - Stretch = true + Stretch = false }; - recommendedTreatmentContainer = new GUIListBox(new RectTransform(new Vector2(0.9f, 1.0f), treatmentLayout.RectTransform, Anchor.TopLeft), isHorizontal: true, style: null) + recommendedTreatmentContainer = new GUIListBox(new RectTransform(new Vector2(0.9f, 1.0f), treatmentLayout.RectTransform, Anchor.Center, Pivot.Center), isHorizontal: true, style: null) { - KeepSpaceForScrollBar = true + KeepSpaceForScrollBar = false }; lowSkillIndicator = new GUIImage(new RectTransform(new Vector2(0.1f, 1.0f), treatmentLayout.RectTransform, Anchor.TopLeft, Pivot.Center), @@ -370,6 +416,8 @@ namespace Barotrauma }; lowSkillIndicator.RectTransform.MaxSize = new Point(lowSkillIndicator.Rect.Height); + var tempFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), textLayout.RectTransform), style: null); + cprLayout = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.25f), infoLayout.RectTransform), true) { Stretch = true @@ -443,8 +491,12 @@ namespace Barotrauma switch (subElement.Name.ToString().ToLowerInvariant()) { case "sprite": + case "meduisilhouette": limbIndicatorOverlay = new SpriteSheet(subElement); break; + case "meduiextra": + medUIExtra = new SpriteSheet(subElement); + break; } } } @@ -1062,9 +1114,9 @@ namespace Barotrauma var button = new GUIButton(new RectTransform(new Vector2(1.0f, 0.9f), child.RectTransform), style: null) { - Color = Color.Gray.Multiply(0.1f), - HoverColor = Color.Gray.Multiply(0.4f), - SelectedColor = Color.Gray.Multiply(0.25f), + Color = Color.Gray.Multiply(0.1f).Opaque(), + HoverColor = Color.Gray.Multiply(0.4f).Opaque(), + SelectedColor = Color.Gray.Multiply(0.25f).Opaque(), PressedColor = Color.Black, UserData = "selectaffliction", OnClicked = SelectAffliction @@ -1100,22 +1152,27 @@ namespace Barotrauma List> treatmentSuitabilities = treatmentSuitability.OrderByDescending(t => t.Value).ToList(); + int count = 0; foreach (KeyValuePair treatment in treatmentSuitabilities) { + count++; + if (count > 5) { break; } ItemPrefab item = MapEntityPrefab.Find(name: null, identifier: treatment.Key, showErrorMessages: false) as ItemPrefab; if (item == null) continue; - var itemSlot = new GUIFrame(new RectTransform(new Vector2(0.25f, 1.0f), recommendedTreatmentContainer.Content.RectTransform, Anchor.TopLeft), - style: "InnerGlow") + var itemSlot = new GUIFrame(new RectTransform(new Vector2(1.0f / 7.0f, 1.0f), recommendedTreatmentContainer.Content.RectTransform, Anchor.TopLeft), + style: null) { UserData = item }; - itemSlot.Color = ToolBox.GradientLerp(treatment.Value, GUI.Style.Red, GUI.Style.Orange, GUI.Style.Green); - itemSlot.SelectedColor = itemSlot.HoverColor = itemSlot.Color; + var innerFrame = new GUIFrame(new RectTransform(Vector2.One, itemSlot.RectTransform, Anchor.Center, Pivot.Center, scaleBasis: ScaleBasis.Smallest), style: "GUIFrameListBox") + { + CanBeFocused = false + }; Sprite itemSprite = item.InventoryIcon ?? item.sprite; Color itemColor = itemSprite == item.sprite ? item.SpriteColor : item.InventoryIconColor; - var itemIcon = new GUIImage(new RectTransform(new Vector2(0.8f, 0.8f), itemSlot.RectTransform, Anchor.Center), + var itemIcon = new GUIImage(new RectTransform(new Vector2(0.8f, 0.8f), innerFrame.RectTransform, Anchor.Center), itemSprite, scaleToFit: true) { CanBeFocused = false, @@ -1242,11 +1299,11 @@ namespace Barotrauma private void UpdateHeartrate(float deltaTime, GUICustomComponent component) { - heartbeatTimer -= deltaTime; + heartbeatTimer -= deltaTime * 0.75f; if (heartbeatTimer <= 0.0f) { - heartbeatTimer = 0.5f; + while (heartbeatTimer <= 0.0f) { heartbeatTimer += 0.5f; } IEnumerable newPositions; if (Character == null || Character.IsDead || Character.IsUnconscious) @@ -1278,7 +1335,7 @@ namespace Barotrauma } } - currentHeartrateTime += deltaTime; + currentHeartrateTime += deltaTime * 0.75f; while (currentHeartrateTime >= 1.0f) { currentHeartrateTime -= 1.0f; @@ -1287,16 +1344,20 @@ namespace Barotrauma private void DrawHeartrate(SpriteBatch spriteBatch, GUICustomComponent component) { - GUI.DrawRectangle(spriteBatch, component.Rect, Color.Black, true); + Rectangle targetRect = component.Parent.Rect; + targetRect.Location += new Point(6, 6); + targetRect.Size -= new Point(12, 12); + + //GUI.DrawRectangle(spriteBatch, targetRect, Color.Black, true); bool first = true; Vector2 prevPos = Vector2.Zero; foreach (var heartratePosition in heartratePositions.OrderBy(hp => hp.Time)) { - Vector2 pos = new Vector2(heartratePosition.Time, -heartratePosition.Height * 0.5f + 0.5f) * component.Rect.Size.ToVector2() + component.Rect.Location.ToVector2(); + Vector2 pos = new Vector2(heartratePosition.Time, -heartratePosition.Height * 0.5f + 0.5f) * targetRect.Size.ToVector2() + targetRect.Location.ToVector2(); - if (pos.X < component.Rect.Left + 1) { pos.X = component.Rect.Left + 1; } - if (pos.X > component.Rect.Right - 1) { pos.X = component.Rect.Right - 1; } + if (pos.X < targetRect.Left + 1) { pos.X = targetRect.Left + 1; } + if (pos.X > targetRect.Right - 1) { pos.X = targetRect.Right - 1; } if (first) { @@ -1317,17 +1378,17 @@ namespace Barotrauma Rectangle sourceRect = heartrateFade.Bounds; Rectangle destinationRectangle = new Rectangle(); - destinationRectangle.Location = new Point((int)(currentHeartrateTime * component.Rect.Width) + component.Rect.Left - component.Rect.Height, component.Rect.Top); - destinationRectangle.Size = new Point((int)(component.Rect.Height * ((float)sourceRect.Width / (float)sourceRect.Height)), component.Rect.Height); + destinationRectangle.Location = new Point((int)(currentHeartrateTime * targetRect.Width) + targetRect.Left - targetRect.Height, targetRect.Top); + destinationRectangle.Size = new Point((int)(targetRect.Height * ((float)sourceRect.Width / (float)sourceRect.Height)), targetRect.Height); - if (destinationRectangle.Left < component.Rect.Left) + if (destinationRectangle.Left < targetRect.Left) { Rectangle destinationRectangle2 = new Rectangle(); - destinationRectangle2.Location = new Point(component.Rect.Right - (component.Rect.Left - destinationRectangle.Left), component.Rect.Top); - destinationRectangle2.Size = new Point(component.Rect.Right - destinationRectangle2.Left, component.Rect.Height); + destinationRectangle2.Location = new Point(targetRect.Right - (targetRect.Left - destinationRectangle.Left), targetRect.Top); + destinationRectangle2.Size = new Point(targetRect.Right - destinationRectangle2.Left, targetRect.Height); int originalWidth = sourceRect.Width; - sourceRect.Width = (int)(sourceRect.Width * ((float)(destinationRectangle.Right - component.Rect.Left) / (float)component.Rect.Height)); + sourceRect.Width = (int)(sourceRect.Width * ((float)(destinationRectangle.Right - targetRect.Left) / (float)targetRect.Height)); sourceRect.X += originalWidth - sourceRect.Width; Rectangle sourceRect2 = heartrateFade.Bounds; @@ -1335,9 +1396,9 @@ namespace Barotrauma spriteBatch.Draw(heartrateFade, destinationRectangle2, sourceRect2, Color.White); originalWidth = destinationRectangle.Width; - int newWidth = destinationRectangle.Right - component.Rect.Left; + int newWidth = destinationRectangle.Right - targetRect.Left; - destinationRectangle.Size = new Point(newWidth, component.Rect.Height); + destinationRectangle.Size = new Point(newWidth, targetRect.Height); destinationRectangle.X += originalWidth - newWidth; GUI.DrawRectangle(spriteBatch, new Rectangle(destinationRectangle.Right, destinationRectangle.Top, @@ -1346,9 +1407,9 @@ namespace Barotrauma else { GUI.DrawRectangle(spriteBatch, new Rectangle(destinationRectangle.Right, destinationRectangle.Top, - component.Rect.Right - destinationRectangle.Right, destinationRectangle.Height), Color.Black, true); - GUI.DrawRectangle(spriteBatch, new Rectangle(component.Rect.Left, destinationRectangle.Top, - destinationRectangle.Left - component.Rect.Left, destinationRectangle.Height), Color.Black, true); + targetRect.Right - destinationRectangle.Right, destinationRectangle.Height), Color.Black, true); + GUI.DrawRectangle(spriteBatch, new Rectangle(targetRect.Left, destinationRectangle.Top, + destinationRectangle.Left - targetRect.Left, destinationRectangle.Height), Color.Black, true); } spriteBatch.Draw(heartrateFade, destinationRectangle, sourceRect, Color.White); @@ -1515,45 +1576,43 @@ namespace Barotrauma float damageLerp = limbHealth.TotalDamage > 0.0f ? MathHelper.Lerp(0.2f, 1.0f, limbHealth.TotalDamage / 100.0f) : 0.0f; - var tempAfflictions = limbHealth.Afflictions.ToList(); - foreach (var a in afflictions) - { - Limb indicatorLimb = Character.AnimController.GetLimb(a.Prefab.IndicatorLimb); - if (indicatorLimb != null && indicatorLimb.HealthIndex == i) - { - tempAfflictions.Add(a); - } - } + var tempAfflictions = GetMatchingAfflictions(limbHealth, a => true); - float negativeEffect = tempAfflictions.Where(a => !a.Prefab.IsBuff).Sum(a => a.Strength); - float positiveEffect = tempAfflictions.Where(a => a.Prefab.IsBuff).Sum(a => a.Strength); + float negativeEffect = tempAfflictions.Where(a => !a.Prefab.IsBuff && a.Strength >= a.Prefab.ShowIconThreshold).Sum(a => a.Strength); + //float negativeMaxEffect = tempAfflictions.Where(a => !a.Prefab.IsBuff).Sum(a => a.Prefab.MaxStrength); + float positiveEffect = tempAfflictions.Where(a => a.Prefab.IsBuff && a.Strength >= a.Prefab.ShowIconThreshold).Sum(a => a.Strength * 0.2f); + //float positiveMaxEffect = tempAfflictions.Where(a => a.Prefab.IsBuff).Sum(a => a.Prefab.MaxStrength); float midPoint = (float)limbEffectiveArea.Center.Y / (float)limbHealth.IndicatorSprite.Texture.Height; float fadeDist = 0.6f * (float)limbEffectiveArea.Height / (float)limbHealth.IndicatorSprite.Texture.Height; + if (negativeEffect > 0.0f && negativeEffect < 5.0f) { negativeEffect = 5.0f; } + if (positiveEffect > 0.0f && positiveEffect < 5.0f) { positiveEffect = 5.0f; } + + Color positiveColor = Color.Lerp(Color.Orange, Color.Lime, Math.Min(positiveEffect / 15.0f, 1.0f)); + Color negativeColor = Color.Lerp(Color.Orange, Color.Red, Math.Min(negativeEffect / 15.0f, 1.0f)); + Color color1 = Color.Orange; Color color2 = Color.Orange; - if (positiveEffect > 0.0f && negativeEffect > 0.0f) + if (negativeEffect+positiveEffect > 0.0f) { - color1 = Color.Lime; - color2 = Color.Red; - } - else if (positiveEffect > 0.0f) - { - color1 = Color.Lime; - color2 = Color.Lime; - } - else if (negativeEffect > 0.0f) - { - color1 = Color.Red; - color2 = Color.Red; + if (negativeEffect >= positiveEffect) + { + color1 = Color.Lerp(positiveColor, negativeColor, (negativeEffect - positiveEffect) / negativeEffect); + color2 = negativeColor; + } + else + { + color1 = positiveColor; + color2 = Color.Lerp(negativeColor, positiveColor, (positiveEffect - negativeEffect) / positiveEffect); + } } if (Character.IsDead) { - color1 = Color.Lerp(color1, Color.Black, 0.5f); - color2 = Color.Lerp(color2, Color.Black, 0.5f); + color1 = Color.Lerp(color1, Color.Black, 0.75f); + color2 = Color.Lerp(color2, Color.Black, 0.75f); } if (((i == highlightedLimbIndex || i == selectedLimbIndex) && allowHighlight) || highlightAll) { @@ -1610,22 +1669,20 @@ namespace Barotrauma spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.Deferred, blendState: BlendState.NonPremultiplied, rasterizerState: GameMain.ScissorTestEnable); - /*i = 0; + i = 0; foreach (LimbHealth limbHealth in limbHealths) { if (limbHealth.IndicatorSprite == null) continue; Rectangle highlightArea = GetLimbHighlightArea(limbHealth, drawArea); - var slot = GUI.Style.GetComponentStyle("AfflictionIconSlot"); - float scale = Math.Min(drawArea.Width / (float)limbHealth.IndicatorSprite.SourceRect.Width, drawArea.Height / (float)limbHealth.IndicatorSprite.SourceRect.Height); float iconScale = 0.3f * scale; Vector2 iconPos = highlightArea.Center.ToVector2(); foreach (Affliction affliction in limbHealth.Afflictions) { - DrawLimbAfflictionIcon(spriteBatch, affliction, slot, iconScale, ref iconPos); + DrawLimbAfflictionIcon(spriteBatch, affliction, iconScale, ref iconPos); } foreach (Affliction affliction in afflictions) @@ -1633,11 +1690,11 @@ namespace Barotrauma Limb indicatorLimb = Character.AnimController.GetLimb(affliction.Prefab.IndicatorLimb); if (indicatorLimb != null && indicatorLimb.HealthIndex == i) { - DrawLimbAfflictionIcon(spriteBatch, affliction, slot, iconScale, ref iconPos); + DrawLimbAfflictionIcon(spriteBatch, affliction, iconScale, ref iconPos); } } i++; - }*/ + } if (draggingMed != null) { @@ -1647,7 +1704,7 @@ namespace Barotrauma } } - private void DrawLimbAfflictionIcon(SpriteBatch spriteBatch, Affliction affliction, GUIComponentStyle slotStyle, float iconScale, ref Vector2 iconPos) + private void DrawLimbAfflictionIcon(SpriteBatch spriteBatch, Affliction affliction, float iconScale, ref Vector2 iconPos) { if (affliction.Strength < affliction.Prefab.ShowIconThreshold) return; Vector2 iconSize = (affliction.Prefab.Icon.size * iconScale); @@ -1656,10 +1713,6 @@ namespace Barotrauma float alpha = MathHelper.Lerp(0.3f, 1.0f, (affliction.Strength - affliction.Prefab.ShowIconThreshold) / Math.Min(affliction.Prefab.MaxStrength - affliction.Prefab.ShowIconThreshold, 10.0f)); - slotStyle.Sprites[GUIComponent.ComponentState.None][0].Draw( - spriteBatch, - new Rectangle((iconPos - iconSize / 2.0f).ToPoint(), iconSize.ToPoint()), - slotStyle.Color * alpha); affliction.Prefab.Icon.Draw(spriteBatch, iconPos - iconSize / 2.0f, GetAfflictionIconColor(affliction.Prefab, affliction) * alpha, 0, iconScale); iconPos += new Vector2(10.0f, 20.0f) * iconScale; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Extensions/ColorExtensions.cs b/Barotrauma/BarotraumaClient/ClientSource/Extensions/ColorExtensions.cs index 191f5bfff..3de8f949c 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Extensions/ColorExtensions.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Extensions/ColorExtensions.cs @@ -11,5 +11,10 @@ namespace Barotrauma.Extensions new Color(color.R, color.G, color.B, (byte)(color.A * value)) : new Color((byte)(color.R * value), (byte)(color.G * value), (byte)(color.B * value), (byte)(color.A * value)); } + + public static Color Opaque(this Color color) + { + return new Color(color.R, color.G, color.B, (byte)255); + } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Fonts/ScalableFont.cs b/Barotrauma/BarotraumaClient/ClientSource/Fonts/ScalableFont.cs index b545e192c..74a57080f 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Fonts/ScalableFont.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Fonts/ScalableFont.cs @@ -198,10 +198,6 @@ namespace Barotrauma this.texDims = texDims; this.baseChar = baseChar; - lock (mutex) - { - face.SetPixelSizes(0, size); - } textures.ForEach(t => t.Dispose()); textures.Clear(); texCoords.Clear(); @@ -223,17 +219,15 @@ namespace Barotrauma lock (mutex) { + face.SetPixelSizes(0, size); face.LoadGlyph(face.GetCharIndex(baseChar), LoadFlags.Default, LoadTarget.Normal); baseHeight = face.Glyph.Metrics.Height.ToInt32(); - } - //lineHeight = baseHeight; - for (int i = 0; i < charRanges.Length; i += 2) - { - uint start = charRanges[i]; - uint end = charRanges[i + 1]; - for (uint j = start; j <= end; j++) + + for (int i = 0; i < charRanges.Length; i += 2) { - lock (mutex) + uint start = charRanges[i]; + uint end = charRanges[i + 1]; + for (uint j = start; j <= end; j++) { uint glyphIndex = face.GetCharIndex(j); if (glyphIndex == 0) continue; @@ -307,107 +301,118 @@ namespace Barotrauma currentCoords.X += glyphWidth + 2; } + CrossThread.RequestExecutionOnMainThread(() => + { + textures[texIndex].SetData(pixelBuffer); + }); } - CrossThread.RequestExecutionOnMainThread(() => - { - textures[texIndex].SetData(pixelBuffer); - }); } } public void DynamicRenderAtlas(GraphicsDevice gd, uint character, int texDims = 1024, uint baseChar = 0x54) { - if (textures.Count == 0) + if (System.Threading.Thread.CurrentThread != GameMain.MainThread) { - this.texDims = texDims; - this.baseChar = baseChar; - lock (mutex) { face.SetPixelSizes(0, size); } - face.LoadGlyph(face.GetCharIndex(baseChar), LoadFlags.Default, LoadTarget.Normal); - baseHeight = face.Glyph.Metrics.Height.ToInt32(); CrossThread.RequestExecutionOnMainThread(() => { - textures.Add(new Texture2D(gd, texDims, texDims, false, SurfaceFormat.Color)); + DynamicRenderAtlas(gd, character, texDims, baseChar); }); - } - - uint glyphIndex = face.GetCharIndex(character); - if (glyphIndex == 0) { return; } - - lock (mutex) { face.SetPixelSizes(0, size); } - face.LoadGlyph(glyphIndex, LoadFlags.Default, LoadTarget.Normal); - if (face.Glyph.Metrics.Width == 0 || face.Glyph.Metrics.Height == 0) - { - if (face.Glyph.Metrics.HorizontalAdvance > 0) - { - //glyph is empty, but char still applies advance - GlyphData blankData = new GlyphData(); - blankData.advance = (float)face.Glyph.Metrics.HorizontalAdvance; - blankData.texIndex = -1; //indicates no texture because the glyph is empty - texCoords.Add(character, blankData); - } return; } - //stacktrace doesn't really work that well when RenderGlyph throws an exception - face.Glyph.RenderGlyph(RenderMode.Normal); - byte[] bitmap = face.Glyph.Bitmap.BufferData; - int glyphWidth = face.Glyph.Bitmap.Width; - int glyphHeight = bitmap.Length / glyphWidth; + byte[] bitmap; + int glyphWidth; int glyphHeight; + Fixed26Dot6 horizontalAdvance; + Vector2 drawOffset; - if (glyphWidth > texDims - 1 || glyphHeight > texDims - 1) + lock (mutex) { - throw new Exception(filename + ", " + size.ToString() + ", " + (char)character + "; Glyph dimensions exceed texture atlas dimensions"); - } - - currentDynamicAtlasNextY = Math.Max(currentDynamicAtlasNextY, glyphHeight + 2); - if (currentDynamicAtlasCoords.X + glyphWidth + 2 > texDims - 1) - { - currentDynamicAtlasCoords.X = 0; - currentDynamicAtlasCoords.Y += currentDynamicAtlasNextY; - currentDynamicAtlasNextY = 0; - } - //no more room in current texture atlas, create a new one - if (currentDynamicAtlasCoords.Y + glyphHeight + 2 > texDims - 1) - { - currentDynamicAtlasCoords.X = 0; - currentDynamicAtlasCoords.Y = 0; - currentDynamicAtlasNextY = 0; - CrossThread.RequestExecutionOnMainThread(() => + if (texCoords.ContainsKey(character)) { return; } + if (textures.Count == 0) { + this.texDims = texDims; + this.baseChar = baseChar; + face.SetPixelSizes(0, size); + face.LoadGlyph(face.GetCharIndex(baseChar), LoadFlags.Default, LoadTarget.Normal); + baseHeight = face.Glyph.Metrics.Height.ToInt32(); textures.Add(new Texture2D(gd, texDims, texDims, false, SurfaceFormat.Color)); - }); - currentDynamicPixelBuffer = null; - } - - GlyphData newData = new GlyphData - { - advance = (float)face.Glyph.Metrics.HorizontalAdvance, - texIndex = textures.Count - 1, - texCoords = new Rectangle((int)currentDynamicAtlasCoords.X, (int)currentDynamicAtlasCoords.Y, glyphWidth, glyphHeight), - drawOffset = new Vector2(face.Glyph.BitmapLeft, baseHeight * 14 / 10 - face.Glyph.BitmapTop) - }; - texCoords.Add(character, newData); - - if (currentDynamicPixelBuffer == null) - { - currentDynamicPixelBuffer = new uint[texDims * texDims]; - textures[newData.texIndex].GetData(currentDynamicPixelBuffer, 0, texDims * texDims); - } - - for (int y = 0; y < glyphHeight; y++) - { - for (int x = 0; x < glyphWidth; x++) - { - byte byteColor = bitmap[x + y * glyphWidth]; - currentDynamicPixelBuffer[((int)currentDynamicAtlasCoords.X + x) + ((int)currentDynamicAtlasCoords.Y + y) * texDims] = (uint)(byteColor << 24 | 0x00ffffff); } - } - CrossThread.RequestExecutionOnMainThread(() => - { - textures[newData.texIndex].SetData(currentDynamicPixelBuffer); - }); - currentDynamicAtlasCoords.X += glyphWidth + 2; + uint glyphIndex = face.GetCharIndex(character); + if (glyphIndex == 0) { return; } + + face.SetPixelSizes(0, size); + face.LoadGlyph(glyphIndex, LoadFlags.Default, LoadTarget.Normal); + if (face.Glyph.Metrics.Width == 0 || face.Glyph.Metrics.Height == 0) + { + if (face.Glyph.Metrics.HorizontalAdvance > 0) + { + //glyph is empty, but char still applies advance + GlyphData blankData = new GlyphData(); + blankData.advance = (float)face.Glyph.Metrics.HorizontalAdvance; + blankData.texIndex = -1; //indicates no texture because the glyph is empty + texCoords.Add(character, blankData); + } + return; + } + + //stacktrace doesn't really work that well when RenderGlyph throws an exception + face.Glyph.RenderGlyph(RenderMode.Normal); + bitmap = (byte[])face.Glyph.Bitmap.BufferData.Clone(); + glyphWidth = face.Glyph.Bitmap.Width; + glyphHeight = bitmap.Length / glyphWidth; + horizontalAdvance = face.Glyph.Metrics.HorizontalAdvance; + drawOffset = new Vector2(face.Glyph.BitmapLeft, baseHeight * 14 / 10 - face.Glyph.BitmapTop); + + if (glyphWidth > texDims - 1 || glyphHeight > texDims - 1) + { + throw new Exception(filename + ", " + size.ToString() + ", " + (char)character + "; Glyph dimensions exceed texture atlas dimensions"); + } + + currentDynamicAtlasNextY = Math.Max(currentDynamicAtlasNextY, glyphHeight + 2); + if (currentDynamicAtlasCoords.X + glyphWidth + 2 > texDims - 1) + { + currentDynamicAtlasCoords.X = 0; + currentDynamicAtlasCoords.Y += currentDynamicAtlasNextY; + currentDynamicAtlasNextY = 0; + } + //no more room in current texture atlas, create a new one + if (currentDynamicAtlasCoords.Y + glyphHeight + 2 > texDims - 1) + { + currentDynamicAtlasCoords.X = 0; + currentDynamicAtlasCoords.Y = 0; + currentDynamicAtlasNextY = 0; + textures.Add(new Texture2D(gd, texDims, texDims, false, SurfaceFormat.Color)); + currentDynamicPixelBuffer = null; + } + + GlyphData newData = new GlyphData + { + advance = (float)horizontalAdvance, + texIndex = textures.Count - 1, + texCoords = new Rectangle((int)currentDynamicAtlasCoords.X, (int)currentDynamicAtlasCoords.Y, glyphWidth, glyphHeight), + drawOffset = drawOffset + }; + texCoords.Add(character, newData); + + if (currentDynamicPixelBuffer == null) + { + currentDynamicPixelBuffer = new uint[texDims * texDims]; + textures[newData.texIndex].GetData(currentDynamicPixelBuffer, 0, texDims * texDims); + } + + for (int y = 0; y < glyphHeight; y++) + { + for (int x = 0; x < glyphWidth; x++) + { + byte byteColor = bitmap[x + y * glyphWidth]; + currentDynamicPixelBuffer[((int)currentDynamicAtlasCoords.X + x) + ((int)currentDynamicAtlasCoords.Y + y) * texDims] = (uint)(byteColor << 24 | 0x00ffffff); + } + } + textures[newData.texIndex].SetData(currentDynamicPixelBuffer); + + currentDynamicAtlasCoords.X += glyphWidth + 2; + } } public void DrawString(SpriteBatch sb, string text, Vector2 position, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects se, float layerDepth) @@ -429,7 +434,7 @@ namespace Barotrauma } uint charIndex = text[i]; - if (DynamicLoading && !texCoords.ContainsKey(charIndex)) + if (DynamicLoading) { DynamicRenderAtlas(graphicsDevice, charIndex); } @@ -470,7 +475,7 @@ namespace Barotrauma } uint charIndex = text[i]; - if (DynamicLoading && !texCoords.ContainsKey(charIndex)) + if (DynamicLoading) { DynamicRenderAtlas(graphicsDevice, charIndex); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/ChatBox.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/ChatBox.cs index 33bf7ab64..e6dc30273 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/ChatBox.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/ChatBox.cs @@ -12,7 +12,8 @@ namespace Barotrauma { class ChatBox { - private static Sprite radioIcon; + public const string RadioChatString = "r; "; + private GUIListBox chatBox; private Point screenResolution; @@ -26,8 +27,8 @@ namespace Barotrauma get { return _toggleOpen; } set { - if (_toggleOpen == value) { return; } _toggleOpen = GameMain.Config.ChatOpen = value; + if (value) hideableElements.Visible = true; foreach (GUIComponent child in ToggleButton.Children) { child.SpriteEffects = _toggleOpen ? SpriteEffects.FlipHorizontally : SpriteEffects.None; @@ -65,11 +66,6 @@ namespace Barotrauma public ChatBox(GUIComponent parent, bool isSinglePlayer) { this.IsSinglePlayer = isSinglePlayer; - if (radioIcon == null) - { - radioIcon = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(527, 952, 38, 52), null); - radioIcon.Origin = radioIcon.size / 2; - } screenResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight); @@ -105,7 +101,7 @@ namespace Barotrauma //gui.Text = ""; }; - var chatSendButton = new GUIButton(new RectTransform(new Vector2(0.2f, 0.7f), InputBox.RectTransform, Anchor.CenterRight, scaleBasis: ScaleBasis.BothHeight), style: "GUIButtonToggleRight"); + var chatSendButton = new GUIButton(new RectTransform(new Vector2(1.0f, 0.7f), InputBox.RectTransform, Anchor.CenterRight, scaleBasis: ScaleBasis.BothHeight), style: "GUIButtonToggleRight"); chatSendButton.OnClicked += (GUIButton btn, object userdata) => { InputBox.OnEnterPressed(InputBox, InputBox.Text); @@ -339,7 +335,7 @@ namespace Barotrauma showNewMessagesButton.Visible = false; } - if (ToggleOpen || (InputBox != null && InputBox.Selected)) + if (ToggleOpen) { openState += deltaTime * 5.0f; //delete all popup messages when the chatbox is open diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/ComponentStyle.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/ComponentStyle.cs index 569346151..7da77c269 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/ComponentStyle.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/ComponentStyle.cs @@ -133,7 +133,16 @@ namespace Barotrauma case "size": break; default: - ChildStyles.Add(subElement.Name.ToString().ToLowerInvariant(), new GUIComponentStyle(subElement, style)); + string styleName = subElement.Name.ToString().ToLowerInvariant(); + if (ChildStyles.ContainsKey(styleName)) + { + DebugConsole.ThrowError("UI style \"" + element.Name.ToString() + "\" contains multiple child styles with the same name (\"" + styleName + "\")!"); + ChildStyles[styleName] = new GUIComponentStyle(subElement, style); + } + else + { + ChildStyles.Add(styleName, new GUIComponentStyle(subElement, style)); + } break; } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs index 8e0484b13..033c40afd 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs @@ -78,19 +78,26 @@ namespace Barotrauma public static readonly string[] rectComponentLabels = { "X", "Y", "W", "H" }; public static readonly string[] colorComponentLabels = { "R", "G", "B", "A" }; - public static float Scale - { - get { return (GameMain.GraphicsWidth / 1920.0f + GameMain.GraphicsHeight / 1080.0f) / 2.0f * GameSettings.HUDScale; } - } + public static Vector2 ReferenceResolution => new Vector2(1920f, 1080f); + public static float Scale => (GameMain.GraphicsWidth / ReferenceResolution.X + GameMain.GraphicsHeight / ReferenceResolution.Y) / 2.0f * GameSettings.HUDScale; + public static float xScale => GameMain.GraphicsWidth / ReferenceResolution.X * GameSettings.HUDScale; + public static float yScale => GameMain.GraphicsHeight / ReferenceResolution.Y * GameSettings.HUDScale; + public static float HorizontalAspectRatio => GameMain.GraphicsWidth / (float)GameMain.GraphicsHeight; + public static float VerticalAspectRatio => GameMain.GraphicsHeight / (float)GameMain.GraphicsWidth; + public static float RelativeHorizontalAspectRatio => HorizontalAspectRatio / (ReferenceResolution.X / ReferenceResolution.Y); + public static float RelativeVerticalAspectRatio => VerticalAspectRatio / (ReferenceResolution.Y / ReferenceResolution.X); - public static float xScale + public static float SlicedSpriteScale { - get { return GameMain.GraphicsWidth / 1920.0f * GameSettings.HUDScale; } - } - - public static float yScale - { - get { return GameMain.GraphicsHeight / 1080.0f * GameSettings.HUDScale; } + get + { + if (Math.Abs(1.0f - Scale) < 0.1f) + { + //don't scale if very close to the "reference resolution" + return 1.0f; + } + return Scale; + } } public static GUIStyle Style; @@ -106,7 +113,7 @@ namespace Barotrauma private static Sound[] sounds; private static bool pauseMenuOpen, settingsMenuOpen; public static GUIFrame PauseMenu { get; private set; } - private static Sprite arrow, lockIcon, checkmarkIcon, timerIcon; + private static Sprite arrow; public static bool HideCursor; @@ -155,21 +162,6 @@ namespace Barotrauma get { return arrow; } } - public static Sprite CheckmarkIcon - { - get { return checkmarkIcon; } - } - - public static Sprite LockIcon - { - get { return lockIcon; } - } - - public static Sprite TimerIcon - { - get { return timerIcon; } - } - public static Sprite InfoAreaBackground; public static bool SettingsMenuOpen @@ -263,13 +255,10 @@ namespace Barotrauma t.SetData(new Color[] { Color.White });// fill the texture with white }); - SubmarineIcon = new Sprite("Content/UI/IconAtlas.png", new Rectangle(452, 385, 182, 81), new Vector2(0.5f, 0.5f)); - arrow = new Sprite("Content/UI/IconAtlas.png", new Rectangle(392, 393, 49, 45), new Vector2(0.5f, 0.5f)); - SpeechBubbleIcon = new Sprite("Content/UI/IconAtlas.png", new Rectangle(385, 449, 66, 60), new Vector2(0.5f, 0.5f)); - BrokenIcon = new Sprite("Content/UI/IconAtlas.png", new Rectangle(898, 386, 123, 123), new Vector2(0.5f, 0.5f)); - lockIcon = new Sprite("Content/UI/UI_Atlas.png", new Rectangle(996, 677, 21, 25), new Vector2(0.5f, 0.5f)); - checkmarkIcon = new Sprite("Content/UI/UI_Atlas.png", new Rectangle(932, 398, 33, 28), new Vector2(0.5f, 0.5f)); - timerIcon = new Sprite("Content/UI/UI_Atlas.png", new Rectangle(997, 653, 18, 21), new Vector2(0.5f, 0.5f)); + SubmarineIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(452, 385, 182, 81), new Vector2(0.5f, 0.5f)); + arrow = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(392, 393, 49, 45), new Vector2(0.5f, 0.5f)); + SpeechBubbleIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(385, 449, 66, 60), new Vector2(0.5f, 0.5f)); + BrokenIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(898, 386, 123, 123), new Vector2(0.5f, 0.5f)); InfoAreaBackground = new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(290, 320, 400, 300), new Vector2(0.0f, 0.0f)); } @@ -300,17 +289,33 @@ namespace Barotrauma string line1 = "Barotrauma Unstable v" + GameMain.Version; string line2 = "(" + AssemblyInfo.GetBuildString() + ", branch " + AssemblyInfo.GetGitBranch() + ", revision " + AssemblyInfo.GetGitRevision() + ")"; + Rectangle watermarkRect = new Rectangle(-50, GameMain.GraphicsHeight - 80, 50 + (int)(Math.Max(LargeFont.MeasureString(line1).X, Font.MeasureString(line2).X) * 1.2f), 100); + float alpha = 1.0f; + + int yOffset = 0; + + if (Screen.Selected == GameMain.GameScreen) + { + yOffset = -HUDLayoutSettings.ChatBoxArea.Height; + watermarkRect.Y += yOffset; + } + + if (Screen.Selected == GameMain.GameScreen || Screen.Selected == GameMain.SubEditorScreen) + { + alpha = 0.2f; + } + Style.GetComponentStyle("OuterGlow").Sprites[GUIComponent.ComponentState.None][0].Draw( - spriteBatch, new Rectangle(-50, GameMain.GraphicsHeight - 80, 50 + (int)(Math.Max(LargeFont.MeasureString(line1).X, Font.MeasureString(line2).X) * 1.2f), 100), Color.Black * 0.8f); + spriteBatch, watermarkRect, Color.Black * 0.8f * alpha); LargeFont.DrawString(spriteBatch, line1, - new Vector2(10, GameMain.GraphicsHeight - 30 - LargeFont.MeasureString(line1).Y), Color.White * 0.6f); + new Vector2(10, GameMain.GraphicsHeight - 30 - LargeFont.MeasureString(line1).Y + yOffset), Color.White * 0.6f * alpha); Font.DrawString(spriteBatch, line2, - new Vector2(10, GameMain.GraphicsHeight - 30), Color.White * 0.6f); + new Vector2(10, GameMain.GraphicsHeight - 30 + yOffset), Color.White * 0.6f * alpha); if (Screen.Selected != GameMain.GameScreen) { var buttonRect = - new Rectangle(20 + (int)Math.Max(LargeFont.MeasureString(line1).X, Font.MeasureString(line2).X), GameMain.GraphicsHeight - (int)(45 * Scale), (int)(150 * Scale), (int)(40 * Scale)); + new Rectangle(20 + (int)Math.Max(LargeFont.MeasureString(line1).X, Font.MeasureString(line2).X), GameMain.GraphicsHeight - (int)(45 * Scale) + yOffset, (int)(150 * Scale), (int)(40 * Scale)); if (DrawButton(spriteBatch, buttonRect, "Report Bug", Style.GetComponentStyle("GUIBugButton").Color * 0.8f)) { GameMain.Instance.ShowBugReporter(); @@ -521,7 +526,7 @@ namespace Barotrauma spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: SamplerStateClamp, rasterizerState: GameMain.ScissorTestEnable); - var sprite = MouseCursorSprites[(int) MouseCursor]; + var sprite = MouseCursorSprites[(int) MouseCursor] ?? MouseCursorSprites[(int)CursorState.Default]; sprite.Draw(spriteBatch, PlayerInput.LatestMousePosition, Color.White, sprite.Origin, 0f, Scale / 1.5f); spriteBatch.End(); @@ -1761,6 +1766,18 @@ namespace Barotrauma //move the interfaces away from each other, in a random direction if they're at the same position Vector2 moveAmount = centerDiff == Point.Zero ? Rand.Vector(1.0f) : Vector2.Normalize(centerDiff.ToVector2()); + //if the horizontal move amount is much larger than vertical, only move horizontally + //(= attempt to place the elements side-by-side if they're more apart horizontally than vertically) + if (Math.Abs(moveAmount.X) > Math.Abs(moveAmount.Y) * 5.0f) + { + moveAmount.Y = 0.0f; + } + //same for the y-axis + else if (Math.Abs(moveAmount.Y) > Math.Abs(moveAmount.X) * 5.0f) + { + moveAmount.X = 0.0f; + } + //make sure we don't move the interfaces out of the screen Vector2 moveAmount1 = ClampMoveAmount(rect1, area, moveAmount * 20.0f * rect1Area / (rect1Area + rect2Area)); Vector2 moveAmount2 = ClampMoveAmount(rect2, area, -moveAmount * 20.0f * rect1Area / (rect1Area + rect2Area)); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs index 032830d2e..6e1b33015 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs @@ -656,18 +656,18 @@ namespace Barotrauma public static void DrawToolTip(SpriteBatch spriteBatch, string toolTip, Rectangle targetElement, List colorData = null) { - if (Tutorials.Tutorial.ContentRunning) return; + if (Tutorials.Tutorial.ContentRunning) { return; } int width = (int)(400 * GUI.Scale); int height = (int)(18 * GUI.Scale); - Point padding = new Point((int)(20 * GUI.Scale), (int)(7 * GUI.Scale)); + Point padding = new Point((int)(10 * GUI.Scale)); if (toolTipBlock == null || (string)toolTipBlock.userData != toolTip) { toolTipBlock = new GUITextBlock(new RectTransform(new Point(width, height), null), colorData, toolTip, font: GUI.SmallFont, wrap: true, style: "GUIToolTip"); toolTipBlock.RectTransform.NonScaledSize = new Point( - (int)(GUI.SmallFont.MeasureString(toolTipBlock.WrappedText).X + padding.X), - (int)(GUI.SmallFont.MeasureString(toolTipBlock.WrappedText).Y + padding.Y)); + (int)(GUI.SmallFont.MeasureString(toolTipBlock.WrappedText).X + padding.X + toolTipBlock.Padding.X + toolTipBlock.Padding.Z), + (int)(GUI.SmallFont.MeasureString(toolTipBlock.WrappedText).Y + padding.Y + toolTipBlock.Padding.Y + toolTipBlock.Padding.W)); toolTipBlock.userData = toolTip; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs index a0bbc100c..013c7513b 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs @@ -41,7 +41,17 @@ namespace Barotrauma private bool dimensionsNeedsRecalculation; // TODO: Define in styles? - private int scrollBarSize = 25; + private int ScrollBarSize + { + get + { + //use the average of the "desired" size and the scaled size + //scaling the bar linearly with the resolution tends to make them too large on large resolutions + float desiredSize = 25.0f; + float scaledSize = desiredSize * GUI.Scale; + return (int)((desiredSize + scaledSize) / 2.0f); + } + } public bool SelectMultiple; @@ -162,7 +172,7 @@ namespace Barotrauma /// Automatically hides the scroll bar when the content fits in. /// public bool AutoHideScrollBar { get; set; } = true; - + private bool IsScrollBarOnDefaultSide { get; set; } public bool CanDragElements { get; set; } = false; private GUIComponent draggedElement; @@ -171,7 +181,8 @@ namespace Barotrauma public GUIComponent DraggedElement => draggedElement; - public GUIListBox(RectTransform rectT, bool isHorizontal = false, Color? color = null, string style = "") : base(style, rectT) + /// For horizontal listbox, default side is on the bottom. For vertical, it's on the right. + public GUIListBox(RectTransform rectT, bool isHorizontal = false, Color? color = null, string style = "", bool isScrollBarOnDefaultSide = true) : base(style, rectT) { CanBeFocused = true; selected = new List(); @@ -196,20 +207,27 @@ namespace Barotrauma { this.color = color.Value; } + IsScrollBarOnDefaultSide = isScrollBarOnDefaultSide; Point size; Anchor anchor; if (isHorizontal) { - size = new Point((int)(Rect.Width - Padding.X - Padding.Z), (int)(scrollBarSize * GUI.Scale)); - anchor = Anchor.BottomCenter; + size = new Point((int)(Rect.Width - Padding.X - Padding.Z), (int)(ScrollBarSize * GUI.Scale)); + anchor = isScrollBarOnDefaultSide ? Anchor.BottomCenter : Anchor.TopCenter; } else { - size = new Point((int)(scrollBarSize * GUI.Scale), (int)(Rect.Height - Padding.Y - Padding.W)); - anchor = Anchor.CenterRight; + // TODO: Should this be multiplied by the GUI.Scale as well? + size = new Point(ScrollBarSize, (int)(Rect.Height - Padding.Y - Padding.W)); + anchor = isScrollBarOnDefaultSide ? Anchor.CenterRight : Anchor.CenterLeft; } - ScrollBar = new GUIScrollBar(new RectTransform(size, rectT, anchor) - { AbsoluteOffset = isHorizontal ? new Point(0, (int)Padding.W) : new Point((int)Padding.Z, 0) }, + ScrollBar = new GUIScrollBar( + new RectTransform(size, rectT, anchor) + { + AbsoluteOffset = isHorizontal ? + new Point(0, IsScrollBarOnDefaultSide ? (int)Padding.W : (int)Padding.Y) : + new Point(IsScrollBarOnDefaultSide ? (int)Padding.Z : (int)Padding.X, 0) + }, isHorizontal: isHorizontal); UpdateScrollBarSize(); Enabled = true; @@ -224,12 +242,15 @@ namespace Barotrauma dimensionsNeedsRecalculation = false; ContentBackground.RectTransform.Resize(Rect.Size); bool reduceScrollbarSize = KeepSpaceForScrollBar ? ScrollBarEnabled : ScrollBarVisible; - Point contentSize = reduceScrollbarSize ? CalculateFrameSize(ScrollBar.IsHorizontal, scrollBarSize) : Rect.Size; + Point contentSize = reduceScrollbarSize ? CalculateFrameSize(ScrollBar.IsHorizontal, ScrollBarSize) : Rect.Size; Content.RectTransform.Resize(new Point((int)(contentSize.X - Padding.X - Padding.Z), (int)(contentSize.Y - Padding.Y - Padding.W))); - Content.RectTransform.AbsoluteOffset = new Point((int)Padding.X, (int)Padding.Y); + if (!IsScrollBarOnDefaultSide) { Content.RectTransform.SetPosition(Anchor.BottomRight); } + Content.RectTransform.AbsoluteOffset = new Point( + IsScrollBarOnDefaultSide ? (int)Padding.X : (int)Padding.Z, + IsScrollBarOnDefaultSide ? (int)Padding.Y : (int)Padding.W); ScrollBar.RectTransform.Resize(ScrollBar.IsHorizontal ? - new Point((int)(Rect.Width - Padding.X - Padding.Z), (int)(scrollBarSize * GUI.Scale)) : - new Point((int)(scrollBarSize * GUI.Scale), (int)(Rect.Height - Padding.Y - Padding.W))); + new Point((int)(Rect.Width - Padding.X - Padding.Z), ScrollBarSize) : + new Point(ScrollBarSize, (int)(Rect.Height - Padding.Y - Padding.W))); ScrollBar.RectTransform.AbsoluteOffset = ScrollBar.IsHorizontal ? new Point(0, (int)Padding.W) : new Point((int)Padding.Z, 0); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs index d5ccc022b..983b32e6c 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs @@ -1,4 +1,5 @@ -using Microsoft.Xna.Framework; +using Barotrauma.Extensions; +using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; @@ -62,8 +63,8 @@ namespace Barotrauma public Color TextColorDark { get; private set; } = Color.Black * 0.9f; public Color TextColorDim { get; private set; } = Color.White * 0.6f; - public static Point ItemFrameMargin = new Point(50, 56); - public static Point ItemFrameOffset = new Point(0, 3); + public static Point ItemFrameMargin = new Point(50, 56).Multiply(GUI.SlicedSpriteScale); + public static Point ItemFrameOffset = new Point(0, 3).Multiply(GUI.SlicedSpriteScale); public GUIStyle(XElement element, GraphicsDevice graphicsDevice) { @@ -76,10 +77,17 @@ namespace Barotrauma switch (name) { case "cursor": - foreach (var children in subElement.Descendants()) + if (subElement.HasElements) { - var index = children.GetAttributeInt("state", (int) CursorState.Default); - CursorSprite[index] = new Sprite(children); + foreach (var children in subElement.Descendants()) + { + var index = children.GetAttributeInt("state", (int)CursorState.Default); + CursorSprite[index] = new Sprite(children); + } + } + else + { + CursorSprite[(int)CursorState.Default] = new Sprite(subElement); } break; case "green": diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBlock.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBlock.cs index 13ba4cbe6..37fd18873 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBlock.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBlock.cs @@ -85,7 +85,7 @@ namespace Barotrauma if (Text == newText) { return; } //reset scale, it gets recalculated in SetTextPos - if (autoScale) { textScale = 1.0f; } + if (autoScaleHorizontal || autoScaleVertical) { textScale = 1.0f; } text = newText; wrappedText = newText; @@ -132,19 +132,36 @@ namespace Barotrauma } } - private bool autoScale; + private bool autoScaleHorizontal, autoScaleVertical; /// - /// When enabled, the text is automatically scaled down to fit the textblock. + /// When enabled, the text is automatically scaled down to fit the textblock horizontally. /// - public bool AutoScale + public bool AutoScaleHorizontal { - get { return autoScale; } + get { return autoScaleHorizontal; } set { - if (autoScale == value) return; - autoScale = value; - if (autoScale) + if (autoScaleHorizontal == value) { return; } + autoScaleHorizontal = value; + if (autoScaleHorizontal) + { + SetTextPos(); + } + } + } + + /// + /// When enabled, the text is automatically scaled down to fit the textblock vertically. + /// + public bool AutoScaleVertical + { + get { return autoScaleVertical; } + set + { + if (autoScaleVertical == value) { return; } + autoScaleVertical = value; + if (autoScaleVertical) { SetTextPos(); } @@ -309,7 +326,7 @@ namespace Barotrauma public void SetTextPos() { - if (text == null) return; + if (text == null) { return; } censoredText = ""; for (int i = 0; i < text.Length; i++) @@ -337,12 +354,13 @@ namespace Barotrauma Vector2 minSize = new Vector2( Math.Max(rect.Width - padding.X - padding.Z, 5.0f), Math.Max(rect.Height - padding.Y - padding.W, 5.0f)); - if (autoScale && textScale > 0.1f && + if (!autoScaleHorizontal) { minSize.X = float.MaxValue; } + if (!Wrap && !autoScaleVertical) { minSize.Y = float.MaxValue; } + + if ((autoScaleHorizontal || autoScaleVertical) && textScale > 0.1f && (TextSize.X * textScale > minSize.X || TextSize.Y * textScale > minSize.Y)) { - TextScale = Math.Max(0.1f, Math.Min( - (rect.Width - padding.X - padding.Z) / TextSize.X, - (rect.Height - padding.Y - padding.W) / TextSize.Y)) - 0.01f; + TextScale = Math.Max(0.1f, Math.Min(minSize.X / TextSize.X, minSize.Y / TextSize.Y)) - 0.01f; return; } @@ -490,20 +508,30 @@ namespace Barotrauma /// /// Set the text scale of the GUITextBlocks so that they all use the same scale and can fit the text within the block. /// - public static void AutoScaleAndNormalize(IEnumerable textBlocks, float? defaultScale = null) + public static void AutoScaleAndNormalize(bool scaleHorizontal = true, bool scaleVertical = false, params GUITextBlock[] textBlocks) + { + AutoScaleAndNormalize(textBlocks.AsEnumerable(), scaleHorizontal, scaleVertical); + } + + /// + /// Set the text scale of the GUITextBlocks so that they all use the same scale and can fit the text within the block. + /// + public static void AutoScaleAndNormalize(IEnumerable textBlocks, bool scaleHorizontal = true, bool scaleVertical = false, float? defaultScale = null) { if (!textBlocks.Any()) { return; } float minScale = Math.Max(textBlocks.First().TextScale, 1.0f); foreach (GUITextBlock textBlock in textBlocks) { if (defaultScale.HasValue) { textBlock.TextScale = defaultScale.Value; } - textBlock.AutoScale = true; + textBlock.AutoScaleHorizontal = scaleHorizontal; + textBlock.AutoScaleVertical = scaleVertical; minScale = Math.Min(textBlock.TextScale, minScale); } foreach (GUITextBlock textBlock in textBlocks) { - textBlock.AutoScale = false; + textBlock.AutoScaleHorizontal = false; + textBlock.AutoScaleVertical = false; textBlock.TextScale = minScale; } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBox.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBox.cs index dbb21079c..185a3553e 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBox.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUITextBox.cs @@ -75,9 +75,8 @@ namespace Barotrauma set { textBlock.TextGetter = value; } } - // TODO: fix implicit hiding - private bool selected; - public bool Selected + private new bool selected; + public new bool Selected { get { @@ -457,13 +456,13 @@ namespace Barotrauma return currPosition != null ? currPosition.Item2 : textBlock.Text.Length; } - public void Select() + public void Select(int forcedCaretIndex = -1) { if (memento.Current == null) { memento.Store(Text); } - CaretIndex = GetCaretIndexFromScreenPos(PlayerInput.MousePosition); + CaretIndex = forcedCaretIndex == - 1 ? GetCaretIndexFromScreenPos(PlayerInput.MousePosition) : forcedCaretIndex; ClearSelection(); selected = true; GUI.KeyboardDispatcher.Subscriber = this; diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs index f8791c790..9e0a4c14f 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs @@ -30,10 +30,6 @@ namespace Barotrauma get; private set; } - public static Rectangle InventoryAreaUpper - { - get; private set; - } public static Rectangle CrewArea { @@ -110,7 +106,7 @@ namespace Barotrauma { Padding = (int)(10 * GUI.Scale); - if (inventoryTopY == 0) inventoryTopY = GameMain.GraphicsHeight; + if (inventoryTopY == 0) { inventoryTopY = GameMain.GraphicsHeight - 30; } //slice from the top of the screen for misc buttons (info, end round, server controls) ButtonAreaTop = new Rectangle(Padding, Padding, GameMain.GraphicsWidth - Padding * 2, (int)(50 * GUI.Scale)); @@ -124,7 +120,7 @@ namespace Barotrauma int healthBarHeight = (int)Math.Max(15f * GUI.Scale, 12.5f); int afflictionAreaHeight = (int)(50 * GUI.Scale); HealthBarAreaLeft = new Rectangle(PortraitArea.X, PortraitArea.Y + Padding / 2 + portraitSize, healthBarWidth, healthBarHeight); - AfflictionAreaLeft = new Rectangle(Padding, HealthBarAreaLeft.Y - afflictionAreaHeight - Padding, healthBarWidth, afflictionAreaHeight); + AfflictionAreaLeft = new Rectangle(PortraitArea.X, HealthBarAreaLeft.Y + healthBarHeight + Padding, healthBarWidth, afflictionAreaHeight); //HealthBarAreaRight = new Rectangle(Padding, GameMain.GraphicsHeight - healthBarHeight - Padding, healthBarWidth, healthBarHeight); /*if (HealthBarAreaRight.Y + healthBarHeight * 0.75f < PortraitArea.Y) @@ -136,14 +132,6 @@ namespace Barotrauma int messageAreaWidth = GameMain.GraphicsWidth / 3; MessageAreaTop = new Rectangle((GameMain.GraphicsWidth - messageAreaWidth) / 2, ButtonAreaTop.Bottom, messageAreaWidth, ButtonAreaTop.Height); - CrewArea = new Rectangle(HealthBarAreaLeft.Right + Padding, MessageAreaTop.Bottom + Padding, - GameMain.GraphicsWidth - HealthBarAreaLeft.Right - 2 * Padding, (int)(0.6f * portraitSize)); - - //slice for the upper slots of the inventory (clothes, id card, headset) - int inventoryAreaUpperWidth = (int)(GameMain.GraphicsWidth * 0.2f); - int inventoryAreaUpperHeight = (int)(GameMain.GraphicsHeight * 0.2f); - InventoryAreaUpper = new Rectangle(GameMain.GraphicsWidth - inventoryAreaUpperWidth - Padding, CrewArea.Y, inventoryAreaUpperWidth, inventoryAreaUpperHeight); - int toggleButtonWidth = (int)(ChatBox.ToggleButtonWidthRaw * GUI.Scale); int chatBoxWidth = (int)(475 * GUI.Scale); int chatBoxHeight = (int)Math.Max(GameMain.GraphicsHeight * 0.22f, 150); @@ -153,8 +141,11 @@ namespace Barotrauma int objectiveAnchorOffsetY = (int)(150 * GUI.Scale); ObjectiveAnchor = new Rectangle(Padding, ChatBoxArea.Y - objectiveAnchorOffsetY, objectiveAnchorWidth, 0); - int lowerAreaHeight = (int)Math.Min(GameMain.GraphicsHeight * 0.25f, 280); - InventoryAreaLower = new Rectangle(Padding, GameMain.GraphicsHeight - lowerAreaHeight, GameMain.GraphicsWidth - Padding * 2, lowerAreaHeight); + var crewAreaY = AfflictionAreaLeft.Bottom + Padding; + var crewAreaHeight = ObjectiveAnchor.Top - Padding - crewAreaY; + CrewArea = new Rectangle(Padding, crewAreaY, (int)Math.Max(400 * GUI.Scale, 400), crewAreaHeight); + + InventoryAreaLower = new Rectangle(Padding, inventoryTopY, GameMain.GraphicsWidth - Padding * 2, GameMain.GraphicsHeight - inventoryTopY); int healthWindowWidth = (int)(GameMain.GraphicsWidth * 0.5f); int healthWindowHeight = (int)(GameMain.GraphicsWidth * 0.5f * 0.65f); @@ -168,7 +159,6 @@ namespace Barotrauma { GUI.DrawRectangle(spriteBatch, ButtonAreaTop, Color.White * 0.5f); GUI.DrawRectangle(spriteBatch, MessageAreaTop, GUI.Style.Orange * 0.5f); - GUI.DrawRectangle(spriteBatch, InventoryAreaUpper, Color.Yellow * 0.5f); GUI.DrawRectangle(spriteBatch, CrewArea, Color.Blue * 0.5f); GUI.DrawRectangle(spriteBatch, ChatBoxArea, Color.Cyan * 0.5f); GUI.DrawRectangle(spriteBatch, HealthBarAreaLeft, Color.Red * 0.5f); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/RectTransform.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/RectTransform.cs index 2745a3ee1..0049ea9e5 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/RectTransform.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/RectTransform.cs @@ -293,10 +293,15 @@ namespace Barotrauma } } + private ScaleBasis _scaleBasis; public ScaleBasis ScaleBasis { - get; - private set; + get { return _scaleBasis; } + set + { + _scaleBasis = value; + RecalculateAbsoluteSize(); + } } public bool IsLastChild @@ -336,7 +341,7 @@ namespace Barotrauma public RectTransform(Vector2 relativeSize, RectTransform parent, Anchor anchor = Anchor.TopLeft, Pivot? pivot = null, Point? minSize = null, Point? maxSize = null, ScaleBasis scaleBasis = ScaleBasis.Normal) { Init(parent, anchor, pivot); - this.ScaleBasis = scaleBasis; + _scaleBasis = scaleBasis; this.relativeSize = relativeSize; this.minSize = minSize; this.maxSize = maxSize; @@ -348,19 +353,23 @@ namespace Barotrauma } /// - /// By default, elements defined with an absolute size (in pixels), will be treated as fixed sized. - /// This can be changed by setting IsFixedSize to false. + /// By default, elements defined with an absolute size (in pixels) will scale with the parent. + /// This can be changed by setting IsFixedSize to true. /// - public RectTransform(Point absoluteSize, RectTransform parent = null, Anchor anchor = Anchor.TopLeft, Pivot? pivot = null) + public RectTransform(Point absoluteSize, RectTransform parent = null, Anchor anchor = Anchor.TopLeft, Pivot? pivot = null, ScaleBasis scaleBasis = ScaleBasis.Normal, bool isFixedSize = false) { Init(parent, anchor, pivot); - this.ScaleBasis = ScaleBasis.Normal; + _scaleBasis = scaleBasis; this.nonScaledSize = absoluteSize; RecalculateScale(); - RecalculateRelativeSize(); + RecalculateRelativeSize(); + if (scaleBasis != ScaleBasis.Normal) + { + RecalculateAbsoluteSize(); + } RecalculateAnchorPoint(); RecalculatePivotOffset(); - IsFixedSize = true; + IsFixedSize = isFixedSize; parent?.ChildrenChanged?.Invoke(this); } @@ -370,6 +379,7 @@ namespace Barotrauma Enum.TryParse(element.GetAttributeString("pivot", anchor.ToString()), out Pivot pivot); Point? minSize = null, maxSize = null; + ScaleBasis scaleBasis = ScaleBasis.Normal; if (element.Attribute("minsize") != null) { minSize = element.GetAttributePoint("minsize", Point.Zero); @@ -378,11 +388,15 @@ namespace Barotrauma { maxSize = element.GetAttributePoint("maxsize", new Point(1000, 1000)); } - + string sb = element.GetAttributeString("scalebasis", null); + if (sb != null) + { + Enum.TryParse(sb, ignoreCase: true, out scaleBasis); + } RectTransform rectTransform; if (element.Attribute("absolutesize") != null) { - rectTransform = new RectTransform(element.GetAttributePoint("absolutesize", new Point(1000, 1000)), parent, anchor, pivot) + rectTransform = new RectTransform(element.GetAttributePoint("absolutesize", new Point(1000, 1000)), parent, anchor, pivot, scaleBasis) { minSize = minSize, maxSize = maxSize @@ -390,7 +404,7 @@ namespace Barotrauma } else { - rectTransform = new RectTransform(element.GetAttributeVector2("relativesize", Vector2.One), parent, anchor, pivot, minSize, maxSize); + rectTransform = new RectTransform(element.GetAttributeVector2("relativesize", Vector2.One), parent, anchor, pivot, minSize, maxSize, scaleBasis); } rectTransform.RelativeOffset = element.GetAttributeVector2("relativeoffset", Vector2.Zero); rectTransform.AbsoluteOffset = element.GetAttributePoint("absoluteoffset", Point.Zero); @@ -438,37 +452,37 @@ namespace Barotrauma protected void RecalculateAbsoluteSize() { Point size = NonScaledParentRect.Size; - if (ScaleBasis == ScaleBasis.BothWidth) + switch (ScaleBasis) { - size.Y = size.X; - } - else if (ScaleBasis == ScaleBasis.BothHeight) - { - size.X = size.Y; - } - else if (ScaleBasis == ScaleBasis.Smallest) - { - if (size.X < size.Y) - { + case ScaleBasis.BothWidth: size.Y = size.X; - } - else - { + break; + case ScaleBasis.BothHeight: size.X = size.Y; - } + break; + case ScaleBasis.Smallest: + if (size.X < size.Y) + { + size.Y = size.X; + } + else + { + size.X = size.Y; + } + break; + case ScaleBasis.Largest: + if (size.X > size.Y) + { + size.Y = size.X; + } + else + { + size.X = size.Y; + } + break; } - else if (ScaleBasis == ScaleBasis.Largest) - { - if (size.X > size.Y) - { - size.Y = size.X; - } - else - { - size.X = size.Y; - } - } - nonScaledSize = size.Multiply(RelativeSize).Clamp(MinSize, MaxSize); + size = size.Multiply(RelativeSize); + nonScaledSize = size.Clamp(MinSize, MaxSize); recalculateRect = true; SizeChanged?.Invoke(); } @@ -684,6 +698,44 @@ namespace Barotrauma children[i].GUIComponent.AddToGUIUpdateList(ignoreChildren, order); } } + + public void MatchPivotToAnchor() => MatchPivotToAnchor(Anchor); + + public void MoveOverTime(Point targetPos, float duration) + { + CoroutineManager.StartCoroutine(DoMoveAnimation(targetPos, duration)); + } + public void ScaleOverTime(Point targetSize, float duration) + { + CoroutineManager.StartCoroutine(DoScaleAnimation(targetSize, duration)); + } + + private IEnumerable DoMoveAnimation(Point targetPos, float duration) + { + Vector2 startPos = AbsoluteOffset.ToVector2(); + float t = 0.0f; + while (t < duration && duration > 0.0f) + { + t += CoroutineManager.DeltaTime; + AbsoluteOffset = Vector2.SmoothStep(startPos, targetPos.ToVector2(), t / duration).ToPoint(); + yield return CoroutineStatus.Running; + } + AbsoluteOffset = targetPos; + yield return CoroutineStatus.Success; + } + private IEnumerable DoScaleAnimation(Point targetSize, float duration) + { + Vector2 startSize = NonScaledSize.ToVector2(); + float t = 0.0f; + while (t < duration && duration > 0.0f) + { + t += CoroutineManager.DeltaTime; + NonScaledSize = Vector2.SmoothStep(startSize, targetSize.ToVector2(), t / duration).ToPoint(); + yield return CoroutineStatus.Running; + } + NonScaledSize = targetSize; + yield return CoroutineStatus.Success; + } #endregion #region Static methods diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs index 8fdc01a25..3d7f9c843 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs @@ -101,10 +101,9 @@ namespace Barotrauma Vector2 scale = Vector2.One; scale.Y = MathHelper.Clamp((float)rect.Height / (Slices[0].Height + Slices[6].Height), 0, 1); - scale.X = MathHelper.Clamp((float)rect.Width / (Slices[0].Width + Slices[2].Width), 0, 1); - scale.X = scale.Y = Math.Min(scale.X, scale.Y); + scale.X = scale.Y = Math.Min(Math.Min(scale.X, scale.Y), GUI.SlicedSpriteScale); int centerHeight = rect.Height - (int)((Slices[0].Height + Slices[6].Height) * scale.Y); int centerWidth = rect.Width - (int)((Slices[0].Width + Slices[2].Width) * scale.X); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/VideoPlayer.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/VideoPlayer.cs index fdb531895..63f966936 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/VideoPlayer.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/VideoPlayer.cs @@ -20,7 +20,7 @@ namespace Barotrauma private GUICustomComponent videoView; private GUIButton okButton; - private Color backgroundColor = new Color(0f, 0f, 0f, 1f); + private Color backgroundColor = new Color(0f, 0f, 0f, 0.8f); private Action callbackOnStop; private Point scaledVideoResolution; @@ -62,8 +62,8 @@ namespace Barotrauma int width = scaledVideoResolution.X; int height = scaledVideoResolution.Y; - background = new GUIFrame(new RectTransform(Point.Zero, GUI.Canvas, Anchor.Center), "InnerFrame", backgroundColor); - videoFrame = new GUIFrame(new RectTransform(Point.Zero, background.RectTransform, Anchor.Center, Pivot.Center), "SonarFrame"); + background = new GUIFrame(new RectTransform(Point.Zero, GUI.Canvas, Anchor.Center), style: null, color: backgroundColor); + videoFrame = new GUIFrame(new RectTransform(Point.Zero, background.RectTransform, Anchor.Center, Pivot.Center), style: "InnerFrame"); if (useTextOnRightSide) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs b/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs index eb4e8b326..a0df47916 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs @@ -480,6 +480,7 @@ namespace Barotrauma LevelGenerationParams.LoadPresets(); ScriptedEventSet.LoadPrefabs(); AfflictionPrefab.LoadAll(GetFilesOfType(ContentType.Afflictions)); + SkillSettings.Load(GetFilesOfType(ContentType.SkillSettings)); TitleScreen.LoadState = 50.0f; yield return CoroutineStatus.Running; diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs index c01beeae5..3a3635029 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs @@ -29,8 +29,7 @@ namespace Barotrauma private GUIFrame guiFrame; private GUIFrame crewArea; - private GUILayoutGroup activeCrew; - private GUIFrame crewList; + private GUIListBox crewList; private GUIButton toggleCrewButton; private float crewListOpenState; private bool toggleCrewListOpen = true; @@ -51,12 +50,15 @@ namespace Barotrauma { if (toggleCrewListOpen == value) { return; } toggleCrewListOpen = GameMain.Config.CrewMenuOpen = value; + toggleCrewButton.Children.ForEach(c => c.SpriteEffects = toggleCrewListOpen ? SpriteEffects.None : SpriteEffects.FlipHorizontally); } } + const float CommandNodeAnimDuration = 0.2f; + public List OrderOptionButtons = new List(); - private Sprite jobIndicatorBackground; + private Sprite jobIndicatorBackground, previousOrderArrow; #endregion @@ -87,16 +89,30 @@ namespace Barotrauma CanBeFocused = false }; - crewArea = new GUIFrame(HUDLayoutSettings.ToRectTransform(HUDLayoutSettings.CrewArea, guiFrame.RectTransform), "", Color.Transparent) + var crewAreaWithButtons = new GUIFrame( + HUDLayoutSettings.ToRectTransform(HUDLayoutSettings.CrewArea, guiFrame.RectTransform), + style: null, + color: Color.Transparent) { CanBeFocused = false }; - // Based on the sprite dimensions - var buttonSize = new Point((int)(79.0f / 126.0f * crewArea.Rect.Height), crewArea.Rect.Height); + var buttonHeight = (int)(GUI.Scale * 40); + crewArea = new GUIFrame( + new RectTransform( + new Point(crewAreaWithButtons.Rect.Width, crewAreaWithButtons.Rect.Height - 3 * buttonHeight - 2 * HUDLayoutSettings.Padding), + crewAreaWithButtons.RectTransform, + Anchor.BottomLeft), + style: null, + color: Color.Transparent) + { + CanBeFocused = false + }; + + var buttonSize = new Point((int)(79.0f / 126.0f * (2 * buttonHeight)), 2 * buttonHeight); var commandButton = new GUIButton( - new RectTransform(buttonSize, parent: crewArea.RectTransform, anchor: Anchor.CenterRight), + new RectTransform(buttonSize, parent: crewAreaWithButtons.RectTransform), style: null) { OnClicked = (button, userData) => @@ -107,7 +123,7 @@ namespace Barotrauma }; new GUIImage( - new RectTransform(Vector2.One, parent: commandButton.RectTransform), + new RectTransform(Vector2.One, commandButton.RectTransform), new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(551, 1, 79, 126)), scaleToFit: true) { @@ -118,69 +134,36 @@ namespace Barotrauma ToolTip = TextManager.Get("inputtype.command") }; - activeCrew = new GUILayoutGroup( - new RectTransform( - new Point(crewArea.Rect.Width - commandButton.Rect.Width - HUDLayoutSettings.Padding, crewArea.Rect.Height), - parent: crewArea.RectTransform, - anchor: Anchor.CenterLeft), - isHorizontal: true, - childAnchor: Anchor.CenterRight) - { - AbsoluteSpacing = (int)(GUI.Scale * 5) - }; - // AbsoluteOffset is set in UpdateProjectSpecific based on crewListOpenState - crewList = new GUIFrame( + crewList = new GUIListBox( new RectTransform( - new Point( - Math.Min(crewArea.Rect.Height * 10, 500), - Math.Min(crewArea.Rect.Height * 8, 400)), - parent: crewArea.RectTransform, - anchor: Anchor.BottomRight, - pivot: Pivot.TopCenter)); - - var listBox = new GUIListBox( - new RectTransform( - new Point((int)(crewList.Rect.Width / 2.0f - HUDLayoutSettings.Padding * 2), crewList.Rect.Height - HUDLayoutSettings.Padding * 4), - parent: crewList.RectTransform, - anchor: Anchor.CenterLeft) - { - AbsoluteOffset = new Point(HUDLayoutSettings.Padding * 2, 0), - }, - style: null) + Vector2.One, + crewArea.RectTransform), + style: null, + isScrollBarOnDefaultSide: false) { AutoHideScrollBar = false, Spacing = (int)(GUI.Scale * 10) }; - // Based on the sprite dimensions - buttonSize = new Point((int)(78.0f / 126.0f * crewArea.Rect.Height), crewArea.Rect.Height); - toggleCrewButton = new GUIButton( - new RectTransform(buttonSize, parent: crewList.RectTransform, pivot: Pivot.TopRight) + new RectTransform( + new Point(buttonHeight), + parent: crewAreaWithButtons.RectTransform) { - AbsoluteOffset = new Point(-HUDLayoutSettings.Padding, 0) + AbsoluteOffset = new Point(0, 2 * buttonHeight + HUDLayoutSettings.Padding) }, - style: null); - toggleCrewButton.OnClicked = (GUIButton btn, object userdata) => + style: "UIToggleButton") { - ToggleCrewListOpen = !ToggleCrewListOpen; - return true; - }; - - new GUIImage( - new RectTransform(Vector2.One, parent: toggleCrewButton.RectTransform), - new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(891, 135, 78, 126)), - scaleToFit: true) - { - Color = GUIColorSettings.InventorySlotColor * 0.8f, - HoverColor = GUIColorSettings.InventorySlotColor, - PressedColor = GUIColorSettings.InventorySlotColor, - SelectedColor = GUIColorSettings.InventorySlotColor * 0.8f, - ToolTip = TextManager.Get("crew") + OnClicked = (GUIButton btn, object userdata) => + { + ToggleCrewListOpen = !ToggleCrewListOpen; + return true; + } }; jobIndicatorBackground = new Sprite("Content/UI/CommandUIAtlas.png", new Rectangle(0, 512, 128, 128)); + previousOrderArrow = new Sprite("Content/UI/CommandUIAtlas.png", new Rectangle(128, 512, 128, 128)); #region Chatbox @@ -381,37 +364,84 @@ namespace Barotrauma characterInfos.Remove(characterInfo); } - private GUIComponent AddCharacterToActiveCrew(Character character) + private void AddCharacterToCrewList(Character character) { - int size = HUDLayoutSettings.CrewArea.Height; - int iconSize = (int)(size * 0.9f); - - var characterFrame = new GUIFrame(new RectTransform(new Point(size), activeCrew.RectTransform, Anchor.Center), style: null) + int width = crewList.Content.Rect.Width - HUDLayoutSettings.Padding; + int height = Math.Max(45, (int)((1.0f / 8.0f) * width)); + Color backgroundColor = new Color(36, 37, 34) * 0.8f; + var characterButton = new GUIButton(new RectTransform(new Point(width, height), parent: crewList.Content.RectTransform, anchor: Anchor.TopRight), style: null, color: backgroundColor) { - UserData = character, - CanBeFocused = false + UserData = character }; + characterButton.HoverColor = backgroundColor; + characterButton.PressedColor = backgroundColor; + characterButton.SelectedColor = backgroundColor; - var characterToolTip = character.Info?.Name; - if (character.Info?.Job != null) + if (IsSinglePlayer) { - characterToolTip += " (" + character.Info.Job?.Name + ")"; + characterButton.OnClicked = CharacterClicked; } - var tooltipColor = character.Info?.Job.Prefab?.UIColor; - var tooltipColorData = tooltipColor != null ? new List() { new ColorData() { Color = (Color)tooltipColor, EndIndex = characterToolTip.Length } } : null; - - var characterButton = new GUIButton(new RectTransform(Vector2.One, characterFrame.RectTransform, Anchor.Center), style: null) + else { - UserData = character, - ToolTip = characterToolTip, - TooltipColorData = tooltipColorData + characterButton.CanBeSelected = false; + } + + var iconRelativeSize = (float)height / characterButton.Rect.Width; + + var layoutGroup = new GUILayoutGroup( + new RectTransform(Vector2.One, parent: characterButton.RectTransform), + isHorizontal: true, + childAnchor: Anchor.CenterLeft) + { + RelativeSpacing = 0.1f * iconRelativeSize, + UserData = character }; - #region Sound Icon + var jobIconBackground = new GUIImage( + new RectTransform(new Vector2(iconRelativeSize, 0.9f), layoutGroup.RectTransform), + jobIndicatorBackground, + scaleToFit: true) + { + CanBeFocused = false, + UserData = "job" + }; + + if (character?.Info?.Job.Prefab?.Icon != null) + { + new GUIImage( + new RectTransform(Vector2.One, jobIconBackground.RectTransform), + character.Info.Job.Prefab.Icon, + scaleToFit: true) + { + CanBeFocused = false, + Color = character.Info.Job.Prefab.UIColor, + HoverColor = character.Info.Job.Prefab.UIColor, + PressedColor = character.Info.Job.Prefab.UIColor, + SelectedColor = character.Info.Job.Prefab.UIColor + }; + } + + new GUITextBlock( + new RectTransform( + new Vector2(1.0f - 4.5f * iconRelativeSize - 5 * layoutGroup.RelativeSpacing, 1.0f), + layoutGroup.RectTransform), + character.Name, + textColor: character.Info?.Job?.Prefab?.UIColor) + { + OverflowClip = true + }; new GUIImage( - new RectTransform(new Vector2(0.4f), characterFrame.RectTransform, anchor: Anchor.TopRight), - sprite: GUI.Style.GetComponentStyle("GUISoundIcon").Sprites[GUIComponent.ComponentState.None].FirstOrDefault().Sprite, + new RectTransform(new Vector2(0.5f * iconRelativeSize, 0.5f), layoutGroup.RectTransform), + style: "VerticalLine"); + + var soundIcons = new GUIFrame(new RectTransform(new Vector2(iconRelativeSize, 0.8f), layoutGroup.RectTransform), style: null) + { + UserData = "soundicons" + }; + new GUIImage( + new RectTransform(Vector2.One, soundIcons.RectTransform), + GUI.Style.GetComponentStyle("GUISoundIcon").Sprites[GUIComponent.ComponentState.None].FirstOrDefault().Sprite, scaleToFit: true) { UserData = new Pair("soundicon", 0.0f), @@ -419,126 +449,14 @@ namespace Barotrauma Visible = true }; new GUIImage( - new RectTransform(new Vector2(0.5f), characterFrame.RectTransform, anchor: Anchor.TopRight), - "GUISoundIconDisabled") + new RectTransform(Vector2.One, soundIcons.RectTransform), + "GUISoundIconDisabled", + scaleToFit: true) { UserData = "soundicondisabled", CanBeFocused = true, Visible = false }; - - #endregion - - if (IsSinglePlayer) - { - characterButton.OnClicked = CharacterClicked; - } - else - { - characterButton.CanBeSelected = false; - } - - new GUICustomComponent( - new RectTransform(new Point(iconSize), parent: characterFrame.RectTransform, anchor: Anchor.Center), - onDraw: (sb, component) => character.Info.DrawIcon(sb, component.Rect.Center.ToVector2(), targetAreaSize: component.Rect.Size.ToVector2())) - { - CanBeFocused = false, - HoverColor = Color.White, - SelectedColor = Color.White, - ToolTip = characterToolTip, - TooltipColorData = tooltipColorData - }; - - if (character?.Info?.Job.Prefab?.Icon != null) - { - new GUIImage( - new RectTransform(new Vector2(0.5f), characterFrame.RectTransform, anchor: Anchor.BottomLeft), - jobIndicatorBackground, - scaleToFit: true) - { - CanBeFocused = false - }; - new GUIImage( - new RectTransform(new Vector2(0.5f), characterFrame.RectTransform, anchor: Anchor.BottomLeft), - character.Info.Job.Prefab.Icon, - scaleToFit: true) - { - CanBeFocused = false, - Color = character.Info.Job.Prefab.UIColor, - ToolTip = characterToolTip, - TooltipColorData = tooltipColorData - }; - } - - #region Combat Mission - /*if (GameMain.GameSession?.GameMode?.Mission is CombatMission combatMission) - { - new GUIFrame(new RectTransform(Vector2.One, characterArea.RectTransform), style: "InnerGlow", - color: character.TeamID == Character.TeamType.Team1 ? Color.SteelBlue : Color.OrangeRed); - }*/ - #endregion - - return characterFrame; - } - - private void AddCharacterToCrewList(Character character) - { - GUIListBox listBox = (GUIListBox)crewList.FindChild(c => c is GUIListBox); - int height = Math.Min(crewArea.Rect.Height, (int)(listBox.Content.Rect.Width * 0.3f)); - var characterButton = new GUIButton(new RectTransform(new Point(listBox.Content.Rect.Width, height), parent: listBox.Content.RectTransform), style: null) - { - UserData = character - }; - - if (IsSinglePlayer) - { - characterButton.OnClicked = CharacterClicked; - } - else - { - characterButton.CanBeSelected = false; - } - - var characterIcon = new GUICustomComponent( - new RectTransform( - new Point(height), - parent: characterButton.RectTransform, - anchor: Anchor.CenterLeft), - onDraw: (sb, component) => character.Info.DrawIcon(sb, component.Rect.Center.ToVector2(), targetAreaSize: component.Rect.Size.ToVector2())) - { - CanBeFocused = false, - HoverColor = Color.White, - SelectedColor = Color.White - }; - - if (character?.Info?.Job.Prefab?.Icon != null) - { - new GUIImage( - new RectTransform(new Vector2(0.5f), characterIcon.RectTransform, anchor: Anchor.BottomLeft, pivot: Pivot.BottomLeft), - jobIndicatorBackground, - scaleToFit: true) - { - CanBeFocused = false - }; - new GUIImage( - new RectTransform(new Vector2(0.5f), characterIcon.RectTransform, anchor: Anchor.BottomLeft, pivot: Pivot.BottomLeft), - character.Info.Job.Prefab.Icon, - scaleToFit: true) - { - CanBeFocused = false, - Color = character.Info.Job.Prefab.UIColor - }; - } - - new GUITextBlock( - new RectTransform(new Point(characterButton.Rect.Width - characterIcon.Rect.Width, height), characterButton.RectTransform, anchor: Anchor.CenterRight) - { - AbsoluteOffset = new Point(HUDLayoutSettings.Padding, 0) - }, - character.Name + "\n" + character.Info?.Job?.Name, - textColor: character.Info?.Job?.Prefab?.UIColor); - - GUITextBlock.AutoScaleAndNormalize(listBox.Content.GetAllChildren(), defaultScale: 1.0f); } /// @@ -548,32 +466,26 @@ namespace Barotrauma { if (!AllowCharacterSwitch) { return false; } Character character = selection as Character; - if (character == null || character.IsDead || character.IsUnconscious) return false; + if (character == null || character.IsDead || character.IsUnconscious) { return false; } SelectCharacter(character); + if (GUI.KeyboardDispatcher.Subscriber == crewList) { GUI.KeyboardDispatcher.Subscriber = null; } return true; } public void ReviveCharacter(Character revivedCharacter) { - if (activeCrew.GetChildByUserData(revivedCharacter) is GUIComponent characterBlock) + if (crewList.Content.GetChildByUserData(revivedCharacter) is GUIComponent characterComponent) { - characterBlock.Parent.RemoveChild(characterBlock); + crewList.Content.RemoveChild(characterComponent); } - if (characterInfos.Contains(revivedCharacter.Info)) AddCharacter(revivedCharacter); + if (characterInfos.Contains(revivedCharacter.Info)) { AddCharacter(revivedCharacter); } } public void KillCharacter(Character killedCharacter) { - if (activeCrew.GetChildByUserData(killedCharacter) is GUIComponent characterBlock) + if (crewList.Content.GetChildByUserData(killedCharacter) is GUIComponent characterComponent) { - CoroutineManager.StartCoroutine(KillCharacterAnim(characterBlock)); - } - else if (crewList.FindChild(c => c is GUIListBox) is GUIListBox listBox && - listBox.Content.GetChildByUserData(killedCharacter) is GUIComponent characterComponent) - { - listBox.Content.RemoveChild(characterComponent); - GUITextBlock.AutoScaleAndNormalize(listBox.Content.GetAllChildren(), defaultScale: 1.0f); - listBox.UpdateScrollBarSize(); + CoroutineManager.StartCoroutine(KillCharacterAnim(characterComponent)); } RemoveCharacter(killedCharacter); } @@ -584,9 +496,7 @@ namespace Barotrauma components.Add(component); components.RemoveAll(c => c.UserData is Pair pair && pair.First == "soundicon" || - c.UserData as string == "soundicondisabled" || - c is GUIButton || c is GUIFrame); - + c.UserData as string == "soundicondisabled"); components.ForEach(c => c.Color = Color.DarkRed); yield return new WaitForSeconds(1.0f); @@ -598,19 +508,15 @@ namespace Barotrauma foreach (GUIComponent comp in components) { comp.Color = Color.Lerp(Color.DarkRed, Color.Transparent, timer / hideDuration); - comp.RectTransform.LocalScale = new Vector2(1.0f - (timer / hideDuration), comp.RectTransform.LocalScale.Y); + comp.RectTransform.LocalScale = new Vector2(comp.RectTransform.LocalScale.X, 1.0f - (timer / hideDuration)); } timer += CoroutineManager.DeltaTime; yield return CoroutineStatus.Running; } - activeCrew.RemoveChild(component); - activeCrew.Recalculate(); - var list = (GUIListBox)crewList.FindChild(c => c is GUIListBox); - var crewListComponent = list.Content.GetChildByUserData(component.UserData); - list.Content.RemoveChild(crewListComponent); - GUITextBlock.AutoScaleAndNormalize(list.Content.GetAllChildren(), defaultScale: 1.0f); - list.UpdateScrollBarSize(); + crewList.Content.RemoveChild(component); + // GUITextBlock.AutoScaleAndNormalize(list.Content.GetAllChildren(), defaultScale: 1.0f); + crewList.UpdateScrollBarSize(); yield return CoroutineStatus.Success; } @@ -671,15 +577,18 @@ namespace Barotrauma { if (client?.Character == null) { return; } - var playerFrame = activeCrew.GetChildByUserData(client.Character) ?? AddCharacterToActiveCrew(client.Character); + var playerFrame = crewList.Content.GetChildByUserData(client.Character); if (playerFrame == null) { return; } - var soundIcon = playerFrame.FindChild(c => c.UserData is Pair pair && pair.First == "soundicon"); - var soundIconDisabled = playerFrame.FindChild("soundicondisabled"); - soundIcon.Visible = !muted && !mutedLocally; - soundIconDisabled.Visible = muted || mutedLocally; - soundIconDisabled.ToolTip = TextManager.Get(mutedLocally ? "MutedLocally" : "MutedGlobally"); + if (playerFrame.FindChild(c => c is GUILayoutGroup).GetChildByUserData("soundicons") is GUIComponent soundIcons) + { + var soundIcon = soundIcons.FindChild(c => c.UserData is Pair pair && pair.First == "soundicon"); + var soundIconDisabled = soundIcons.FindChild("soundicondisabled"); + soundIcon.Visible = !muted && !mutedLocally; + soundIconDisabled.Visible = muted || mutedLocally; + soundIconDisabled.ToolTip = TextManager.Get(mutedLocally ? "MutedLocally" : "MutedGlobally"); + } } public void SetClientSpeaking(Client client) @@ -689,18 +598,15 @@ namespace Barotrauma public void SetCharacterSpeaking(Character character) { - var playerFrame = activeCrew.GetChildByUserData(character); - if (playerFrame == null && character != Character.Controlled) + if (crewList.Content.GetChildByUserData(character)? + .FindChild(c => c is GUILayoutGroup)? + .GetChildByUserData("soundicons")? + .FindChild(c => c.UserData is Pair pair && pair.First == "soundicon") is GUIComponent soundIcon) { - playerFrame = AddCharacterToActiveCrew(character); + soundIcon.Color = Color.White; + Pair userdata = soundIcon.UserData as Pair; + userdata.Second = 1.0f; } - - if (playerFrame == null) { return; } - - var soundIcon = playerFrame.FindChild(c => c.UserData is Pair pair && pair.First == "soundicon"); - soundIcon.Color = Color.White; - Pair userdata = soundIcon.UserData as Pair; - userdata.Second = 1.0f; } #endregion @@ -724,14 +630,12 @@ namespace Barotrauma else { OrderChatMessage msg = new OrderChatMessage(order, "", hull, null, orderGiver); - if (GameMain.Client != null) - { - GameMain.Client.SendChatMessage(msg); - } + GameMain.Client?.SendChatMessage(msg); } } else { + DisplayPreviousCharacterOrder(character); character.SetOrder(order, option, orderGiver, speak: orderGiver != character); if (IsSinglePlayer) { @@ -741,10 +645,7 @@ namespace Barotrauma else if (orderGiver != null) { OrderChatMessage msg = new OrderChatMessage(order, option, order.TargetItemComponent?.Item, character, orderGiver); - if (GameMain.Client != null) - { - GameMain.Client.SendChatMessage(msg); - } + GameMain.Client?.SendChatMessage(msg); } DisplayCharacterOrder(character, order); } @@ -757,41 +658,102 @@ namespace Barotrauma { if (character == null) { return; } - var characterFrame = activeCrew.GetChildByUserData(character); - if (characterFrame != null && characterFrame.GetChildByUserData("order") is GUIComponent existingOrderFrame) + var characterFrame = crewList.Content.GetChildByUserData(character); + + if (characterFrame == null) { return; } + + GUILayoutGroup layoutGroup = (GUILayoutGroup)characterFrame.FindChild(c => c is GUILayoutGroup); + + if (layoutGroup.GetChildByUserData("order") is GUIComponent existingOrderFrame) { characterFrame.RemoveChild(existingOrderFrame); } - if (order == null || order == dismissedOrder) - { - if (characterFrame != null) - { - // Remove dismissed characters from active crew - activeCrew.RemoveChild(characterFrame); - activeCrew.Recalculate(); - } - return; - } + if (order == null || order == dismissedOrder) { return; } - characterFrame ??= AddCharacterToActiveCrew(character); + // TODO: Move the character to the top var orderFrame = new GUIButton( - new RectTransform(new Vector2(0.5f), characterFrame.RectTransform, Anchor.BottomCenter, Pivot.TopCenter) - { - AbsoluteOffset = new Point(0, -HUDLayoutSettings.Padding) - }, + new RectTransform( + new Vector2(layoutGroup.GetChildByUserData("job").RectTransform.RelativeSize.X, 0.8f), + layoutGroup.RectTransform), style: null) { UserData = "order", OnClicked = (button, userData) => { + if (GameMain.IsMultiplayer && Character.Controlled == null) { return true; } SetCharacterOrder(character, dismissedOrder, null, Character.Controlled); - character.SetOrder(null, null, Character.Controlled); return true; } }; - CreateNodeIcon(orderFrame.RectTransform, order.SymbolSprite, order.Color, order.Color, tooltip: order.Name); + CreateNodeIcon(orderFrame.RectTransform, order.SymbolSprite, order.Color, tooltip: order.Name); + new GUIImage( + new RectTransform(new Vector2(0.4f), orderFrame.RectTransform, anchor: Anchor.TopRight, pivot: Pivot.Center), + "GUICancelButton", + scaleToFit: true) + { + UserData = "cancel", + Visible = false + }; + orderFrame.RectTransform.RepositionChildInHierarchy(3); + } + + private void DisplayPreviousCharacterOrder(Character character) + { + if (character == null) { return; } + + var characterFrame = crewList.Content.GetChildByUserData(character); + + if (characterFrame == null) { return; } + + GUILayoutGroup layoutGroup = (GUILayoutGroup)characterFrame.FindChild(c => c is GUILayoutGroup); + + if (layoutGroup.GetChildByUserData("prevorder") is GUIComponent existingPrevOrderFrame) + { + characterFrame.RemoveChild(existingPrevOrderFrame); + } + + var order = character.CurrentOrder; + + if (order == null || order == dismissedOrder) { return; } + + + var orderOption = (character.AIController as HumanAIController)?.CurrentOrderOption; + + var prevOrderFrame = new GUIButton( + new RectTransform( + new Vector2(layoutGroup.GetChildByUserData("job").RectTransform.RelativeSize.X, 0.8f), + layoutGroup.RectTransform), + style: null) + { + UserData = "prevorder", + OnClicked = (button, userData) => + { + if (GameMain.IsMultiplayer && Character.Controlled == null) { return true; } + SetCharacterOrder(character, order, orderOption, Character.Controlled); + return true; + } + }; + + var prevOrderIconFrame = new GUIFrame( + new RectTransform(new Vector2(0.8f), prevOrderFrame.RectTransform, anchor: Anchor.BottomLeft), + style: null); + CreateNodeIcon(prevOrderIconFrame.RectTransform, order.SymbolSprite, order.Color, tooltip: order.Name); + foreach (GUIComponent c in prevOrderIconFrame.Children) + { + c.HoverColor = c.Color; + c.PressedColor = c.Color; + c.SelectedColor = c.Color; + } + new GUIImage( + new RectTransform(new Vector2(0.8f), prevOrderFrame.RectTransform, anchor: Anchor.TopRight), + previousOrderArrow, + scaleToFit: true) + { + ToolTip = order.Name + }; + prevOrderFrame.RectTransform.RepositionChildInHierarchy(layoutGroup.GetChildByUserData("order") != null ? 4 : 3); } #region Updating and drawing the UI @@ -833,7 +795,7 @@ namespace Barotrauma if (GameMain.GraphicsWidth != screenResolution.X || GameMain.GraphicsHeight != screenResolution.Y || prevUIScale != GUI.Scale) { - var previousCrewList = (GUIListBox)crewList.FindChild(c => c is GUIListBox); + var previousCrewList = crewList; InitProjectSpecific(); foreach (GUIComponent c in previousCrewList.Content.Children) @@ -910,7 +872,7 @@ namespace Barotrauma #region Command UI if (PlayerInput.KeyDown(InputType.Command) && GUI.KeyboardDispatcher.Subscriber == null && - (!GameMain.IsMultiplayer || (GameMain.IsMultiplayer && DebugConsole.CheatsEnabled)) && + (!GameMain.IsMultiplayer || (GameMain.IsMultiplayer && (Character.Controlled != null || DebugConsole.CheatsEnabled))) && commandFrame == null && !clicklessSelectionActive) { bool canIssueOrders = false; @@ -1058,51 +1020,54 @@ namespace Barotrauma { if (PlayerInput.KeyHit(InputType.Chat) && !ChatBox.InputBox.Selected) { + ChatBox.InputBox.AddToGUIUpdateList(); ChatBox.GUIFrame.Flash(Color.DarkGreen, 0.5f); - ChatBox.InputBox.Select(); + ChatBox.ToggleOpen = true; + ChatBox.InputBox.Select(ChatBox.InputBox.Text.Length); } if (PlayerInput.KeyHit(InputType.RadioChat) && !ChatBox.InputBox.Selected) { + ChatBox.InputBox.AddToGUIUpdateList(); ChatBox.GUIFrame.Flash(Color.YellowGreen, 0.5f); - ChatBox.InputBox.Select(); - ChatBox.InputBox.Text = "r; "; + ChatBox.ToggleOpen = true; + + if (!ChatBox.InputBox.Text.StartsWith(ChatBox.RadioChatString)) + { + ChatBox.InputBox.Text = ChatBox.RadioChatString; + } + ChatBox.InputBox.Select(ChatBox.InputBox.Text.Length); } } } crewArea.Visible = characters.Count > 0 && CharacterHealth.OpenHealthWindow == null; - var shouldBeRemoved = new List(); - foreach (GUIComponent child in activeCrew.Children) + foreach (GUIComponent child in crewList.Content.Children) { - Character character = (Character)child.UserData; - if (character == null) { continue; } - child.Visible = - Character.Controlled == null || - (Character.Controlled.TeamID == character.TeamID); - - if (child.Visible) + if (child.UserData is Character character) { - //child.GetChildByUserData("highlight").Visible = character == Character.Controlled; - var soundIcon = child.FindChild(c => c.UserData is Pair pair && pair.First == "soundicon") as GUIImage; - VoipClient.UpdateVoiceIndicator(soundIcon, 0.0f, deltaTime); - if (soundIcon.UserData is Pair soundStatus && - soundStatus.Second < 0.1f && child.FindChild("order") == null) + child.Visible = Character.Controlled == null || Character.Controlled.TeamID == character.TeamID; + if (child.Visible && child.FindChild(c => c is GUILayoutGroup) is GUILayoutGroup layoutGroup) { - shouldBeRemoved.Add(child); + if (layoutGroup.GetChildByUserData("order") is GUIComponent orderButton && + orderButton.GetChildByUserData("colorsource") is GUIComponent orderIcon && + orderButton.GetChildByUserData("cancel") is GUIComponent cancelIcon) + { + cancelIcon.Visible = GUI.IsMouseOn(orderIcon); + } + if (layoutGroup.GetChildByUserData("soundicons")? + .FindChild(c => c.UserData is Pair pair && pair.First == "soundicon") is GUIImage soundIcon) + { + VoipClient.UpdateVoiceIndicator(soundIcon, 0.0f, deltaTime); + } } } } - if (shouldBeRemoved.Any()) - { - shouldBeRemoved.ForEach(c => activeCrew.RemoveChild(c)); - activeCrew.Recalculate(); - } - crewList.RectTransform.AbsoluteOffset = Vector2.SmoothStep( - new Vector2(-HUDLayoutSettings.Padding - crewList.Rect.Width / 2.0f, -HUDLayoutSettings.Padding * 6), - new Vector2(0.0f, -HUDLayoutSettings.Padding * 6), + crewArea.RectTransform.AbsoluteOffset = Vector2.SmoothStep( + new Vector2(-crewArea.Rect.Width - HUDLayoutSettings.Padding, 0.0f), + Vector2.Zero, crewListOpenState).ToPoint(); crewListOpenState = ToggleCrewListOpen ? Math.Min(crewListOpenState + deltaTime * 2.0f, 1.0f) : @@ -1157,9 +1122,9 @@ namespace Barotrauma /// node.Color = node.HighlightColor * nodeColorMultiplier /// private const float nodeColorMultiplier = 0.75f; - private const int assignmentNodeMaxCount = 5; - private int nodeDistance = 150; - private float returnNodeDistanceModifier = 0.75f; + private const int assignmentNodeMaxCount = 9; + private int nodeDistance = (int)(GUI.Scale * 250); + private float returnNodeDistanceModifier = 0.65f; private Order dismissedOrder; private void CreateCommandUI() @@ -1176,7 +1141,7 @@ namespace Barotrauma var startNode = new GUIButton( new RectTransform(centerNodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center), style: null); - CreateNodeIcon(startNode.RectTransform, Order.StartNode, Color.White, Color.White); + CreateNodeIcon(startNode.RectTransform, Order.StartNode, Color.White); SetCenterNode(startNode); if (availableCategories == null) @@ -1197,7 +1162,19 @@ namespace Barotrauma { if (commandFrame == null) { - CreateCommandUI(); + if ((!GameMain.IsMultiplayer || (GameMain.IsMultiplayer && (Character.Controlled != null || DebugConsole.CheatsEnabled)))) + { + bool canIssueOrders = false; + if (Character.Controlled != null && Character.Controlled.SpeechImpediment < 100.0f) + { + WifiComponent radio = GetHeadset(Character.Controlled, true); + canIssueOrders = radio != null && radio.CanTransmit(); + } + if (canIssueOrders) + { + CreateCommandUI(); + } + } } else { @@ -1207,16 +1184,16 @@ namespace Barotrauma private void ScaleCommandUI() { - centerNodeSize = new Point((int)(80 * GUI.Scale)); - nodeSize = new Point((int)(80 * GUI.Scale)); + centerNodeSize = new Point((int)(100 * GUI.Scale)); + nodeSize = new Point((int)(100 * GUI.Scale)); shortcutCenterNodeSize = new Point((int)(48 * GUI.Scale)); shortcutNodeSize = new Point((int)(64 * GUI.Scale)); returnNodeSize = new Point((int)(48 * GUI.Scale)); - centerNodeMargin = centerNodeSize.X * 0.6f; - optionNodeMargin = nodeSize.X * 0.6f; + centerNodeMargin = centerNodeSize.X * 0.5f; + optionNodeMargin = nodeSize.X * 0.5f; shortcutCenterNodeMargin = shortcutCenterNodeSize.X * 0.45f; - shortcutNodeMargin = shortcutNodeSize.X * 0.6f; - returnNodeMargin = returnNodeSize.X * 0.6f; + shortcutNodeMargin = shortcutNodeSize.X * 0.5f; + returnNodeMargin = returnNodeSize.X * 0.5f; nodeDistance = (int)(150 * GUI.Scale); } @@ -1265,8 +1242,7 @@ namespace Barotrauma var direction = (endNodePos - startNodePos) / Vector2.Distance(startNodePos, endNodePos); var start = startNodePos + direction * startNodeMargin; var end = endNodePos - direction * endNodeMargin; - var colorSource = endNode.GetChildByUserData("container"); - if (colorSource == null) { colorSource = endNode.GetChildByUserData("icon"); } + var colorSource = endNode.GetChildByUserData("colorsource"); if ((selectedNode == null && endNode != shortcutCenterNode && GUI.IsMouseOn(endNode)) || endNode == selectedNode || endNode == shortcutCenterNode && shortcutNodes.Any(n => GUI.IsMouseOn(n))) { @@ -1345,8 +1321,8 @@ namespace Barotrauma private void SetCenterNode(GUIButton node) { node.RectTransform.Parent = commandFrame.RectTransform; - node.RectTransform.NonScaledSize = centerNodeSize; - node.RectTransform.AbsoluteOffset = Point.Zero; + node.RectTransform.MoveOverTime(Point.Zero, CommandNodeAnimDuration); + node.RectTransform.ScaleOverTime(centerNodeSize, CommandNodeAnimDuration); foreach (GUIComponent c in node.Children) { c.Color = c.HoverColor * nodeColorMultiplier; @@ -1361,8 +1337,8 @@ namespace Barotrauma private void SetReturnNode(GUIButton node, Point offset) { - node.RectTransform.NonScaledSize = returnNodeSize; - node.RectTransform.AbsoluteOffset = offset; + node.RectTransform.MoveOverTime(offset, CommandNodeAnimDuration); + node.RectTransform.ScaleOverTime(returnNodeSize, CommandNodeAnimDuration); foreach (GUIComponent c in node.Children) { c.HoverColor = c.Color * (1 / nodeColorMultiplier); @@ -1424,21 +1400,19 @@ namespace Barotrauma private void CreateOrderCategoryNode(OrderCategory category, Point offset) { var node = new GUIButton( - new RectTransform(nodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center) - { - AbsoluteOffset = offset - }, - style: null) + new RectTransform(nodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center), style: null) { UserData = category, OnClicked = NavigateForward }; + + node.RectTransform.MoveOverTime(offset, CommandNodeAnimDuration); if (Order.OrderCategoryIcons.TryGetValue(category, out Sprite sprite)) { var tooltip = TextManager.Get("ordercategorytitle." + category.ToString().ToLower()); var categoryDescription = TextManager.Get("ordercategorydescription." + category.ToString(), true); if (!string.IsNullOrWhiteSpace(categoryDescription)) { tooltip += "\n" + categoryDescription; } - CreateNodeIcon(node.RectTransform, sprite, Color.White, Color.White, tooltip: tooltip); + CreateNodeIcon(node.RectTransform, sprite, Color.White, tooltip: tooltip); } optionNodes.Add(node); } @@ -1516,7 +1490,7 @@ namespace Barotrauma AbsoluteOffset = new Point(0, (int)(1.25f * nodeDistance)) }, style: null); - CreateNodeIcon(shortcutCenterNode.RectTransform, Order.ShortcutNode, Color.Red, Color.Red, createContainer: false); + CreateNodeIcon(shortcutCenterNode.RectTransform, Order.ShortcutNode, Color.Red); foreach (GUIComponent c in shortcutCenterNode.Children) { c.HoverColor = c.Color; @@ -1547,14 +1521,13 @@ namespace Barotrauma private GUIButton CreateOrderNode(Point size, RectTransform parent, Point offset, Order order) { var node = new GUIButton( - new RectTransform(size, parent: parent, anchor: Anchor.Center) - { - AbsoluteOffset = offset - }, - style: null) + new RectTransform(size, parent: parent, anchor: Anchor.Center), style: null) { UserData = order }; + + node.RectTransform.MoveOverTime(offset, CommandNodeAnimDuration); + var hasOptions = order.ItemComponentType != null || order.ItemIdentifiers.Length > 0 || order.Options.Length > 1; node.OnClicked = (button, userData) => { @@ -1576,7 +1549,7 @@ namespace Barotrauma } return true; }; - CreateNodeIcon(node.RectTransform, order.SymbolSprite, order.Color, order.Color, + CreateNodeIcon(node.RectTransform, order.SymbolSprite, order.Color, tooltip: hasOptions ? order.Name : order.Name + "\nLMB: " + TextManager.Get("commandui.quickassigntooltip") + "\nRMB: " + TextManager.Get("commandui.manualassigntooltip")); return node; @@ -1748,7 +1721,7 @@ namespace Barotrauma }; if (order.Prefab.OptionSprites.TryGetValue(option, out Sprite sprite)) { - CreateNodeIcon(node.RectTransform, sprite, order.Color, order.Color, + CreateNodeIcon(node.RectTransform, sprite, order.Color, tooltip: optionName + "\nLMB: " + TextManager.Get("commandui.quickassigntooltip") + "\nRMB: " + TextManager.Get("commandui.manualassigntooltip")); } return node; @@ -1787,7 +1760,7 @@ namespace Barotrauma }; if (order.Item1.Prefab.OptionSprites.TryGetValue(order.Item2, out Sprite sprite)) { - CreateNodeIcon(optionNode.RectTransform, sprite, order.Item1.Color, order.Item1.Color, tooltip: order.Item2); + CreateNodeIcon(optionNode.RectTransform, sprite, order.Item1.Color, tooltip: order.Item2); } SetCenterNode(optionNode); node = null; @@ -1801,7 +1774,8 @@ namespace Barotrauma var needToExpand = characters.Count > assignmentNodeMaxCount + 1; var nodeCount = needToExpand ? assignmentNodeMaxCount + 1 : characters.Count; - var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, nodeDistance, + var extraNodeDistance = Math.Max(nodeCount - 6, 0) * (GUI.Scale * 30); + var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, nodeDistance + extraNodeDistance, GetCircumferencePointCount(nodeCount), GetFirstNodeAngle(nodeCount)); @@ -1827,7 +1801,7 @@ namespace Barotrauma UserData = order, OnClicked = ExpandAssignmentNodes }; - CreateNodeIcon(expandNode.RectTransform, Order.ExpandNode, order.Item1.Color, order.Item1.Color, tooltip: TextManager.Get("commandui.expand")); + CreateNodeIcon(expandNode.RectTransform, Order.ExpandNode, order.Item1.Color, tooltip: TextManager.Get("commandui.expand")); } private bool ExpandAssignmentNodes(GUIButton node, object userData) @@ -1840,7 +1814,8 @@ namespace Barotrauma }; var order = userData as Tuple; - var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, nodeDistance * 2, + // TODO: The value 100 should be determined by how large the inner circle is + var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, (nodeDistance + GUI.Scale * 100) * 1.55f, GetCircumferencePointCount(extraOptionCharacters.Count), GetFirstNodeAngle(extraOptionCharacters.Count)); for (int i = 0; i < extraOptionCharacters.Count; i++) @@ -1854,10 +1829,7 @@ namespace Barotrauma { // Button var node = new GUIButton( - new RectTransform(nodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center) - { - AbsoluteOffset = offset - }, + new RectTransform(nodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center), style: null) { OnClicked = (button, userData) => @@ -1867,6 +1839,9 @@ namespace Barotrauma return true; } }; + + node.RectTransform.MoveOverTime(offset, CommandNodeAnimDuration); + // Character icon new GUICustomComponent( new RectTransform(Vector2.One, node.RectTransform), @@ -1884,41 +1859,14 @@ namespace Barotrauma HoverColor = character.Info.Job.Prefab.UIColor, PressedColor = character.Info.Job.Prefab.UIColor, SelectedColor = character.Info.Job.Prefab.UIColor, - UserData = "container" - }; - // Bigger container - new GUIImage( - new RectTransform(new Vector2(1.4f), node.RectTransform, anchor: Anchor.Center), - Order.NodeContainer, - scaleToFit: true) - { - Color = character.Info.Job.Prefab.UIColor * nodeColorMultiplier, - HoverColor = character.Info.Job.Prefab.UIColor, - PressedColor = character.Info.Job.Prefab.UIColor, - SelectedColor = character.Info.Job.Prefab.UIColor, - UserData = "container", - ToolTip = character.Info.DisplayName + " (" + character.Info.Job.Name + ")" + ToolTip = character.Info.DisplayName + " (" + character.Info.Job.Name + ")", + UserData = "colorsource" }; (extraOption ? extraOptionNodes : optionNodes).Add(node); } - private void CreateNodeIcon(RectTransform parent, Sprite sprite, Color iconColor, Color containerColor, string tooltip = null, bool createContainer = true) + private void CreateNodeIcon(RectTransform parent, Sprite sprite, Color iconColor, string tooltip = null) { - if (createContainer) - { - // Container - new GUIImage( - new RectTransform(new Vector2(1.2f), parent, anchor: Anchor.Center), - Order.NodeContainer, - scaleToFit: true) - { - Color = containerColor * nodeColorMultiplier, - HoverColor = containerColor, - PressedColor = containerColor, - SelectedColor = containerColor, - UserData = "container" - }; - } // Icon new GUIImage( new RectTransform(Vector2.One, parent), @@ -1930,7 +1878,7 @@ namespace Barotrauma PressedColor = iconColor, SelectedColor = iconColor, ToolTip = tooltip, - UserData = "icon" + UserData = "colorsource" }; } @@ -1975,6 +1923,7 @@ namespace Barotrauma return characters.FindAll(c => c != Character.Controlled) .OrderByDescending(c => c.CurrentOrder == null || c.CurrentOrder == dismissedOrder) .ThenByDescending(c => order.HasAppropriateJob(c)) + .ThenBy(c => c.CurrentOrder?.Weight) .FirstOrDefault(); } @@ -1983,15 +1932,15 @@ namespace Barotrauma if (order.Identifier == "follow") { return characters.FindAll(c => c != Character.Controlled) - .OrderBy(c => c.CurrentOrder == null || c.CurrentOrder == dismissedOrder) - .ThenBy(c => order.HasAppropriateJob(c)) + .OrderByDescending(c => c.CurrentOrder == null || c.CurrentOrder == dismissedOrder) .ToList(); } else { - return characters.OrderBy(c => c.CurrentOrder == null || c.CurrentOrder == dismissedOrder) - .ThenBy(c => order.HasAppropriateJob(c)) - .ToList(); + return characters.OrderByDescending(c => c.CurrentOrder == null || c.CurrentOrder == dismissedOrder) + .ThenByDescending(c => order.HasAppropriateJob(c)) + .ThenBy(c => c.CurrentOrder?.Weight) + .ToList(); } } @@ -2149,7 +2098,7 @@ namespace Barotrauma public void InitSinglePlayerRound() { - activeCrew.ClearChildren(); + crewList.ClearChildren(); characters.Clear(); WayPoint[] waypoints = WayPoint.SelectCrewSpawnPoints(characterInfos, Submarine.MainSub); @@ -2185,14 +2134,14 @@ namespace Barotrauma characterInfos.RemoveAll(c => c.Character == null || c.Character.Removed || c.CauseOfDeath != null); characters.Clear(); - activeCrew.ClearChildren(); + crewList.ClearChildren(); } public void Reset() { characters.Clear(); characterInfos.Clear(); - activeCrew.ClearChildren(); + crewList.ClearChildren(); } public void Save(XElement parentElement) diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/Tutorials/MechanicTutorial.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/Tutorials/MechanicTutorial.cs index 8947b90f7..ba5551d9d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/Tutorials/MechanicTutorial.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/Tutorials/MechanicTutorial.cs @@ -98,7 +98,7 @@ namespace Barotrauma.Tutorials var repairOrder = Order.GetPrefab("repairsystems"); mechanic_repairIcon = repairOrder.SymbolSprite; mechanic_repairIconColor = repairOrder.Color; - mechanic_weldIcon = new Sprite("Content/UI/IconAtlas.png", new Rectangle(1, 256, 127, 127), new Vector2(0.5f, 0.5f)); + mechanic_weldIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(1, 256, 127, 127), new Vector2(0.5f, 0.5f)); // Other tutorial items tutorial_securityFinalDoorLight = Item.ItemList.Find(i => i.HasTag("tutorial_securityfinaldoorlight")).GetComponent(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs index 54027a35d..a520f11cd 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs @@ -95,14 +95,14 @@ namespace Barotrauma limbSlotIcons = new Dictionary(); int margin = 2; - limbSlotIcons.Add(InvSlotType.Headset, new Sprite("Content/UI/IconAtlas.png", new Rectangle(384 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); - limbSlotIcons.Add(InvSlotType.InnerClothes, new Sprite("Content/UI/IconAtlas.png", new Rectangle(512 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); - limbSlotIcons.Add(InvSlotType.Card, new Sprite("Content/UI/IconAtlas.png", new Rectangle(640 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); + limbSlotIcons.Add(InvSlotType.Headset, new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(384 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); + limbSlotIcons.Add(InvSlotType.InnerClothes, new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(512 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); + limbSlotIcons.Add(InvSlotType.Card, new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(640 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); - limbSlotIcons.Add(InvSlotType.Head, new Sprite("Content/UI/IconAtlas.png", new Rectangle(896 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); - limbSlotIcons.Add(InvSlotType.LeftHand, new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(640 + margin, 0 + margin, 128 - margin * 2, 128 - margin * 2))); - limbSlotIcons.Add(InvSlotType.RightHand, new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(768 + margin, 0 + margin, 128 - margin * 2, 128 - margin * 2))); - limbSlotIcons.Add(InvSlotType.OuterClothes, new Sprite("Content/UI/IconAtlas.png", new Rectangle(768 + margin, 896 + margin, 128 - margin * 2, 128 - margin * 2))); + limbSlotIcons.Add(InvSlotType.Head, new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(896 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); + limbSlotIcons.Add(InvSlotType.LeftHand, new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(634, 0, 128, 128))); + limbSlotIcons.Add(InvSlotType.RightHand, new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(762, 0, 128, 128))); + limbSlotIcons.Add(InvSlotType.OuterClothes, new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(256 + margin, 128 + margin, 128 - margin * 2, 128 - margin * 2))); } SlotPositions = new Vector2[SlotTypes.Length]; CurrentLayout = Layout.Default; @@ -165,7 +165,7 @@ namespace Barotrauma slots[i] = new InventorySlot(slotRect) { - SubInventoryDir = Math.Sign(HUDLayoutSettings.InventoryAreaUpper.Bottom - slotRect.Center.Y), + SubInventoryDir = Math.Sign(GameMain.GraphicsHeight / 2 - slotRect.Center.Y), Disabled = false, SlotSprite = slotSprite, Color = SlotTypes[i] == InvSlotType.Any ? Color.White * 0.2f : Color.White * 0.4f @@ -532,7 +532,7 @@ namespace Barotrauma } } - if (character.SelectedCharacter == null) // Permanently open subinventories only available when the default UI layout is in use -> not when grabbing characters + if (character == Character.Controlled && character.SelectedCharacter == null) // Permanently open subinventories only available when the default UI layout is in use -> not when grabbing characters { //remove the highlighted slots of other characters' inventories when not grabbing anyone highlightedSubInventorySlots.RemoveWhere(s => s.ParentInventory != this && s.ParentInventory?.Owner is Character); @@ -622,32 +622,11 @@ namespace Barotrauma } var quickUseAction = GetQuickUseAction(item, allowEquip: true, allowInventorySwap: false, allowApplyTreatment: false); - slot.QuickUseButtonToolTip = quickUseAction == QuickUseAction.None ? + + if (quickUseAction != QuickUseAction.Drop) + { + slot.QuickUseButtonToolTip = quickUseAction == QuickUseAction.None ? "" : TextManager.GetWithVariable("QuickUseAction." + quickUseAction.ToString(), "[equippeditem]", character.SelectedItems.FirstOrDefault(i => i != null)?.Name); - - //equipped item that can't be put in the inventory, use delayed dropping - if (quickUseAction == QuickUseAction.Drop) - { - slot.QuickUseButtonToolTip = - TextManager.Get("QuickUseAction.HoldToUnequip", returnNull: true) ?? - (GameMain.Config.Language == "English" ? "Hold to unequip" : TextManager.Get("QuickUseAction.Unequip")); - - if (PlayerInput.LeftButtonHeld()) - { - slot.QuickUseTimer = Math.Max(0.1f, slot.QuickUseTimer + deltaTime); - if (slot.QuickUseTimer >= 1.0f) - { - item.Drop(Character.Controlled); - GUI.PlayUISound(GUISoundType.DropItem); - } - } - else - { - slot.QuickUseTimer = Math.Max(0.0f, slot.QuickUseTimer - deltaTime * 5.0f); - } - } - else - { if (PlayerInput.PrimaryMouseButtonDown()) slot.EquipButtonState = GUIComponent.ComponentState.Pressed; if (PlayerInput.PrimaryMouseButtonClicked()) { @@ -994,13 +973,13 @@ namespace Barotrauma } if (Locked) { color *= 0.3f; } - var quickUseIndicator = Items[i].AllowedSlots.Any(a => a == InvSlotType.Any) ? - EquipIndicator : DropIndicator; - var quickUseHighlight = Items[i].AllowedSlots.Any(a => a == InvSlotType.Any) ? - EquipIndicatorHighlight : DropIndicatorHighlight; + if (!Items[i].AllowedSlots.Any(a => a == InvSlotType.Any)) + { + continue; + } - quickUseIndicator.Draw(spriteBatch, slots[i].EquipButtonRect.Center.ToVector2(), color, quickUseIndicator.Origin, 0, UIScale); - slots[i].QuickUseTimer = Math.Min(slots[i].QuickUseTimer, 1.0f); + EquipIndicator.Draw(spriteBatch, slots[i].EquipButtonRect.Center.ToVector2(), color, EquipIndicator.Origin, 0, UIScale); + /*slots[i].QuickUseTimer = Math.Min(slots[i].QuickUseTimer, 1.0f); if (slots[i].QuickUseTimer > 0.0f) { float indicatorFillAmount = character.HasEquippedItem(Items[i]) ? 1.0f - slots[i].QuickUseTimer : slots[i].QuickUseTimer; @@ -1012,9 +991,9 @@ namespace Barotrauma null, Vector2.One * UIScale * 0.85f); } - else if (character.HasEquippedItem(Items[i])) + else*/ if (character.HasEquippedItem(Items[i])) { - quickUseHighlight.Draw(spriteBatch, slots[i].EquipButtonRect.Center.ToVector2(), color * 0.9f, quickUseHighlight.Origin, 0, UIScale * 0.85f); + EquipIndicatorHighlight.Draw(spriteBatch, slots[i].EquipButtonRect.Center.ToVector2(), color * 0.9f, EquipIndicatorHighlight.Origin, 0, UIScale * 0.85f); } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemContainer.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemContainer.cs index e1703048e..59189e560 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemContainer.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemContainer.cs @@ -117,33 +117,38 @@ namespace Barotrauma.Items.Components else { //if a GUIFrame has been defined, draw the inventory inside it - - var content = new GUIFrame(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, - style: null) - { - CanBeFocused = false - }; - - string labelText = GetUILabel(); - GUITextBlock label = null; - if (!string.IsNullOrEmpty(labelText)) - { - label = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), content.RectTransform, Anchor.TopCenter), - labelText, font: GUI.SubHeadingFont, textAlignment: Alignment.Center, wrap: true); - } - - float minInventoryAreaSize = 0.5f; - guiCustomComponent = new GUICustomComponent( - new RectTransform(new Vector2(1.0f, label == null ? 1.0f : Math.Max(1.0f - label.RectTransform.RelativeSize.Y, minInventoryAreaSize)), content.RectTransform, Anchor.BottomCenter), - onDraw: (SpriteBatch spriteBatch, GUICustomComponent component) => { Inventory.Draw(spriteBatch); }, - onUpdate: null) - { - CanBeFocused = false - }; - Inventory.RectTransform = guiCustomComponent.RectTransform; + CreateGUI(); + GameMain.Instance.OnResolutionChanged += () => { GuiFrame.ClearChildren(); CreateGUI(); }; } } + private void CreateGUI() + { + var content = new GUIFrame(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, + style: null) + { + CanBeFocused = false + }; + + string labelText = GetUILabel(); + GUITextBlock label = null; + if (!string.IsNullOrEmpty(labelText)) + { + label = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), content.RectTransform, Anchor.TopCenter), + labelText, font: GUI.SubHeadingFont, textAlignment: Alignment.Center, wrap: true); + } + + float minInventoryAreaSize = 0.5f; + guiCustomComponent = new GUICustomComponent( + new RectTransform(new Vector2(1.0f, label == null ? 1.0f : Math.Max(1.0f - label.RectTransform.RelativeSize.Y, minInventoryAreaSize)), content.RectTransform, Anchor.BottomCenter), + onDraw: (SpriteBatch spriteBatch, GUICustomComponent component) => { Inventory.Draw(spriteBatch); }, + onUpdate: null) + { + CanBeFocused = false + }; + Inventory.RectTransform = guiCustomComponent.RectTransform; + } + public string GetUILabel() { if (UILabel == string.Empty) { return string.Empty; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs index 92a0ff8d3..b3955b14a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs @@ -22,68 +22,99 @@ namespace Barotrauma.Items.Components partial void InitProjSpecific(XElement element) { - var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.8f), GuiFrame.RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter) + CreateGUI(); + GameMain.Instance.OnResolutionChanged += () => { - Stretch = true, + GuiFrame.ClearChildren(); + CreateGUI(); + OnItemLoadedProjSpecific(); + }; + } + + private void CreateGUI() + { + var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.90f, 0.80f), GuiFrame.RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter) + { + Stretch = true, RelativeSpacing = 0.02f }; var topFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.5f), paddedFrame.RectTransform), style: null); - var paddedLine = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.25f), topFrame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.CenterLeft, isHorizontal: true) - { - Stretch = true, - RelativeSpacing = 0.02f - }; - var inputText = new GUITextBlock(new RectTransform(new Vector2(0f, 1.0f), paddedLine.RectTransform), TextManager.Get("uilabel.input"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero }; - new GUIFrame(new RectTransform(new Vector2(1f, 1.0f), paddedLine.RectTransform), style: "HorizontalLine"); - - // Resize GUITextBlock width according to the text length - inputText.RectTransform.Resize(new Point((int)inputText.Font.MeasureString(inputText.Text).X, inputText.RectTransform.Rect.Height)); + + // === INPUT LABEL === // + var inputLabelArea = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.15f), topFrame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.CenterLeft, isHorizontal: true) + { + Stretch = true, + RelativeSpacing = 0.05f + }; + var inputLabel = new GUITextBlock(new RectTransform(Vector2.One, inputLabelArea.RectTransform), TextManager.Get("uilabel.input"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero }; + inputLabel.RectTransform.Resize(new Point((int) inputLabel.Font.MeasureString(inputLabel.Text).X, inputLabel.RectTransform.Rect.Height)); + new GUIFrame(new RectTransform(Vector2.One, inputLabelArea.RectTransform), style: "HorizontalLine"); - - var inputArea = new GUILayoutGroup(new RectTransform(new Vector2(1f, 1.2f), topFrame.RectTransform, Anchor.CenterLeft), childAnchor: Anchor.BottomLeft, isHorizontal: true) - { - Stretch = true, - RelativeSpacing = 0.045f - }; - inputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(0.7f, 1f), inputArea.RectTransform), style: null); - inputInventoryOverlay = new GUICustomComponent(new RectTransform(Vector2.One, inputInventoryHolder.RectTransform), DrawOverLay, null) - { - CanBeFocused = false - }; + var inputArea = new GUILayoutGroup(new RectTransform(new Vector2(1f, 1.2f), topFrame.RectTransform, Anchor.CenterLeft), childAnchor: Anchor.BottomLeft, isHorizontal: true) { Stretch = true, RelativeSpacing = 0.05f }; + + // === INPUT SLOTS === // + inputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(0.7f, 1f), inputArea.RectTransform), style: null); + inputInventoryOverlay = new GUICustomComponent(new RectTransform(Vector2.One, inputInventoryHolder.RectTransform), DrawOverLay, null) { CanBeFocused = false }; - var buttonContainer = new GUIFrame(new RectTransform(new Vector2(0.4f, 0.75f), inputArea.RectTransform), style: null); - activateButton = new GUIButton(new RectTransform(new Vector2(0.95f, 0.65f), buttonContainer.RectTransform, Anchor.CenterLeft), - TextManager.Get("DeconstructorDeconstruct"), style: "DeviceButton") - { - TextBlock = { AutoScale = true }, - OnClicked = ToggleActive - }; + // === ACTIVATE BUTTON === // + var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 0.75f), inputArea.RectTransform), childAnchor: Anchor.CenterLeft); + activateButton = new GUIButton(new RectTransform(new Vector2(0.95f, 0.65f), buttonContainer.RectTransform), TextManager.Get("DeconstructorDeconstruct"), style: "DeviceButton") + { + TextBlock = { AutoScaleHorizontal = true }, + OnClicked = ToggleActive + }; + inSufficientPowerWarning = new GUITextBlock(new RectTransform(Vector2.One, activateButton.RectTransform), + TextManager.Get("DeconstructorNoPower"), textColor: GUI.Style.Orange, textAlignment: Alignment.Center, color: Color.Black, style: "OuterGlow") + { + HoverColor = Color.Black, + IgnoreLayoutGroups = true, + Visible = false, + CanBeFocused = false + }; - - inSufficientPowerWarning = new GUITextBlock(new RectTransform(Vector2.One, activateButton.RectTransform), TextManager.Get("DeconstructorNoPower"), - textColor: GUI.Style.Orange, textAlignment: Alignment.Center, color: Color.Black, style: "OuterGlow") - { - HoverColor = Color.Black, - IgnoreLayoutGroups = true, - Visible = false, - CanBeFocused = false - }; - + // === OUTPUT AREA === // var bottomFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.5f), paddedFrame.RectTransform), style: null); - var paddedBottomLine = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.25f), bottomFrame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.CenterLeft, isHorizontal: true) - { - Stretch = true, - RelativeSpacing = 0.02f - }; - var outputText = new GUITextBlock(new RectTransform(new Vector2(0f, 1.0f), paddedBottomLine.RectTransform), TextManager.Get("uilabel.output"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero }; - new GUIFrame(new RectTransform(new Vector2(1f, 1.0f), paddedBottomLine.RectTransform), style: "HorizontalLine"); - - // Resize GUITextBlock width according to the text length - outputText.RectTransform.Resize(new Point((int)outputText.Font.MeasureString(outputText.Text).X, outputText.RectTransform.Rect.Height)); + + // === OUTPUT LABEL === // + var outputLabelArea = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.15f), bottomFrame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.CenterLeft, isHorizontal: true) + { + Stretch = true, + RelativeSpacing = 0.05f + }; + var outputLabel = new GUITextBlock(new RectTransform(new Vector2(0f, 1.0f), outputLabelArea.RectTransform), TextManager.Get("uilabel.output"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero }; + outputLabel.RectTransform.Resize(new Point((int) outputLabel.Font.MeasureString(outputLabel.Text).X, outputLabel.RectTransform.Rect.Height)); + new GUIFrame(new RectTransform(Vector2.One, outputLabelArea.RectTransform), style: "HorizontalLine"); - - outputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(1f, 1.2f), bottomFrame.RectTransform, Anchor.CenterLeft), style: null); + // === OUTPUT SLOTS === // + outputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(1f, 1.2f), bottomFrame.RectTransform, Anchor.CenterLeft), style: null); + } + + public override bool Select(Character character) + { + // TODO, This works fine as of now but if GUI.PreventElementOverlap ever gets fixed this block of code may become obsolete or detrimental. + // Only do this if there's only one linked component. If you link more containers then may + // GUI.PreventElementOverlap have mercy on your HUD layout + if (item.linkedTo.Count(entity => entity is Item item && item.DisplaySideBySideWhenLinked) == 1) + { + foreach (MapEntity linkedTo in item.linkedTo) + { + if (!(linkedTo is Item linkedItem)) continue; + if (!linkedItem.Components.Any()) continue; + + var itemContainer = linkedItem.Components.First(); + if (itemContainer == null) { continue; } + + if (!itemContainer.Item.DisplaySideBySideWhenLinked) continue; + + // how much spacing do we want between the components + var padding = (int) (8 * GUI.Scale); + // Move the linked container to the right and move the fabricator to the left + itemContainer.GuiFrame.RectTransform.AbsoluteOffset = new Point(GuiFrame.Rect.Width / -2 - padding, 0); + GuiFrame.RectTransform.AbsoluteOffset = new Point(itemContainer.GuiFrame.Rect.Width / 2 + padding, 0); + } + } + return base.Select(character); } partial void OnItemLoadedProjSpecific() diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Engine.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Engine.cs index b7a639180..cadfb6011 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Engine.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Engine.cs @@ -59,7 +59,7 @@ namespace Barotrauma.Items.Components string powerLabel = TextManager.Get("EngineForce"); new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), sliderArea.RectTransform, Anchor.TopCenter), "", textColor: GUI.Style.TextColor, font: GUI.SubHeadingFont, textAlignment: Alignment.Center) { - AutoScale = true, + AutoScaleHorizontal = true, TextGetter = () => { return TextManager.AddPunctuation(':', powerLabel, (int)(targetForce) + " %"); } }; forceSlider = new GUIScrollBar(new RectTransform(new Vector2(0.95f, 0.45f), sliderArea.RectTransform, Anchor.Center), barSize: 0.1f, style: "DeviceSlider") diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs index bd9ef0053..4f7b83564 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs @@ -5,6 +5,7 @@ using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Metadata; namespace Barotrauma.Items.Components { @@ -25,7 +26,6 @@ namespace Barotrauma.Items.Components private GUIComponent outputSlot; private GUIComponent inputInventoryHolder, outputInventoryHolder; - private GUICustomComponent inputInventoryOverlay, outputInventoryOverlay; public FabricationRecipe SelectedItem { @@ -41,95 +41,125 @@ namespace Barotrauma.Items.Components partial void InitProjSpecific() { - var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.8f), GuiFrame.RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter) + CreateGUI(); + GameMain.Instance.OnResolutionChanged += () => + { + GuiFrame.ClearChildren(); + CreateGUI(); + OnItemLoadedProjSpecific(); + }; + } + + private void CreateGUI() + { + var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), GuiFrame.RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter); + + // === LABEL === // + new GUITextBlock(new RectTransform(new Vector2(1f, 0.05f), paddedFrame.RectTransform), item.Name, font: GUI.SubHeadingFont) + { + TextAlignment = Alignment.Center, + AutoScaleVertical = true + }; + + var mainFrame = new GUILayoutGroup(new RectTransform(new Vector2(1f, 1f), paddedFrame.RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter) { RelativeSpacing = 0.02f }; - var topFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.7f), paddedFrame.RectTransform), "InnerFrameDark"); + // === TOP AREA === + var topFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.65f), mainFrame.RectTransform), style: "InnerFrameDark"); - var paddedItemFrame = new GUIFrame(new RectTransform(new Vector2(0.5f, 1.0f), topFrame.RectTransform), style: null); - var itemListFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.9f), paddedItemFrame.RectTransform, Anchor.Center)) - { - Stretch = true - }; - - var filterArea = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.15f), itemListFrame.RectTransform), isHorizontal: true) - { - Stretch = true, - RelativeSpacing = 0.02f, - UserData = "filterarea" - }; - - new GUITextBlock(new RectTransform(new Vector2(0.2f, 0.5f), filterArea.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.SubHeadingFont) - { - Padding = Vector4.Zero, - AutoScale = true - }; - itemFilterBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), createClearButton: true); - itemFilterBox.OnTextChanged += (textBox, text) => { FilterEntities(text); return true; }; + // === ITEM LIST === + var itemListFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), topFrame.RectTransform), childAnchor: Anchor.Center); + var paddedItemFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.9f), itemListFrame.RectTransform)) + { + Stretch = true, + RelativeSpacing = 0.03f + }; + var filterArea = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.15f), paddedItemFrame.RectTransform), isHorizontal: true) + { + Stretch = true, + RelativeSpacing = 0.03f, + UserData = "filterarea" + }; + new GUITextBlock(new RectTransform(new Vector2(0.2f, 1f), filterArea.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.SubHeadingFont) + { + Padding = Vector4.Zero, + AutoScaleVertical = true + }; + itemFilterBox = new GUITextBox(new RectTransform(new Vector2(0.8f, 1.0f), filterArea.RectTransform), createClearButton: true); + itemFilterBox.OnTextChanged += (textBox, text) => + { + FilterEntities(text); + return true; + }; + filterArea.RectTransform.MaxSize = new Point(int.MaxValue, itemFilterBox.Rect.Height); - itemList = new GUIListBox(new RectTransform(new Vector2(1f, 0.85f), itemListFrame.RectTransform), style: null) - { - OnSelected = (component, userdata) => + itemList = new GUIListBox(new RectTransform(new Vector2(1f, 0.9f), paddedItemFrame.RectTransform), style: null) + { + OnSelected = (component, userdata) => + { + selectedItem = userdata as FabricationRecipe; + if (selectedItem != null) SelectItem(Character.Controlled, selectedItem); + return true; + } + }; + + // === SEPARATOR === // + new GUIFrame(new RectTransform(new Vector2(0.01f, 0.9f), topFrame.RectTransform, Anchor.Center), style: "VerticalLine"); + + // === OUTPUT AREA === // + var outputArea = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1f), topFrame.RectTransform, Anchor.TopRight), childAnchor: Anchor.Center); + var paddedOutputArea = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.9f), outputArea.RectTransform)); + var outputTopArea = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.5F), paddedOutputArea.RectTransform, Anchor.Center), isHorizontal: true); + // === OUTPUT SLOT === // + outputSlot = new GUIFrame(new RectTransform(new Vector2(0.4f, 1f), outputTopArea.RectTransform), style: null); + outputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(1f, 1.2f), outputSlot.RectTransform, Anchor.BottomCenter), style: null); + new GUICustomComponent(new RectTransform(Vector2.One, outputInventoryHolder.RectTransform), DrawOutputOverLay) { CanBeFocused = false }; + // === DESCRIPTION === // + selectedItemFrame = new GUIFrame(new RectTransform(new Vector2(0.6f, 1f), outputTopArea.RectTransform), style: null); + // === REQUIREMENTS === // + selectedItemReqsFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.5f), paddedOutputArea.RectTransform), style: null); + + // === BOTTOM AREA === // + var bottomFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.3f), mainFrame.RectTransform), style: null); + + // === SEPARATOR === // + var separatorArea = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.15f), bottomFrame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.CenterLeft, isHorizontal: true) { - selectedItem = userdata as FabricationRecipe; - if (selectedItem != null) { SelectItem(Character.Controlled, selectedItem); } - return true; - } - }; - - new GUIFrame(new RectTransform(new Vector2(0.01f, 0.9f), topFrame.RectTransform, Anchor.Center), style: "VerticalLine"); + Stretch = true, + RelativeSpacing = 0.03f + }; + var inputLabel = new GUITextBlock(new RectTransform(Vector2.One, separatorArea.RectTransform), TextManager.Get("uilabel.input"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero }; + inputLabel.RectTransform.Resize(new Point((int) inputLabel.Font.MeasureString(inputLabel.Text).X, inputLabel.RectTransform.Rect.Height)); + new GUIFrame(new RectTransform(Vector2.One, separatorArea.RectTransform), style: "HorizontalLine"); - var paddedOutputFrame = new GUIFrame(new RectTransform(new Vector2(0.5f, 1f), topFrame.RectTransform, Anchor.TopRight), style: null); - var outputArea = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.9f), paddedOutputFrame.RectTransform, Anchor.Center), style: null); - - // TODO, take off the duct tape and figure out a proper way to do this \/ - var scaledFrame = new GUIFrame(new RectTransform(new Vector2(0.4f, 0.55f), outputArea.RectTransform), style: null); - outputSlot = new GUIFrame(new RectTransform(new Vector2(0.4f, 0.5f), outputArea.RectTransform), style: null); - - outputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(1.1f, 1.5f), scaledFrame.RectTransform, Anchor.BottomCenter), style: null); - outputInventoryOverlay = new GUICustomComponent(new RectTransform(Vector2.One, outputArea.RectTransform), DrawOutputOverLay) { CanBeFocused = false }; - - selectedItemFrame = new GUIFrame(new RectTransform(new Vector2(0.6f, 0.5f), outputArea.RectTransform, Anchor.TopRight), style: null); - selectedItemReqsFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.5f), outputArea.RectTransform, Anchor.BottomLeft), style: null); - - var bottomFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.35f), paddedFrame.RectTransform), style: null); - - var paddedLine = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.25f), bottomFrame.RectTransform, Anchor.TopCenter), childAnchor: Anchor.CenterLeft, isHorizontal: true) - { - Stretch = true, - RelativeSpacing = 0.02f - }; - var inputText = new GUITextBlock(new RectTransform(new Vector2(0f, 1.0f), paddedLine.RectTransform), TextManager.Get("uilabel.input"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero }; - new GUIFrame(new RectTransform(new Vector2(1f, 1.0f), paddedLine.RectTransform), style: "HorizontalLine"); - - // Resize GUITextBlock width according to the text length - inputText.RectTransform.Resize(new Point((int)inputText.Font.MeasureString(inputText.Text).X, inputText.RectTransform.Rect.Height)); - - var inputArea = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 1f), bottomFrame.RectTransform, Anchor.BottomCenter), isHorizontal: true, childAnchor: Anchor.BottomLeft); - inputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(0.8f, 1f), inputArea.RectTransform), style: null); - inputInventoryOverlay = new GUICustomComponent(new RectTransform(Vector2.One, inputInventoryHolder.RectTransform), DrawInputOverLay) { CanBeFocused = false }; + // === INPUT AREA === // + var inputArea = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 1f), bottomFrame.RectTransform, Anchor.BottomCenter), isHorizontal: true, childAnchor: Anchor.BottomLeft); + + // === INPUT SLOTS === // + inputInventoryHolder = new GUIFrame(new RectTransform(new Vector2(0.8f, 1f), inputArea.RectTransform), style: null); + new GUICustomComponent(new RectTransform(Vector2.One, inputInventoryHolder.RectTransform), DrawInputOverLay) { CanBeFocused = false }; + // === ACTIVATE BUTTON === // + var buttonFrame = new GUILayoutGroup(new RectTransform(new Vector2(0.2f, 0.8f), inputArea.RectTransform), childAnchor: Anchor.CenterRight); + activateButton = new GUIButton(new RectTransform(new Vector2(1f, 0.6f), buttonFrame.RectTransform), + TextManager.Get("FabricatorCreate"), style: "DeviceButton") + { + OnClicked = StartButtonClicked, + UserData = selectedItem, + Enabled = false + }; + // === POWER WARNING === // + inSufficientPowerWarning = new GUITextBlock(new RectTransform(Vector2.One, activateButton.RectTransform), + TextManager.Get("FabricatorNoPower"), textColor: GUI.Style.Orange, textAlignment: Alignment.Center, color: Color.Black, style: "OuterGlow") + { + HoverColor = Color.Black, + IgnoreLayoutGroups = true, + Visible = false, + CanBeFocused = false + }; CreateRecipes(); - - var buttonFrame = new GUIFrame(new RectTransform(new Vector2(0.2f, 0.8f), inputArea.RectTransform), style: null); - activateButton = new GUIButton(new RectTransform(new Vector2(1f, 0.6f), buttonFrame.RectTransform, Anchor.CenterRight), - TextManager.Get("FabricatorCreate"), style: "DeviceButton") - { - OnClicked = StartButtonClicked, - UserData = selectedItem, - Enabled = false - }; - - inSufficientPowerWarning = new GUITextBlock(new RectTransform(Vector2.One, activateButton.RectTransform), TextManager.Get("FabricatorNoPower"), - textColor: GUI.Style.Orange, textAlignment: Alignment.Center, color: Color.Black, style: "OuterGlow") - { - HoverColor = Color.Black, - IgnoreLayoutGroups = true, - Visible = false, - CanBeFocused = false - }; } partial void CreateRecipes() @@ -138,30 +168,34 @@ namespace Barotrauma.Items.Components foreach (FabricationRecipe fi in fabricationRecipes) { - GUIFrame frame = new GUIFrame(new RectTransform(new Point(itemList.Rect.Width, (int)(30 * GUI.yScale)), itemList.Content.RectTransform), style: null) + var frame = new GUIFrame(new RectTransform(new Point(itemList.Rect.Width, (int)(40 * GUI.yScale)), itemList.Content.RectTransform), style: null) { UserData = fi, HoverColor = Color.Gold * 0.2f, SelectedColor = Color.Gold * 0.5f, ToolTip = fi.TargetItem.Description }; + + var container = new GUILayoutGroup(new RectTransform(Vector2.One, frame.RectTransform), + childAnchor: Anchor.CenterLeft, isHorizontal: true) { RelativeSpacing = 0.02f }; + + var itemIcon = fi.TargetItem.InventoryIcon ?? fi.TargetItem.sprite; + if (itemIcon != null) + { + new GUIImage(new RectTransform(new Point(frame.Rect.Height,frame.Rect.Height), container.RectTransform), + itemIcon, scaleToFit: true) + { + Color = fi.TargetItem.InventoryIconColor, + ToolTip = fi.TargetItem.Description + }; + } - new GUITextBlock(new RectTransform(Vector2.Zero, frame.RectTransform, Anchor.CenterLeft) { AbsoluteOffset = new Point((int)(50 * GUI.xScale), 0) }, - fi.DisplayName) - { - ToolTip = fi.TargetItem.Description - }; - - var itemIcon = fi.TargetItem.InventoryIcon ?? fi.TargetItem.sprite; - if (itemIcon != null) - { - new GUIImage(new RectTransform(new Point((int)(30 * GUI.Scale)), frame.RectTransform, Anchor.CenterLeft) { AbsoluteOffset = new Point((int)(3 * GUI.xScale), 0) }, - itemIcon, scaleToFit: true) - { - Color = fi.TargetItem.InventoryIconColor, - ToolTip = fi.TargetItem.Description - }; - } + new GUITextBlock(new RectTransform(new Vector2(0.85f, 1f), container.RectTransform), fi.DisplayName) + { + Padding = Vector4.Zero, + AutoScaleVertical = true, + ToolTip = fi.TargetItem.Description + }; } } @@ -175,6 +209,29 @@ namespace Barotrauma.Items.Components partial void SelectProjSpecific(Character character) { + // TODO, This works fine as of now but if GUI.PreventElementOverlap ever gets fixed this block of code may become obsolete or detrimental. + // Only do this if there's only one linked component. If you link more containers then may + // GUI.PreventElementOverlap have mercy on your HUD layout + if (item.linkedTo.Count(entity => entity is Item item && item.DisplaySideBySideWhenLinked) == 1) + { + foreach (MapEntity linkedTo in item.linkedTo) + { + if (!(linkedTo is Item linkedItem)) continue; + if (!linkedItem.Components.Any()) continue; + + var itemContainer = linkedItem.Components.First(); + if (itemContainer == null) { continue; } + + if (!itemContainer.Item.DisplaySideBySideWhenLinked) continue; + + // how much spacing do we want between the components + var padding = (int) (8 * GUI.Scale); + // Move the linked container to the right and move the fabricator to the left + itemContainer.GuiFrame.RectTransform.AbsoluteOffset = new Point(GuiFrame.Rect.Width / -2 - padding, 0); + GuiFrame.RectTransform.AbsoluteOffset = new Point(itemContainer.GuiFrame.Rect.Width / 2 + padding, 0); + } + } + var nonItems = itemList.Content.Children.Where(c => !(c.UserData is FabricationRecipe)).ToList(); nonItems.ForEach(i => itemList.Content.RemoveChild(i)); @@ -197,7 +254,7 @@ namespace Barotrauma.Items.Components var sufficientSkillsText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), itemList.Content.RectTransform), TextManager.Get("fabricatorsufficientskills", returnNull: true) ?? "Sufficient skills to fabricate", textColor: GUI.Style.Green, font: GUI.SubHeadingFont) { - AutoScale = true, + AutoScaleHorizontal = true, CanBeFocused = false }; sufficientSkillsText.RectTransform.SetAsFirstChild(); @@ -205,7 +262,7 @@ namespace Barotrauma.Items.Components var insufficientSkillsText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), itemList.Content.RectTransform), TextManager.Get("fabricatorinsufficientskills", returnNull: true) ?? "Insufficient skills to fabricate", textColor: Color.Orange, font: GUI.SubHeadingFont) { - AutoScale = true, + AutoScaleHorizontal = true, CanBeFocused = false }; var firstinSufficient = itemList.Content.Children.FirstOrDefault(c => c.UserData is FabricationRecipe fabricableItem && DegreeOfSuccess(character, fabricableItem.RequiredSkills) < 0.5f); @@ -361,7 +418,7 @@ namespace Barotrauma.Items.Components selectedItemReqsFrame.ClearChildren(); var paddedFrame = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.9f), selectedItemFrame.RectTransform, Anchor.Center)) { RelativeSpacing = 0.03f }; - var paddedReqFrame = new GUILayoutGroup(new RectTransform(new Vector2(1f, 1f), selectedItemReqsFrame.RectTransform, Anchor.Center)) { RelativeSpacing = 0.03f }; + var paddedReqFrame = new GUILayoutGroup(new RectTransform(new Vector2(1f, 0.9f), selectedItemReqsFrame.RectTransform, Anchor.Center)) { RelativeSpacing = 0.03f }; /*var itemIcon = selectedItem.TargetItem.InventoryIcon ?? selectedItem.TargetItem.sprite; if (itemIcon != null) @@ -375,7 +432,7 @@ namespace Barotrauma.Items.Components var nameBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedFrame.RectTransform), selectedItem.TargetItem.Name, textAlignment: Alignment.CenterLeft, textColor: Color.Aqua, font: GUI.SubHeadingFont) { - AutoScale = true + AutoScaleHorizontal = true }; nameBlock.Padding = new Vector4(0, nameBlock.Padding.Y, nameBlock.Padding.Z, nameBlock.Padding.W); @@ -409,7 +466,7 @@ namespace Barotrauma.Items.Components new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedReqFrame.RectTransform), TextManager.Get("FabricatorRequiredSkills"), textColor: inadequateSkills.Any() ? GUI.Style.Red : GUI.Style.Green, font: GUI.SubHeadingFont) { - AutoScale = true, + AutoScaleHorizontal = true, }; foreach (Skill skill in selectedItem.RequiredSkills) { @@ -427,7 +484,7 @@ namespace Barotrauma.Items.Components new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedReqFrame.RectTransform), TextManager.Get("FabricatorRequiredTime") , textColor: ToolBox.GradientLerp(degreeOfSuccess, GUI.Style.Red, Color.Yellow, GUI.Style.Green), font: GUI.SubHeadingFont) { - AutoScale = true, + AutoScaleHorizontal = true, }; new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedReqFrame.RectTransform), ToolBox.SecondsToReadableTime(requiredTime), @@ -506,8 +563,10 @@ namespace Barotrauma.Items.Components activateButton.Enabled = canBeFabricated; } - child.GetChild().TextColor = Color.White * (canBeFabricated ? 1.0f : 0.5f); - child.GetChild().Color = itemPrefab.TargetItem.InventoryIconColor * (canBeFabricated ? 1.0f : 0.5f); + var childContainer = child.GetChild(); + + childContainer.GetChild().TextColor = Color.White * (canBeFabricated ? 1.0f : 0.5f); + childContainer.GetChild().Color = itemPrefab.TargetItem.InventoryIconColor * (canBeFabricated ? 1.0f : 0.5f); } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs index 75580ab4f..cb72b3f01 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs @@ -26,6 +26,7 @@ namespace Barotrauma.Items.Components noPowerTip = TextManager.Get("SteeringNoPowerTip"); GuiFrame.RectTransform.RelativeOffset = new Vector2(0.05f, 0.0f); + GuiFrame.CanBeFocused = true; new GUICustomComponent(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, DrawHUDBack, null); submarineContainer = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.9f), GuiFrame.RectTransform, Anchor.Center), style: null); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs index 1244202f7..f0384d4b5 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs @@ -55,7 +55,7 @@ namespace Barotrauma.Items.Components { CanBeFocused = false }; - powerLight.TextBlock.AutoScale = true; + powerLight.TextBlock.AutoScaleHorizontal = true; powerLight.TextBlock.OverrideTextColor(GUI.Style.TextColor); PowerButton = new GUIButton(new RectTransform(new Vector2(0.8f, 0.75f), paddedPowerArea.RectTransform, Anchor.TopCenter) { @@ -83,14 +83,14 @@ namespace Barotrauma.Items.Components { CanBeFocused = false }; - autoControlIndicator.TextBlock.AutoScale = true; + autoControlIndicator.TextBlock.AutoScaleHorizontal = true; autoControlIndicator.TextBlock.OverrideTextColor(GUI.Style.TextColor); var sliderArea = new GUIFrame(new RectTransform(new Vector2(1, 0.65f), rightArea.RectTransform, Anchor.BottomLeft), style: null); var pumpSpeedText = new GUITextBlock(new RectTransform(new Vector2(1, 0.3f), sliderArea.RectTransform, Anchor.TopLeft), "", textColor: GUI.Style.TextColor, textAlignment: Alignment.CenterLeft, wrap: false, font: GUI.SubHeadingFont) { - AutoScale = true + AutoScaleHorizontal = true }; string pumpSpeedStr = TextManager.Get("PumpSpeed"); pumpSpeedText.TextGetter = () => { return TextManager.AddPunctuation(':', pumpSpeedStr, (int)flowPercentage + " %"); }; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Reactor.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Reactor.cs index 71b31a810..6a204d051 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Reactor.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Reactor.cs @@ -75,7 +75,7 @@ namespace Barotrauma.Items.Components graphLine = new Sprite(element.GetChildElement("graphline")?.GetChildElement("sprite")); var paddedFrame = new GUILayoutGroup(new RectTransform( - GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin.Multiply(new Vector2(1.4f, 1.2f)), GuiFrame.RectTransform, Anchor.Center) + GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, isHorizontal: true) { @@ -90,6 +90,7 @@ namespace Barotrauma.Items.Components }; GUILayoutGroup columnRight = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 1.0f), paddedFrame.RectTransform)) { + CanBeFocused = true, RelativeSpacing = 0.012f, Stretch = true }; @@ -104,7 +105,7 @@ namespace Barotrauma.Items.Components RelativeOffset = new Vector2(-0.02f, 0) }, style: "ItemUI"); - GUILayoutGroup inventoryContent = new GUILayoutGroup(new RectTransform(inventoryWindow.Rect.Size - GUIStyle.ItemFrameMargin.Multiply(0.75f), inventoryWindow.RectTransform, Anchor.Center) + GUILayoutGroup inventoryContent = new GUILayoutGroup(new RectTransform(inventoryWindow.Rect.Size - GUIStyle.ItemFrameMargin, inventoryWindow.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, childAnchor: Anchor.TopCenter) { @@ -126,6 +127,7 @@ namespace Barotrauma.Items.Components RelativeSpacing = 0.02f }; + Point maxIndicatorSize = new Point(int.MaxValue, (int)(50 * GUI.Scale)); criticalHeatWarning = new GUITickBox(new RectTransform(new Vector2(0.3f, 1.0f), topLeftArea.RectTransform) { MaxSize = maxIndicatorSize }, TextManager.Get("ReactorWarningCriticalTemp"), font: GUI.SubHeadingFont, style: "IndicatorLightRed") @@ -142,16 +144,14 @@ namespace Barotrauma.Items.Components { CanBeFocused = false }; - criticalHeatWarning.TextBlock.OverrideTextColor(GUI.Style.TextColor); - lowTemperatureWarning.TextBlock.OverrideTextColor(GUI.Style.TextColor); - criticalOutputWarning.TextBlock.OverrideTextColor(GUI.Style.TextColor); - + List indicatorLights = new List() { criticalHeatWarning, lowTemperatureWarning, criticalOutputWarning }; + indicatorLights.ForEach(l => l.TextBlock.OverrideTextColor(GUI.Style.TextColor)); topLeftArea.Recalculate(); - + new GUIFrame(new RectTransform(new Vector2(1.0f, 0.01f), columnLeft.RectTransform), style: "HorizontalLine"); float relativeYMargin = 0.02f; - Vector2 relativeTextSize = new Vector2(0.8f, 0.1f); + Vector2 relativeTextSize = new Vector2(0.9f, 0.2f); Vector2 sliderSize = new Vector2(1.0f, 0.125f); Vector2 meterSize = new Vector2(1, 1 - relativeTextSize.Y - relativeYMargin - sliderSize.Y - 0.1f); @@ -162,7 +162,7 @@ namespace Barotrauma.Items.Components var fissionRateTextBox = new GUITextBlock(new RectTransform(relativeTextSize, leftArea.RectTransform, Anchor.TopCenter), TextManager.Get("ReactorFissionRate"), textColor: GUI.Style.TextColor, textAlignment: Alignment.Center, font: GUI.SubHeadingFont) { - AutoScale = true + AutoScaleHorizontal = true }; var fissionMeter = new GUICustomComponent(new RectTransform(meterSize, leftArea.RectTransform, Anchor.TopCenter) { @@ -176,7 +176,7 @@ namespace Barotrauma.Items.Components var turbineOutputTextBox = new GUITextBlock(new RectTransform(relativeTextSize, rightArea.RectTransform, Anchor.TopCenter), TextManager.Get("ReactorTurbineOutput"), textColor: GUI.Style.TextColor, textAlignment: Alignment.Center, font: GUI.SubHeadingFont) { - AutoScale = true + AutoScaleHorizontal = true }; GUITextBlock.AutoScaleAndNormalize(turbineOutputTextBox, fissionRateTextBox); @@ -248,11 +248,12 @@ namespace Barotrauma.Items.Components Font = GUI.SubHeadingFont, CanBeFocused = false }; - b.TextBlock.Wrap = false; warningButtons.Add(text, b); } upperButtons.Recalculate(); lowerButtons.Recalculate(); + //only wrap texts that consist of multiple words and are way too big to fit otherwise + warningButtons.Values.ForEach(b => b.TextBlock.Wrap = b.Text.Contains(' ') && b.TextBlock.TextSize.X > b.TextBlock.Rect.Width * 1.5f); GUITextBlock.AutoScaleAndNormalize(warningButtons.Values.Select(b => b.TextBlock)); //---------------------------------------------------------- @@ -266,6 +267,7 @@ namespace Barotrauma.Items.Components Stretch = true, RelativeSpacing = 0.02f }; + topRightArea.RectTransform.MinSize = new Point(0, topLeftArea.Rect.Height); topRightArea.RectTransform.MaxSize = new Point(int.MaxValue, topLeftArea.Rect.Height); new GUIFrame(new RectTransform(new Vector2(0.01f, 1.0f), topRightArea.RectTransform), style: "VerticalLine"); @@ -284,12 +286,12 @@ namespace Barotrauma.Items.Components } }; AutoTempSwitch.RectTransform.MaxSize = new Point((int)(AutoTempSwitch.Rect.Height * 0.4f), int.MaxValue); - + autoTempLight = new GUITickBox(new RectTransform(new Vector2(0.4f, 1.0f), topRightArea.RectTransform), TextManager.Get("ReactorAutoTemp"), font: GUI.SubHeadingFont, style: "IndicatorLightYellow") { ToolTip = TextManager.Get("ReactorTipAutoTemp"), - CanBeFocused = true, + CanBeFocused = false, Selected = AutoTemp }; autoTempLight.RectTransform.MaxSize = new Point(int.MaxValue, criticalHeatWarning.Rect.Height); @@ -300,13 +302,14 @@ namespace Barotrauma.Items.Components // Power button var powerArea = new GUIFrame(new RectTransform(new Vector2(0.4f, 1.0f), topRightArea.RectTransform), style: null); var paddedPowerArea = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), powerArea.RectTransform, Anchor.Center, scaleBasis: ScaleBasis.BothHeight), style: "PowerButtonFrame"); - powerLight = new GUITickBox(new RectTransform(new Vector2(0.87f, 0.2f), paddedPowerArea.RectTransform, Anchor.TopCenter, Pivot.Center), + powerLight = new GUITickBox(new RectTransform(new Vector2(0.87f, 0.3f), paddedPowerArea.RectTransform, Anchor.TopCenter, Pivot.Center), TextManager.Get("PowerLabel"), font: GUI.SubHeadingFont, style: "IndicatorLightPower") { CanBeFocused = false, Selected = _powerOn }; - powerLight.TextBlock.AutoScale = true; + powerLight.TextBlock.Padding = new Vector4(5.0f, 0.0f, 0.0f, 0.0f); + powerLight.TextBlock.AutoScaleHorizontal = true; powerLight.TextBlock.OverrideTextColor(GUI.Style.TextColor); PowerButton = new GUIButton(new RectTransform(new Vector2(0.8f, 0.75f), paddedPowerArea.RectTransform, Anchor.BottomCenter) { @@ -324,16 +327,17 @@ namespace Barotrauma.Items.Components topRightArea.Recalculate(); autoTempLight.TextBlock.Wrap = true; - GUITextBlock.AutoScaleAndNormalize( - criticalHeatWarning.TextBlock, lowTemperatureWarning.TextBlock, criticalOutputWarning.TextBlock, autoTempLight.TextBlock); + indicatorLights.Add(autoTempLight); + GUITextBlock.AutoScaleAndNormalize(indicatorLights.Select(l => l.TextBlock)); // right bottom (graph area) ----------------------- new GUIFrame(new RectTransform(new Vector2(0.95f, 0.01f), columnRight.RectTransform), style: "HorizontalLine"); - var bottomRightArea = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.6f), columnRight.RectTransform), isHorizontal: true) + var bottomRightArea = new GUILayoutGroup(new RectTransform(Vector2.One, columnRight.RectTransform), isHorizontal: true) { Stretch = true, + CanBeFocused = true, RelativeSpacing = 0.02f }; @@ -347,7 +351,7 @@ namespace Barotrauma.Items.Components RelativeSpacing = 0.02f }; - relativeTextSize = new Vector2(1.0f, 0.0f); + relativeTextSize = new Vector2(1.0f, 0.15f); var loadText = new GUITextBlock(new RectTransform(relativeTextSize, graphArea.RectTransform), "Load", textColor: loadColor, font: GUI.SubHeadingFont, textAlignment: Alignment.CenterLeft) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Sonar.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Sonar.cs index 0e9266229..e72a1048d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Sonar.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Sonar.cs @@ -72,20 +72,24 @@ namespace Barotrauma.Items.Components private readonly Color negativeColor = Color.Red; private readonly Color markerColor = Color.Red; + public static readonly Vector2 controlBoxSize = new Vector2(0.33f, 0.32f); + public static readonly Vector2 controlBoxOffset = new Vector2(0.025f, 0); + public static readonly float sonarAreaSize = 1.09f; + private static readonly Dictionary blipColorGradient = new Dictionary() { - { + { BlipType.Default, - new Color[] { Color.TransparentBlack, new Color(0, 50, 160), new Color(0, 133, 166), new Color(2, 159, 30), new Color(255, 255, 255) } + new Color[] { Color.TransparentBlack, new Color(0, 50, 160), new Color(0, 133, 166), new Color(2, 159, 30), new Color(255, 255, 255) } }, - { + { BlipType.Disruption, - new Color[] { Color.TransparentBlack, new Color(254, 68, 19), new Color(255, 220, 62), new Color(255, 255, 255) } + new Color[] { Color.TransparentBlack, new Color(254, 68, 19), new Color(255, 220, 62), new Color(255, 255, 255) } } }; private float prevDockingDist; - + public Vector2 DisplayOffset { get; private set; } public float DisplayRadius { get; private set; } @@ -132,29 +136,28 @@ namespace Barotrauma.Items.Components } } CreateGUI(); - GameMain.Instance.OnResolutionChanged += ResetLayout; - // TODO: do we need to react on this? - GameMain.Config.OnHUDScaleChanged += ResetLayout; + GameMain.Instance.OnResolutionChanged += RecreateGUI; } - private void ResetLayout() + private void RecreateGUI() { - GuiFrame.RectTransform.Children.ForEachMod(c => c.Parent = null); + GuiFrame.ClearChildren(); CreateGUI(); } private void CreateGUI() { - controlContainer = new GUIFrame(new RectTransform(new Vector2(controlContainerRelativeWidth, 0.32f), GuiFrame.RectTransform, Anchor.TopRight) - { - RelativeOffset = new Vector2(controlContainerRelativeOffset, 0) - }, "ItemUI"); + bool isConnectedToSteering = item.GetComponent() != null; + Vector2 size = isConnectedToSteering ? controlBoxSize : new Vector2(controlBoxSize.X * 2.0f, controlBoxSize.Y); + controlContainer = new GUIFrame(new RectTransform(size, GuiFrame.RectTransform, Anchor.BottomRight, Pivot.BottomLeft), "ItemUI"); var paddedControlContainer = new GUIFrame(new RectTransform(controlContainer.Rect.Size - GUIStyle.ItemFrameMargin, controlContainer.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, style: null); - var sonarModeArea = new GUIFrame(new RectTransform(new Vector2(1, 0.5f), paddedControlContainer.RectTransform, Anchor.TopCenter), style: null); + // Based on the height difference to the steering control box so that the elements keep the same size + float extraHeight = 0.03f; + var sonarModeArea = new GUIFrame(new RectTransform(new Vector2(1, 0.4f + extraHeight), paddedControlContainer.RectTransform, Anchor.TopCenter), style: null); SonarModeSwitch = new GUIButton(new RectTransform(new Vector2(0.2f, 1), sonarModeArea.RectTransform), string.Empty, style: "SwitchVertical") { Selected = false, @@ -192,13 +195,11 @@ namespace Barotrauma.Items.Components passiveTickBox.TextBlock.OverrideTextColor(GUI.Style.TextColor); activeTickBox.TextBlock.OverrideTextColor(GUI.Style.TextColor); - var zoomContainer = new GUIFrame(new RectTransform(new Vector2(1, 0.2f), paddedControlContainer.RectTransform, Anchor.TopCenter) - { - RelativeOffset = new Vector2(0, sonarModeArea.RectTransform.RelativeSize.Y + 0.025f) - }, style: null); - new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.6f), zoomContainer.RectTransform, Anchor.CenterLeft), + var lowerArea = new GUIFrame(new RectTransform(new Vector2(1, 0.4f + extraHeight), paddedControlContainer.RectTransform, Anchor.BottomCenter), style: null); + var zoomContainer = new GUIFrame(new RectTransform(new Vector2(1, 0.45f), lowerArea.RectTransform, Anchor.TopCenter), style: null); + var zoomText = new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.6f), zoomContainer.RectTransform, Anchor.CenterLeft), TextManager.Get("SonarZoom"), font: GUI.SubHeadingFont, textAlignment: Alignment.CenterRight); - zoomSlider = new GUIScrollBar(new RectTransform(new Vector2(0.6f, 0.8f), zoomContainer.RectTransform, Anchor.CenterLeft) + zoomSlider = new GUIScrollBar(new RectTransform(new Vector2(0.5f, 0.8f), zoomContainer.RectTransform, Anchor.CenterLeft) { RelativeOffset = new Vector2(0.35f, 0) }, barSize: 0.15f, isHorizontal: true, style: "DeviceSlider") @@ -215,11 +216,9 @@ namespace Barotrauma.Items.Components } }; - var directionalModeFrame = new GUIFrame(new RectTransform(new Vector2(1, 0.2f), paddedControlContainer.RectTransform, Anchor.BottomCenter), style: null); - new GUIFrame(new RectTransform(new Vector2(0.9f, 0.01f), directionalModeFrame.RectTransform, Anchor.TopCenter, Pivot.BottomCenter) - { - RelativeOffset = new Vector2(0, -0.15f) - }, style: "HorizontalLine"); + new GUIFrame(new RectTransform(new Vector2(0.8f, 0.01f), paddedControlContainer.RectTransform, Anchor.Center), style: "HorizontalLine"); + + var directionalModeFrame = new GUIFrame(new RectTransform(new Vector2(1, 0.45f), lowerArea.RectTransform, Anchor.BottomCenter), style: null); directionalModeSwitch = new GUIButton(new RectTransform(new Vector2(0.3f, 0.8f), directionalModeFrame.RectTransform, Anchor.CenterLeft), string.Empty, style: "SwitchHorizontal") { OnClicked = (button, data) => @@ -241,14 +240,22 @@ namespace Barotrauma.Items.Components GuiFrame.CanBeFocused = false; - sonarView = new GUICustomComponent(new RectTransform(SonarAreaSize, GuiFrame.RectTransform, Anchor.CenterLeft), - (spriteBatch, guiCustomComponent) => { DrawSonar(spriteBatch, guiCustomComponent.Rect); }, null); - sonarView.RectTransform.SetAsFirstChild(); - } + GUITextBlock.AutoScaleAndNormalize(passiveTickBox.TextBlock, activeTickBox.TextBlock, zoomText, directionalModeSwitchText); - public static readonly float controlContainerRelativeWidth = 0.35f; - public static readonly float controlContainerRelativeOffset = 0.1f; - public static Vector2 SonarAreaSize => Vector2.One - new Vector2(controlContainerRelativeWidth + controlContainerRelativeOffset); + sonarView = new GUICustomComponent(new RectTransform(Vector2.One * 0.7f, GuiFrame.RectTransform, Anchor.BottomRight, scaleBasis: ScaleBasis.BothHeight), + (spriteBatch, guiCustomComponent) => { DrawSonar(spriteBatch, guiCustomComponent.Rect); }, null); + + // Setup layout for nav terminal + if (isConnectedToSteering) + { + controlContainer.RectTransform.SetPosition(Anchor.TopLeft); + controlContainer.RectTransform.RelativeOffset = controlBoxOffset; + sonarView.RectTransform.ScaleBasis = ScaleBasis.Smallest; + sonarView.RectTransform.SetPosition(Anchor.CenterRight); + sonarView.RectTransform.Resize(Vector2.One * GUI.RelativeHorizontalAspectRatio * sonarAreaSize); + GUITextBlock.AutoScaleAndNormalize(passiveTickBox.TextBlock, activeTickBox.TextBlock, zoomText, directionalModeSwitchText); + } + } private void SetPingDirection(Vector2 direction) { @@ -380,7 +387,6 @@ namespace Barotrauma.Items.Components else if (transducerCenter.X > Level.Loaded.Size.X) { outsideLevelFlow = -(transducerCenter.X - Level.Loaded.Size.X) * 0.001f; - } if (Rand.Range(0.0f, 100.0f) < Math.Abs(outsideLevelFlow)) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs index d3a5447a7..700028d02 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs @@ -103,16 +103,14 @@ namespace Barotrauma.Items.Components } } CreateGUI(); - GameMain.Instance.OnResolutionChanged += ResetGUI; - // TODO: do we need to react on this? - GameMain.Config.OnHUDScaleChanged += ResetGUI; + GameMain.Instance.OnResolutionChanged += RecreateGUI; } private void CreateGUI() { - controlContainer = new GUIFrame(new RectTransform(new Vector2(0.3f, 0.36f), GuiFrame.RectTransform, Anchor.CenterRight) + controlContainer = new GUIFrame(new RectTransform(new Vector2(Sonar.controlBoxSize.X, Sonar.controlBoxSize.Y + 0.02f), GuiFrame.RectTransform, Anchor.CenterLeft) { - RelativeOffset = new Vector2(Sonar.controlContainerRelativeOffset / 2, 0.01f) // Based on the relative size differende of the steering and the status windows + RelativeOffset = new Vector2(0, 0) // The y offset should be based on the relative size difference of the steering and the status windows }, "ItemUI"); var paddedControlContainer = new GUIFrame(new RectTransform(controlContainer.Rect.Size - GUIStyle.ItemFrameMargin, controlContainer.RectTransform, Anchor.Center) { @@ -156,15 +154,18 @@ namespace Barotrauma.Items.Components autopilotIndicator.TextBlock.OverrideTextColor(GUI.Style.TextColor); GUITextBlock.AutoScaleAndNormalize(manualPilotIndicator.TextBlock, autopilotIndicator.TextBlock); - var autoPilotControls = new GUIFrame(new RectTransform(new Vector2(0.8f, 0.6f), paddedControlContainer.RectTransform, Anchor.BottomRight), "OutlineFrame"); - var paddedAutoPilotControls = new GUILayoutGroup(new RectTransform(new Vector2(0.9f), autoPilotControls.RectTransform, Anchor.Center)) + var autoPilotControls = new GUIFrame(new RectTransform(new Vector2(0.8f, 0.6f), paddedControlContainer.RectTransform, Anchor.BottomCenter) + { + RelativeOffset = new Vector2(0, 0.02f) + }, "OutlineFrame"); + var paddedAutoPilotControls = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.85f), autoPilotControls.RectTransform, Anchor.Center)) { Stretch = true, RelativeSpacing = 0.03f, - ChildAnchor = Anchor.TopCenter + ChildAnchor = Anchor.TopLeft }; - maintainPosTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.2f), paddedAutoPilotControls.RectTransform), + maintainPosTickBox = new GUITickBox(new RectTransform(new Vector2(1, 0.3f), paddedAutoPilotControls.RectTransform), TextManager.Get("SteeringMaintainPos"), font: GUI.SmallFont, style: "GUIRadioButton") { Enabled = false, @@ -200,8 +201,8 @@ namespace Barotrauma.Items.Components } }; - levelStartTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.2f), paddedAutoPilotControls.RectTransform), - GameMain.GameSession?.StartLocation == null ? "" : ToolBox.LimitString(GameMain.GameSession.StartLocation.Name, 20), + levelStartTickBox = new GUITickBox(new RectTransform(new Vector2(1, 0.3f), paddedAutoPilotControls.RectTransform), + GameMain.GameSession?.StartLocation == null ? "" : ToolBox.LimitString(GameMain.GameSession.StartLocation.Name, 30), font: GUI.SmallFont, style: "GUIRadioButton") { Enabled = false, @@ -227,8 +228,8 @@ namespace Barotrauma.Items.Components } }; - levelEndTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.2f), paddedAutoPilotControls.RectTransform), - GameMain.GameSession?.EndLocation == null ? "" : ToolBox.LimitString(GameMain.GameSession.EndLocation.Name, 20), + levelEndTickBox = new GUITickBox(new RectTransform(new Vector2(1, 0.3f), paddedAutoPilotControls.RectTransform), + GameMain.GameSession?.EndLocation == null ? "" : ToolBox.LimitString(GameMain.GameSession.EndLocation.Name, 30), font: GUI.SmallFont, style: "GUIRadioButton") { Enabled = false, @@ -256,7 +257,7 @@ namespace Barotrauma.Items.Components GUITextBlock.AutoScaleAndNormalize(maintainPosTickBox.TextBlock, levelStartTickBox.TextBlock, levelEndTickBox.TextBlock); maintainPosTickBox.RectTransform.IsFixedSize = levelStartTickBox.RectTransform.IsFixedSize = levelEndTickBox.RectTransform.IsFixedSize = false; - maintainPosTickBox.RectTransform.MaxSize = levelStartTickBox.RectTransform.MaxSize = levelEndTickBox.RectTransform.MaxSize = + maintainPosTickBox.RectTransform.MaxSize = levelStartTickBox.RectTransform.MaxSize = levelEndTickBox.RectTransform.MaxSize = new Point(int.MaxValue, paddedAutoPilotControls.Rect.Height / 3); maintainPosTickBox.RectTransform.MinSize = levelStartTickBox.RectTransform.MinSize = levelEndTickBox.RectTransform.MinSize = Point.Zero; @@ -269,16 +270,16 @@ namespace Barotrauma.Items.Components levelStartSelected ? Destination.LevelStart : Destination.LevelEnd); // Status -> - statusContainer = new GUIFrame(new RectTransform(new Vector2(0.33f, 0.3f), GuiFrame.RectTransform, Anchor.BottomRight) + statusContainer = new GUIFrame(new RectTransform(Sonar.controlBoxSize, GuiFrame.RectTransform, Anchor.BottomLeft) { - RelativeOffset = new Vector2(Sonar.controlContainerRelativeOffset, 0) + RelativeOffset = Sonar.controlBoxOffset }, "ItemUI"); - var paddedStatusContainer = new GUIFrame(new RectTransform(statusContainer.Rect.Size - GUIStyle.ItemFrameMargin, statusContainer.RectTransform, Anchor.Center) + var paddedStatusContainer = new GUIFrame(new RectTransform(statusContainer.Rect.Size - GUIStyle.ItemFrameMargin, statusContainer.RectTransform, Anchor.Center, isFixedSize: false) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, style: null); - var elements = GUI.CreateElements(3, new Vector2(1f, 0.323f), paddedStatusContainer.RectTransform, rt => new GUIFrame(rt, style: null), Anchor.TopCenter, relativeSpacing: 0.01f); + var elements = GUI.CreateElements(3, new Vector2(1f, 0.333f), paddedStatusContainer.RectTransform, rt => new GUIFrame(rt, style: null), Anchor.TopCenter, relativeSpacing: 0.01f); List leftElements = new List(), centerElements = new List(), rightElements = new List(); for (int i = 0; i < elements.Count; i++) { @@ -288,9 +289,9 @@ namespace Barotrauma.Items.Components RelativeSpacing = 0.01f, Stretch = true }; - var left = new GUIFrame(new RectTransform(new Vector2(0.5f, 1), group.RectTransform), style: null); - var center = new GUIFrame(new RectTransform(new Vector2(0.175f, 1), group.RectTransform), style: null); - var right = new GUIFrame(new RectTransform(new Vector2(0.325f, 0.8f), group.RectTransform), style: null); + var left = new GUIFrame(new RectTransform(new Vector2(0.45f, 1), group.RectTransform), style: null); + var center = new GUIFrame(new RectTransform(new Vector2(0.15f, 1), group.RectTransform), style: null); + var right = new GUIFrame(new RectTransform(new Vector2(0.4f, 0.8f), group.RectTransform), style: null); leftElements.Add(left); centerElements.Add(center); rightElements.Add(right); @@ -338,36 +339,15 @@ namespace Barotrauma.Items.Components }; } GUITextBlock.AutoScaleAndNormalize(leftElements.SelectMany(e => e.GetAllChildren())); - // TODO: center texts are too small on low resolutions GUITextBlock.AutoScaleAndNormalize(centerElements.SelectMany(e => e.GetAllChildren())); GUITextBlock.AutoScaleAndNormalize(rightElements.SelectMany(e => e.GetAllChildren())); - pressureWarningText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.25f), paddedStatusContainer.RectTransform), TextManager.Get("SteeringDepthWarning"), GUI.Style.Red) - { - Visible = false - }; - - tipContainer = new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.1f), GuiFrame.RectTransform, Anchor.BottomCenter, Pivot.TopCenter) - { - RelativeOffset = new Vector2(-0.2f, 0.0f) - }, "", font: GUI.Font, wrap: true, style: "GUIToolTip", textAlignment: Alignment.Center) - { - AutoScale = true - }; - - noPowerTip = TextManager.Get("SteeringNoPowerTip"); - autoPilotMaintainPosTip = TextManager.Get("SteeringAutoPilotMaintainPosTip"); - autoPilotLevelStartTip = TextManager.GetWithVariable("SteeringAutoPilotLocationTip", "[locationname]", - GameMain.GameSession?.StartLocation == null ? "Start" : GameMain.GameSession.StartLocation.Name); - autoPilotLevelEndTip = TextManager.GetWithVariable("SteeringAutoPilotLocationTip", "[locationname]", - GameMain.GameSession?.EndLocation == null ? "End" : GameMain.GameSession.EndLocation.Name); - //docking interface ---------------------------------------------------- float dockingButtonSize = 1.1f; float elementScale = 0.6f; - dockingContainer = new GUIFrame(new RectTransform(new Point(160).Multiply(GUI.Scale * dockingButtonSize), GuiFrame.RectTransform, Anchor.BottomRight) + dockingContainer = new GUIFrame(new RectTransform(new Point(160).Multiply(GUI.Scale * dockingButtonSize), GuiFrame.RectTransform, Anchor.BottomLeft) { - RelativeOffset = new Vector2(Sonar.controlContainerRelativeOffset + 0.05f, -0.05f) + RelativeOffset = new Vector2(Sonar.controlBoxOffset.X + 0.15f, -0.1f) }, style: null); dockText = TextManager.Get("label.navterminaldock", fallBackTag: "captain.dock"); @@ -416,16 +396,32 @@ namespace Barotrauma.Items.Components UserData = -Vector2.UnitY }; - steerArea = new GUICustomComponent(new RectTransform(Sonar.SonarAreaSize, GuiFrame.RectTransform, Anchor.CenterLeft), + // Sonar area + steerArea = new GUICustomComponent(new RectTransform(Vector2.One * GUI.RelativeHorizontalAspectRatio * Sonar.sonarAreaSize, GuiFrame.RectTransform, Anchor.CenterRight, scaleBasis: ScaleBasis.Smallest), (spriteBatch, guiCustomComponent) => { DrawHUD(spriteBatch, guiCustomComponent.Rect); }, null); - steerArea.RectTransform.SetAsFirstChild(); steerRadius = steerArea.Rect.Width / 2; + + // Tooltip/helper text + pressureWarningText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.25f), paddedStatusContainer.RectTransform), TextManager.Get("SteeringDepthWarning"), GUI.Style.Red) + { + Visible = false + }; + tipContainer = new GUITextBlock(new RectTransform(new Vector2(0.5f, 0.1f), steerArea.RectTransform, Anchor.BottomCenter, Pivot.TopCenter) + , "", font: GUI.Font, wrap: true, style: "GUIToolTip", textAlignment: Alignment.Center) + { + AutoScaleHorizontal = true + }; + noPowerTip = TextManager.Get("SteeringNoPowerTip"); + autoPilotMaintainPosTip = TextManager.Get("SteeringAutoPilotMaintainPosTip"); + autoPilotLevelStartTip = TextManager.GetWithVariable("SteeringAutoPilotLocationTip", "[locationname]", + GameMain.GameSession?.StartLocation == null ? "Start" : GameMain.GameSession.StartLocation.Name); + autoPilotLevelEndTip = TextManager.GetWithVariable("SteeringAutoPilotLocationTip", "[locationname]", + GameMain.GameSession?.EndLocation == null ? "End" : GameMain.GameSession.EndLocation.Name); } - - private void ResetGUI() + private void RecreateGUI() { - GuiFrame.RectTransform.Children.ForEachMod(c => c.Parent = null); + GuiFrame.ClearChildren(); CreateGUI(); } @@ -706,7 +702,7 @@ namespace Barotrauma.Items.Components if (PlayerInput.KeyDown(InputType.Right)) { input += Vector2.UnitX; } if (PlayerInput.KeyDown(InputType.Up)) { input += Vector2.UnitY; } if (PlayerInput.KeyDown(InputType.Down)) { input -= Vector2.UnitY; } - if (PlayerInput.KeyDown(Keys.LeftShift)) + if (PlayerInput.KeyDown(InputType.Run)) { SteeringInput += input * deltaTime * 200; inputCumulation = 0; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerTransfer.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerTransfer.cs index 32c411ff8..c010891d3 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerTransfer.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerTransfer.cs @@ -99,7 +99,7 @@ namespace Barotrauma.Items.Components }; GUITextBlock.AutoScaleAndNormalize(powerLabel, loadLabel); - GUITextBlock.AutoScaleAndNormalize(powerText, loadText); + GUITextBlock.AutoScaleAndNormalize(true, true, powerText, loadText); GUITextBlock.AutoScaleAndNormalize(kw1, kw2); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Connection.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Connection.cs index 5f33deade..0486d3c53 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Connection.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Connection.cs @@ -184,7 +184,7 @@ namespace Barotrauma.Items.Components x = (int)(x + width / 2 - step * (panel.DisconnectedWires.Count() - 1) / 2); foreach (Wire wire in panel.DisconnectedWires) { - if (wire == DraggingConnected && mouseInRect) { continue; } + if (wire == DraggingConnected && !mouseInRect) { continue; } Connection recipient = wire.OtherConnection(null); string label = recipient == null ? "" : recipient.item.Name + $" ({recipient.DisplayName})"; @@ -197,7 +197,10 @@ namespace Barotrauma.Items.Components //stop dragging a wire item if the cursor is within any connection panel //(so we don't drop the item when dropping the wire on a connection) - if (mouseInRect || GUI.MouseOn?.UserData is ConnectionPanel) { Inventory.draggingItem = null; } + if (mouseInRect || (GUI.MouseOn?.UserData is ConnectionPanel && GUI.MouseOn.MouseRect.Contains(PlayerInput.MousePosition))) + { + Inventory.draggingItem = null; + } } private void DrawConnection(SpriteBatch spriteBatch, ConnectionPanel panel, Vector2 position, Vector2 labelPos, Vector2 scale) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/CustomInterface.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/CustomInterface.cs index 6b9c2f67f..734020e22 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/CustomInterface.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/CustomInterface.cs @@ -10,33 +10,52 @@ namespace Barotrauma.Items.Components { partial class CustomInterface { - private List uiElements = new List(); + private readonly List uiElements = new List(); private GUILayoutGroup uiElementContainer; + private Point ElementMaxSize => new Point(uiElementContainer.Rect.Width, (int)(60 * GUI.yScale)); + partial void InitProjSpecific(XElement element) + { + CreateGUI(); + GameMain.Instance.OnResolutionChanged += RecreateGUI; + } + + private void RecreateGUI() + { + GuiFrame.ClearChildren(); + CreateGUI(); + } + + private void CreateGUI() { uiElements.Clear(); - var visibleElements = customInterfaceElementList.Where(ciElement => !string.IsNullOrEmpty(ciElement.Label)); - - uiElementContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.75f, 0.65f), GuiFrame.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.0f, 0.025f) }, + uiElementContainer = new GUILayoutGroup(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) + { + AbsoluteOffset = GUIStyle.ItemFrameOffset + }, childAnchor: customInterfaceElementList.Count > 1 ? Anchor.TopCenter : Anchor.Center) { RelativeSpacing = 0.05f, - Stretch = visibleElements.Count() > 2 + Stretch = visibleElements.Count() > 2, }; - float elementSize = Math.Min(1.0f / visibleElements.Count(), 0.5f); + float elementSize = Math.Min(1.0f / visibleElements.Count(), 1); + var textBlocks = new List(); foreach (CustomInterfaceElement ciElement in visibleElements) { if (ciElement.ContinuousSignal) { - var tickBox = new GUITickBox(new RectTransform(new Vector2(1.0f, elementSize), uiElementContainer.RectTransform), + var tickBox = new GUITickBox(new RectTransform(new Vector2(1.0f, elementSize), uiElementContainer.RectTransform) + { + MaxSize = ElementMaxSize + }, TextManager.Get(ciElement.Label, returnNull: true) ?? ciElement.Label) { UserData = ciElement }; - tickBox.TextBlock.AutoScale = true; + textBlocks.Add(tickBox.TextBlock); tickBox.OnSelected += (tBox) => { if (GameMain.Client == null) @@ -56,12 +75,12 @@ namespace Barotrauma.Items.Components } else { - var btn = new GUIButton(new RectTransform(new Vector2(1.0f, elementSize), uiElementContainer.RectTransform), + var btn = new GUIButton(new RectTransform(new Vector2(1.0f, elementSize), uiElementContainer.RectTransform), TextManager.Get(ciElement.Label, returnNull: true) ?? ciElement.Label, style: "DeviceButton") { UserData = ciElement }; - btn.TextBlock.AutoScale = true; + textBlocks.Add(btn.TextBlock); btn.OnClicked += (_, userdata) => { if (GameMain.Client == null) @@ -77,11 +96,12 @@ namespace Barotrauma.Items.Components //reset size restrictions set by the Style to make sure the elements can fit the interface btn.RectTransform.MinSize = btn.Frame.RectTransform.MinSize = new Point(0, 0); - btn.RectTransform.MaxSize = btn.Frame.RectTransform.MaxSize = new Point(int.MaxValue, int.MaxValue); + btn.RectTransform.MaxSize = btn.Frame.RectTransform.MaxSize = ElementMaxSize; btn.TextBlock.Wrap = true; uiElements.Add(btn); } + GUITextBlock.AutoScaleAndNormalize(textBlocks); } } @@ -128,12 +148,8 @@ namespace Barotrauma.Items.Components int visibleElementCount = 0; foreach (var uiElement in uiElements) { - CustomInterfaceElement element = uiElement.UserData as CustomInterfaceElement; - if (element == null) { continue; } - bool visible = - Screen.Selected == GameMain.SubEditorScreen || - element.StatusEffects.Any() || - (element.Connection != null && element.Connection.Wires.Any(w => w != null)); + if (!(uiElement.UserData is CustomInterfaceElement element)) { continue; } + bool visible = Screen.Selected == GameMain.SubEditorScreen || element.StatusEffects.Any() || (element.Connection != null && element.Connection.Wires.Any(w => w != null)); if (visible) { visibleElementCount++; } if (uiElement.Visible != visible) { @@ -146,11 +162,12 @@ namespace Barotrauma.Items.Components { uiElementContainer.Stretch = visibleElementCount > 2; uiElementContainer.ChildAnchor = visibleElementCount > 1 ? Anchor.TopCenter : Anchor.Center; - float elementSize = Math.Min(1.0f / visibleElementCount, 0.5f); + float elementSize = Math.Min(1.0f / visibleElementCount, 1); foreach (var uiElement in uiElements) { uiElement.RectTransform.RelativeSize = new Vector2(1.0f, elementSize); } + GuiFrame.Visible = visibleElementCount > 0; } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Wire.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Wire.cs index 0f8101213..674ebad69 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Wire.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Wire.cs @@ -94,8 +94,8 @@ namespace Barotrauma.Items.Components Submarine sub = item.Submarine; if (IsActive && sub == null) // currently being rewired, we need to get the sub from the connections in case the wire has been taken outside { - if (connections[0] != null && connections[0].Item.Submarine != null) sub = connections[0].Item.Submarine; - if (connections[1] != null && connections[1].Item.Submarine != null) sub = connections[1].Item.Submarine; + if (connections[0] != null && connections[0].Item.Submarine != null) { sub = connections[0].Item.Submarine; } + if (connections[1] != null && connections[1].Item.Submarine != null) { sub = connections[1].Item.Submarine; } } if (sub != null) @@ -253,11 +253,15 @@ namespace Barotrauma.Items.Components { MapEntity.DisableSelect = true; - Submarine sub = null; + Submarine sub = draggingWire.item.Submarine; if (draggingWire.connections[0] != null && draggingWire.connections[0].Item.Submarine != null) sub = draggingWire.connections[0].Item.Submarine; if (draggingWire.connections[1] != null && draggingWire.connections[1].Item.Submarine != null) sub = draggingWire.connections[1].Item.Submarine; - Vector2 nodeWorldPos = GameMain.SubEditorScreen.Cam.ScreenToWorld(PlayerInput.MousePosition) - sub.HiddenSubPosition - sub.Position;// Nodes[(int)selectedNodeIndex]; + Vector2 nodeWorldPos = GameMain.SubEditorScreen.Cam.ScreenToWorld(PlayerInput.MousePosition); + if (sub != null) + { + nodeWorldPos = nodeWorldPos - sub.HiddenSubPosition - sub.Position; + } if (selectedNodeIndex.HasValue) { @@ -352,7 +356,7 @@ namespace Barotrauma.Items.Components foreach (Wire w in wires) { Vector2 mousePos = GameMain.SubEditorScreen.Cam.ScreenToWorld(PlayerInput.MousePosition); - if (w.item.Submarine != null) mousePos -= (w.item.Submarine.Position + w.item.Submarine.HiddenSubPosition); + if (w.item.Submarine != null) { mousePos -= (w.item.Submarine.Position + w.item.Submarine.HiddenSubPosition); } int highlightedNode = w.GetClosestNodeIndex(mousePos, highlighted == null ? nodeSelectDist : closestDist, out float dist); if (highlightedNode > -1) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs index f20ae801a..55eee788e 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs @@ -131,10 +131,9 @@ namespace Barotrauma protected float prevHUDScale = GUI.Scale; protected Point prevScreenResolution; - protected static Sprite slotSpriteHorizontal, slotSpriteVertical, slotSpriteRound, slotHotkeySprite; + protected static Sprite slotHotkeySprite; public static Sprite SlotSpriteSmall; public static Sprite EquipIndicator, EquipIndicatorHighlight; - public static Sprite DropIndicator, DropIndicatorHighlight; public static Inventory DraggingInventory; public Rectangle BackgroundFrame { get; protected set; } @@ -291,7 +290,8 @@ namespace Barotrauma int rows = (int)Math.Ceiling((double)capacity / slotsPerRow); int columns = Math.Min(slotsPerRow, capacity); - Vector2 spacing = new Vector2(10 * UIScale, (10 + EquipIndicator.size.Y) * UIScale); + Vector2 spacing = new Vector2(5.0f * UIScale); + spacing.Y += (this is CharacterInventory) ? EquipIndicator.size.Y * UIScale : ContainedIndicatorHeight; Vector2 rectSize = new Vector2(60.0f * UIScale); padding = new Vector4(spacing.X, spacing.Y, spacing.X, spacing.X); @@ -534,88 +534,77 @@ namespace Barotrauma int itemCapacity = subInventory.Items.Length; var slot = slots[slotIndex]; int dir = slot.SubInventoryDir; - if (itemCapacity == 1 && false) + Rectangle subRect = slot.Rect; + Vector2 spacing = new Vector2(10 * UIScale, (10 + EquipIndicator.size.Y) * UIScale); + + int columns = (int)Math.Max(Math.Floor(Math.Sqrt(itemCapacity)), 1); + while (itemCapacity / columns * (subRect.Height + spacing.Y) > GameMain.GraphicsHeight * 0.5f) { - Point slotSize = (slotSpriteRound.size * UIScale).ToPoint(); - subInventory.slots[0].Rect = - new Rectangle(slot.Rect.Center.X - slotSize.X / 2, dir > 0 ? slot.Rect.Bottom + 5 : slot.EquipButtonRect.Bottom + 5, slotSize.X, slotSize.Y); - - subInventory.slots[0].InteractRect = subInventory.slots[0].Rect; - subInventory.slots[0].DrawOffset = slot.DrawOffset; + columns++; } - else + + int width = (int)(subRect.Width * columns + spacing.X * (columns - 1)); + int startX = slot.Rect.Center.X - (int)(width / 2.0f); + int startY = dir < 0 ? + slot.EquipButtonRect.Y - subRect.Height - (int)(35 * UIScale) : + slot.EquipButtonRect.Bottom + (int)(10 * UIScale); + + if (canMove) { - Rectangle subRect = slot.Rect; - Vector2 spacing = new Vector2(10 * UIScale, (10 + EquipIndicator.size.Y) * UIScale); - - int columns = (int)Math.Max(Math.Floor(Math.Sqrt(itemCapacity)), 1); - while (itemCapacity / columns * (subRect.Height + spacing.Y) > GameMain.GraphicsHeight * 0.5f) - { - columns++; - } - - int width = (int)(subRect.Width * columns + spacing.X * (columns - 1)); - int startX = slot.Rect.Center.X - (int)(width / 2.0f); - int startY = dir < 0 ? - slot.EquipButtonRect.Y - subRect.Height - (int)(35 * UIScale) : - slot.EquipButtonRect.Bottom + (int)(10 * UIScale); - - if (canMove) - { - startX += subInventory.savedPosition.X - subInventory.originalPos.X; - startY += subInventory.savedPosition.Y - subInventory.originalPos.Y; - } - - float totalHeight = itemCapacity / columns * (subRect.Height + spacing.Y); - int padding = (int)(20 * UIScale); - - //prevent the inventory from extending outside the left side of the screen - startX = Math.Max(startX, padding); - //same for the right side of the screen - startX -= Math.Max(startX + width - GameMain.GraphicsWidth + padding, 0); - - //prevent the inventory from extending outside the top of the screen - startY = Math.Max(startY, (int)totalHeight - padding / 2); - //same for the bottom side of the screen - startY -= Math.Max(startY - GameMain.GraphicsHeight + padding * 2 + (canMove ? (int)(movableFrameRectHeight * UIScale) : 0), 0); - - subRect.X = startX; - subRect.Y = startY; - - subInventory.OpenState = subInventory.HideTimer >= 0.5f ? - Math.Min(subInventory.OpenState + deltaTime * 8.0f, 1.0f) : - Math.Max(subInventory.OpenState - deltaTime * 5.0f, 0.0f); - - for (int i = 0; i < itemCapacity; i++) - { - subInventory.slots[i].Rect = subRect; - subInventory.slots[i].Rect.Location += new Point(0, (int)totalHeight * -dir); - - subInventory.slots[i].DrawOffset = Vector2.SmoothStep(new Vector2(0, -50 * dir), new Vector2(0, totalHeight * dir), subInventory.OpenState); - - subInventory.slots[i].InteractRect = new Rectangle( - (int)(subInventory.slots[i].Rect.X - spacing.X / 2 - 1), (int)(subInventory.slots[i].Rect.Y - spacing.Y / 2 - 1), - (int)(subInventory.slots[i].Rect.Width + spacing.X + 2), (int)(subInventory.slots[i].Rect.Height + spacing.Y + 2)); - - if ((i + 1) % columns == 0) - { - subRect.X = startX; - subRect.Y += subRect.Height * dir; - subRect.Y += (int)(spacing.Y * dir); - } - else - { - subRect.X = (int)(subInventory.slots[i].Rect.Right + spacing.X); - } - } - - if (canMove) - { - subInventory.movableFrameRect.X = subRect.X - (int)spacing.X; - subInventory.movableFrameRect.Y = subRect.Y + (int)(spacing.Y); - } - slots[slotIndex].State = GUIComponent.ComponentState.Hover; + startX += subInventory.savedPosition.X - subInventory.originalPos.X; + startY += subInventory.savedPosition.Y - subInventory.originalPos.Y; } + + float totalHeight = itemCapacity / columns * (subRect.Height + spacing.Y); + int padding = (int)(20 * UIScale); + + //prevent the inventory from extending outside the left side of the screen + startX = Math.Max(startX, padding); + //same for the right side of the screen + startX -= Math.Max(startX + width - GameMain.GraphicsWidth + padding, 0); + + //prevent the inventory from extending outside the top of the screen + startY = Math.Max(startY, (int)totalHeight - padding / 2); + //same for the bottom side of the screen + startY -= Math.Max(startY - GameMain.GraphicsHeight + padding * 2 + (canMove ? (int)(movableFrameRectHeight * UIScale) : 0), 0); + + subRect.X = startX; + subRect.Y = startY; + + subInventory.OpenState = subInventory.HideTimer >= 0.5f ? + Math.Min(subInventory.OpenState + deltaTime * 8.0f, 1.0f) : + Math.Max(subInventory.OpenState - deltaTime * 5.0f, 0.0f); + + for (int i = 0; i < itemCapacity; i++) + { + subInventory.slots[i].Rect = subRect; + subInventory.slots[i].Rect.Location += new Point(0, (int)totalHeight * -dir); + + subInventory.slots[i].DrawOffset = Vector2.SmoothStep(new Vector2(0, -50 * dir), new Vector2(0, totalHeight * dir), subInventory.OpenState); + + subInventory.slots[i].InteractRect = new Rectangle( + (int)(subInventory.slots[i].Rect.X - spacing.X / 2 - 1), (int)(subInventory.slots[i].Rect.Y - spacing.Y / 2 - 1), + (int)(subInventory.slots[i].Rect.Width + spacing.X + 2), (int)(subInventory.slots[i].Rect.Height + spacing.Y + 2)); + + if ((i + 1) % columns == 0) + { + subRect.X = startX; + subRect.Y += subRect.Height * dir; + subRect.Y += (int)(spacing.Y * dir); + } + else + { + subRect.X = (int)(subInventory.slots[i].Rect.Right + spacing.X); + } + } + + if (canMove) + { + subInventory.movableFrameRect.X = subRect.X - (int)spacing.X; + subInventory.movableFrameRect.Y = subRect.Y + (int)(spacing.Y); + } + slots[slotIndex].State = GUIComponent.ComponentState.Hover; + subInventory.isSubInventory = true; subInventory.Update(deltaTime, cam, true); } @@ -1168,10 +1157,14 @@ namespace Barotrauma if (itemContainer.ContainedStateIndicator?.Texture == null) { containedIndicatorArea.Inflate(0, -2); - GUI.DrawRectangle(spriteBatch, containedIndicatorArea, Color.DarkGray * 0.9f, true); + GUI.DrawRectangle(spriteBatch, containedIndicatorArea, Color.Gray * 0.9f, true); GUI.DrawRectangle(spriteBatch, new Rectangle(containedIndicatorArea.X, containedIndicatorArea.Y, (int)(containedIndicatorArea.Width * containedState), containedIndicatorArea.Height), - Color.Lerp(GUI.Style.Red, GUI.Style.Green, containedState) * 0.8f, true); + ToolBox.GradientLerp(containedState, Color.Red, Color.Orange, Color.LightGreen) * 0.8f, true); + GUI.DrawLine(spriteBatch, + new Vector2(containedIndicatorArea.X + (int)(containedIndicatorArea.Width * containedState), containedIndicatorArea.Y), + new Vector2(containedIndicatorArea.X + (int)(containedIndicatorArea.Width * containedState), containedIndicatorArea.Bottom), + Color.Black * 0.8f); } else { @@ -1186,12 +1179,12 @@ namespace Barotrauma } indicatorSprite.Draw(spriteBatch, containedIndicatorArea.Center.ToVector2(), - (inventory != null && inventory.Locked) ? Color.DarkGray * 0.5f : Color.DarkGray * 0.9f, + (inventory != null && inventory.Locked) ? Color.Gray * 0.5f : Color.Gray * 0.9f, origin: indicatorSprite.size / 2, rotate: 0.0f, scale: indicatorScale); - Color indicatorColor = ToolBox.GradientLerp(containedState, GUI.Style.Red, GUI.Style.Orange, GUI.Style.Green); + Color indicatorColor = ToolBox.GradientLerp(containedState, Color.Red, Color.Orange, Color.LightGreen); if (inventory != null && inventory.Locked) { indicatorColor *= 0.5f; } spriteBatch.Draw(indicatorSprite.Texture, containedIndicatorArea.Center.ToVector2(), @@ -1201,6 +1194,14 @@ namespace Barotrauma origin: indicatorSprite.size / 2, scale: indicatorScale, effects: SpriteEffects.None, layerDepth: 0.0f); + + spriteBatch.Draw(indicatorSprite.Texture, containedIndicatorArea.Center.ToVector2(), + sourceRectangle: new Rectangle(indicatorSprite.SourceRect.X - 1 + (int)(indicatorSprite.SourceRect.Width * containedState), indicatorSprite.SourceRect.Y, Math.Max((int)Math.Ceiling(1 / indicatorScale), 2), indicatorSprite.SourceRect.Height), + color: Color.Black, + rotation: 0.0f, + origin: new Vector2(indicatorSprite.size.X * (0.5f - containedState), indicatorSprite.size.Y * 0.5f), + scale: indicatorScale, + effects: SpriteEffects.None, layerDepth: 0.0f); } } } @@ -1296,6 +1297,10 @@ namespace Barotrauma // 2. We've received all the events created before the update was written (otherwise we may not yet know about some items the server has spawned in the inventory) (GameMain.Client != null && (GameMain.Client.MidRoundSyncing || NetIdUtils.IdMoreRecent(lastEventID, GameMain.Client.EntityEventManager.LastReceivedID)))) { + if (GameMain.GameSession == null || Level.Loaded == null) + { + yield return CoroutineStatus.Success; + } syncItemsDelay = Math.Max((float)(syncItemsDelay - Timing.Step), 0.0f); yield return CoroutineStatus.Running; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs index a29077494..b0634c374 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs @@ -44,6 +44,11 @@ namespace Barotrauma get { return activeSprite; } } + public override bool DrawOverWater + { + get { return base.DrawOverWater || (GetComponent() != null && IsSelected); } + } + private GUITextBlock itemInUseWarning; private GUITextBlock ItemInUseWarning { @@ -523,8 +528,8 @@ namespace Barotrauma if (Linkable) { - var linkText = new GUITextBlock(new RectTransform(new Point(editingHUD.Rect.Width, heightScaled)), TextManager.Get("HoldToLink"), font: GUI.SmallFont); - var itemsText = new GUITextBlock(new RectTransform(new Point(editingHUD.Rect.Width, heightScaled)), TextManager.Get("AllowedLinks"), font: GUI.SmallFont); + var linkText = new GUITextBlock(new RectTransform(new Point(editingHUD.Rect.Width, heightScaled), isFixedSize: true), TextManager.Get("HoldToLink"), font: GUI.SmallFont); + var itemsText = new GUITextBlock(new RectTransform(new Point(editingHUD.Rect.Width, heightScaled), isFixedSize: true), TextManager.Get("AllowedLinks"), font: GUI.SmallFont); string allowedItems = AllowedLinks.None() ? TextManager.Get("None") :string.Join(", ", AllowedLinks); itemsText.Text = TextManager.AddPunctuation(':', itemsText.Text, allowedItems); itemEditor.AddCustomContent(linkText, 1); @@ -535,7 +540,8 @@ namespace Barotrauma var buttonContainer = new GUILayoutGroup(new RectTransform(new Point(listBox.Content.Rect.Width, heightScaled)), isHorizontal: true) { Stretch = true, - RelativeSpacing = 0.02f + RelativeSpacing = 0.02f, + CanBeFocused = true }; new GUIButton(new RectTransform(new Vector2(0.23f, 1.0f), buttonContainer.RectTransform), TextManager.Get("MirrorEntityX"), style: "GUIButtonSmall") { @@ -575,6 +581,7 @@ namespace Barotrauma } }; buttonContainer.RectTransform.MinSize = new Point(0, buttonContainer.RectTransform.Children.Max(c => c.MinSize.Y)); + buttonContainer.RectTransform.IsFixedSize = true; itemEditor.AddCustomContent(buttonContainer, itemEditor.ContentCount); GUITextBlock.AutoScaleAndNormalize(buttonContainer.Children.Select(b => ((GUIButton)b).TextBlock)); } @@ -615,17 +622,20 @@ namespace Barotrauma foreach (RelatedItem relatedItem in requiredItems) { + //TODO: add to localization var textBlock = new GUITextBlock(new RectTransform(new Point(listBox.Content.Rect.Width, heightScaled)), relatedItem.Type.ToString() + " required", font: GUI.SmallFont) { Padding = new Vector4(10.0f, 0.0f, 10.0f, 0.0f) }; + textBlock.RectTransform.IsFixedSize = true; componentEditor.AddCustomContent(textBlock, 1); GUITextBox namesBox = new GUITextBox(new RectTransform(new Vector2(0.5f, 1.0f), textBlock.RectTransform, Anchor.CenterRight)) { Font = GUI.SmallFont, - Text = relatedItem.JoinedIdentifiers + Text = relatedItem.JoinedIdentifiers, + OverflowClip = true }; textBlock.RectTransform.Resize(new Point(textBlock.Rect.Width, namesBox.RectTransform.MinSize.Y)); @@ -710,11 +720,11 @@ namespace Barotrauma HUDLayoutSettings.ChatBoxArea.Width + disallowedPadding, HUDLayoutSettings.ChatBoxArea.Height)); } - //GUI.PreventElementOverlap(elementsToMove, disallowedAreas, - // new Rectangle( - // 0, 20, - // GameMain.GraphicsWidth, - // HUDLayoutSettings.InventoryTopY > 0 ? HUDLayoutSettings.InventoryTopY - 40 : GameMain.GraphicsHeight - 80)); + GUI.PreventElementOverlap(elementsToMove, disallowedAreas, + new Rectangle( + 0, 20, + GameMain.GraphicsWidth, + HUDLayoutSettings.InventoryTopY > 0 ? HUDLayoutSettings.InventoryTopY - 40 : GameMain.GraphicsHeight - 80)); foreach (ItemComponent ic in activeHUDs) { @@ -761,7 +771,8 @@ namespace Barotrauma List maxPriorityHUDs = new List(); foreach (ItemComponent ic in activeComponents) { - if (ic.CanBeSelected && ic.HudPriority > 0 && ic.ShouldDrawHUD(character) && + if (ic.HudPriority > 0 && ic.ShouldDrawHUD(character) && + (ic.CanBeSelected || character.HasEquippedItem(this)) && (maxPriorityHUDs.Count == 0 || ic.HudPriority >= maxPriorityHUDs[0].HudPriority)) { if (maxPriorityHUDs.Count > 0 && ic.HudPriority > maxPriorityHUDs[0].HudPriority) maxPriorityHUDs.Clear(); @@ -777,7 +788,10 @@ namespace Barotrauma { foreach (ItemComponent ic in activeComponents) { - if (ic.CanBeSelected && ic.ShouldDrawHUD(character)) activeHUDs.Add(ic); + if ((ic.CanBeSelected || character.HasEquippedItem(this)) && ic.ShouldDrawHUD(character)) + { + activeHUDs.Add(ic); + } } } @@ -867,11 +881,6 @@ namespace Barotrauma } public override void AddToGUIUpdateList() - { - AddToGUIUpdateList(addLinkedHUDs: true); - } - - private void AddToGUIUpdateList(bool addLinkedHUDs) { if (Screen.Selected is SubEditorScreen) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Map/MapEntity.cs b/Barotrauma/BarotraumaClient/ClientSource/Map/MapEntity.cs index 796482cc1..f485e4d9c 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Map/MapEntity.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Map/MapEntity.cs @@ -1,4 +1,5 @@ -using Barotrauma.Items.Components; +using Barotrauma.Extensions; +using Barotrauma.Items.Components; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; @@ -733,9 +734,10 @@ namespace Barotrauma var clones = mapEntityList.Except(prevEntities).ToList(); + var nonWireClones = clones.Where(c => !(c is Item item) || item.GetComponent() == null); Vector2 center = Vector2.Zero; - clones.ForEach(c => center += c.WorldPosition); - center = Submarine.VectorToWorldGrid(center / clones.Count); + nonWireClones.ForEach(c => center += c.WorldPosition); + center = Submarine.VectorToWorldGrid(center / nonWireClones.Count()); Vector2 moveAmount = Submarine.VectorToWorldGrid(position - center); @@ -785,8 +787,8 @@ namespace Barotrauma else { editingHUD.RectTransform.SetPosition(Anchor.TopRight); - editingHUD.RectTransform.RelativeOffset = new Vector2(0.0f, (HUDLayoutSettings.InventoryAreaUpper.Bottom + 10.0f) / (editingHUD.RectTransform.Parent ?? GUI.Canvas).Rect.Height); - maxHeight = HUDLayoutSettings.InventoryAreaLower.Bottom - HUDLayoutSettings.InventoryAreaLower.Y - 10; + editingHUD.RectTransform.RelativeOffset = new Vector2(0.0f, (HUDLayoutSettings.CrewArea.Bottom + 10.0f) / (editingHUD.RectTransform.Parent ?? GUI.Canvas).Rect.Height); + maxHeight = HUDLayoutSettings.InventoryAreaLower.Y - HUDLayoutSettings.CrewArea.Bottom - 10; } var listBox = editingHUD.GetChild(); @@ -883,6 +885,7 @@ namespace Barotrauma { rectMemento.Store(Rect); resizing = false; + Resized?.Invoke(rect); } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Map/Structure.cs b/Barotrauma/BarotraumaClient/ClientSource/Map/Structure.cs index dd34c8037..121bad258 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Map/Structure.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Map/Structure.cs @@ -122,8 +122,9 @@ namespace Barotrauma return true; } }; - GUITextBlock.AutoScaleAndNormalize(buttonContainer.Children.Where(c => c is GUIButton).Select(b => ((GUIButton)b).TextBlock)); buttonContainer.RectTransform.Resize(new Point(buttonContainer.Rect.Width, buttonContainer.RectTransform.Children.Max(c => c.MinSize.Y))); + buttonContainer.RectTransform.IsFixedSize = true; + GUITextBlock.AutoScaleAndNormalize(buttonContainer.Children.Where(c => c is GUIButton).Select(b => ((GUIButton)b).TextBlock)); editor.AddCustomContent(buttonContainer, editor.ContentCount); PositionEditingHUD(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs index 7fd043161..8161724be 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs @@ -2423,20 +2423,42 @@ namespace Barotrauma.Networking //because tab is used for autocompleting console commands if (msgBox != null) { - if ((PlayerInput.KeyHit(InputType.Chat) || PlayerInput.KeyHit(InputType.RadioChat)) && - GUI.KeyboardDispatcher.Subscriber == null) + if (GUI.KeyboardDispatcher.Subscriber == null) { - if (msgBox.Selected) + bool chatKeyHit = PlayerInput.KeyHit(InputType.Chat); + bool radioKeyHit = PlayerInput.KeyHit(InputType.RadioChat); + + if (chatKeyHit || radioKeyHit) { - msgBox.Text = ""; - msgBox.Deselect(); - } - else - { - msgBox.Select(); - if (Screen.Selected == GameMain.GameScreen && PlayerInput.KeyHit(InputType.RadioChat)) + if (msgBox.Selected) { - msgBox.Text = "r; "; + msgBox.Text = ""; + msgBox.Deselect(); + } + else + { + if (Screen.Selected == GameMain.GameScreen) + { + if (chatKeyHit) + { + msgBox.AddToGUIUpdateList(); + ChatBox.GUIFrame.Flash(Color.DarkGreen, 0.5f); + ChatBox.ToggleOpen = true; + } + + if (radioKeyHit) + { + msgBox.AddToGUIUpdateList(); + ChatBox.GUIFrame.Flash(Color.YellowGreen, 0.5f); + ChatBox.ToggleOpen = true; + if (!msgBox.Text.StartsWith(ChatBox.RadioChatString)) + { + msgBox.Text = ChatBox.RadioChatString; + } + } + } + + msgBox.Select(msgBox.Text.Length); } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs index 37c70df02..a8844d9b7 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs @@ -326,7 +326,7 @@ namespace Barotrauma.Networking return true; } }; - workshopBtn.TextBlock.AutoScale = true; + workshopBtn.TextBlock.AutoScaleHorizontal = true; } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs index e7550496a..6b2f569db 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs @@ -1383,6 +1383,7 @@ namespace Barotrauma.Steam if (!task.IsCompleted) { cancelTokenSource.Cancel(); + task.Wait(); } return task.Status == TaskStatus.RanToCompletion; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs index 974e07cbd..067269913 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs @@ -152,7 +152,7 @@ namespace Barotrauma.Particles } } - [Editable(0.0f, 10000.0f), Serialize(0.0f, false, description: "Drag applied to the particle when it's moving through water.")] + [Editable(0.0f, 10000.0f), Serialize(0.0f, false, description: "Radius of the particle's collider. Only has an effect if UseCollision is set to true.")] public float CollisionRadius { get; private set; } [Editable, Serialize(false, false, description: "Does the particle collide with the walls of the submarine and the level.")] diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs index 17b39fb47..3adb061d8 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs @@ -78,7 +78,7 @@ namespace Barotrauma OnClicked = (btn, userdata) => { SelectTab(Tab.Map); return true; } }; outpostBtn.TextBlock.Font = GUI.LargeFont; - outpostBtn.TextBlock.AutoScale = true; + outpostBtn.TextBlock.AutoScaleHorizontal = true; var tabButtonContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.4f, 0.4f), topPanelContent.RectTransform, Anchor.BottomLeft), isHorizontal: true); @@ -161,7 +161,7 @@ namespace Barotrauma { UserData = "mycrew", CanBeFocused = false, - AutoScale = true + AutoScaleHorizontal = true }; if (campaign is SinglePlayerCampaign) { @@ -170,7 +170,7 @@ namespace Barotrauma { UserData = "hire", CanBeFocused = false, - AutoScale = true + AutoScaleHorizontal = true }; } @@ -210,6 +210,7 @@ namespace Barotrauma searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 1.0f), filterContainer.RectTransform), createClearButton: true); searchBox.OnSelected += (sender, userdata) => { searchTitle.Visible = false; }; searchBox.OnDeselected += (sender, userdata) => { searchTitle.Visible = true; }; + searchBox.OnTextChanged += (textBox, text) => { FilterStoreItems(null, text); return true; }; var storeItemLists = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.8f), storeContent.RectTransform), isHorizontal: true) { @@ -256,7 +257,7 @@ namespace Barotrauma TextManager.Get("MapEntityCategory." + category), textAlignment: Alignment.Center, textColor: categoryButton.TextColor) { Padding = Vector4.Zero, - AutoScale = true, + AutoScaleHorizontal = true, Color = Color.Transparent, HoverColor = Color.Transparent, PressedColor = Color.Transparent, @@ -454,7 +455,7 @@ namespace Barotrauma textAlignment: Alignment.Center, font: GUI.LargeFont, style: "GUISlopedHeader") { UserData = "missionlabel", - AutoScale = true + AutoScaleHorizontal = true }; var missionPanelContent = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.95f), missionPanel.RectTransform, Anchor.Center)) { @@ -468,10 +469,11 @@ namespace Barotrauma Stretch = true }; selectedMissionInfo = new GUIListBox(new RectTransform(new Vector2(0.9f, 0.25f), missionPanel.RectTransform, Anchor.BottomRight, Pivot.TopRight) - { MinSize = new Point(0, (int)(250 * GUI.Scale)) }) + { MinSize = new Point(0, (int)(150 * GUI.Scale)) }) { Visible = false }; + selectedMissionInfo.RectTransform.MaxSize = new Point(int.MaxValue, selectedMissionInfo.Rect.Height * 2); new GUIFrame(new RectTransform(new Vector2(1.25f, 1.25f), selectedMissionInfo.RectTransform, Anchor.Center), style: "OuterGlow", color: Color.Black * 0.9f) { UserData = "outerglow", @@ -676,7 +678,7 @@ namespace Barotrauma var container = selectedLocationInfo; new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), location.Name, font: GUI.LargeFont) { - AutoScale = true + AutoScaleHorizontal = true }; new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), location.Type.Name, font: GUI.SubHeadingFont); @@ -686,7 +688,7 @@ namespace Barotrauma new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), TextManager.Get("SelectMission"), font: GUI.SubHeadingFont) { - AutoScale = true + AutoScaleHorizontal = true }; var missionFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.3f), container.RectTransform), style: "InnerFrame"); @@ -784,13 +786,13 @@ namespace Barotrauma selectedMissionInfo.ClearChildren(); var container = selectedMissionInfo.Content; selectedMissionInfo.Visible = selectedMission != null; - selectedMissionInfo.Spacing = 10; + selectedMissionInfo.Spacing = (int)(10 * GUI.Scale); if (selectedMission == null) { return; } new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), selectedMission.Name, font: GUI.LargeFont) { - AutoScale = true, + AutoScaleHorizontal = true, CanBeFocused = false }; new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), container.RectTransform), @@ -804,6 +806,12 @@ namespace Barotrauma CanBeFocused = false }; + //scale down mission info box if it's much taller than the text + float missionInfoHeight = selectedMissionInfo.Content.Children.Sum(c => c.Rect.Height + selectedMissionInfo.Spacing); + selectedMissionInfo.Content.Children.ForEach(c => c.RectTransform.IsFixedSize = true); + selectedMissionInfo.RectTransform.Resize(new Point(selectedMissionInfo.Rect.Width, (int)(missionInfoHeight + 15 * GUI.Scale))); + selectedMissionInfo.UpdateScrollBarSize(); + if (StartButton != null) { StartButton.Enabled = true; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/CharacterEditorScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/CharacterEditorScreen.cs index ca7d456dc..5820c166a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/CharacterEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/CharacterEditorScreen.cs @@ -1897,7 +1897,7 @@ namespace Barotrauma.CharacterEditor } // Create the areas - rightArea = new GUILayoutGroup(new RectTransform(new Vector2(0.15f, 0.95f), parent: Frame.RectTransform, anchor: Anchor.CenterRight), childAnchor: Anchor.BottomRight) + rightArea = new GUILayoutGroup(new RectTransform(new Vector2(0.15f, 1.0f), parent: Frame.RectTransform, anchor: Anchor.CenterRight), childAnchor: Anchor.BottomRight) { RelativeSpacing = 0.02f }; @@ -1917,6 +1917,14 @@ namespace Barotrauma.CharacterEditor CreateFileEditPanel(); CreateOptionsPanel(toggleSize); CreateCharacterSelectionPanel(); + if (rightArea.RectTransform.Children.Sum(c => c.Rect.Height) > GameMain.GraphicsHeight) + { + fileEditPanel.GetAllChildren().Where(c => c is GUIButton).ForEach(b => b.RectTransform.MinSize = ((GUIButton)b).Frame.RectTransform.MinSize = b.RectTransform.MinSize.Multiply(new Vector2(1.0f, 0.75f))); + fileEditPanel.RectTransform.MinSize = new Point(0, (int)(fileEditPanel.GetChild().RectTransform.Children.Sum(c => c.Rect.Height) / innerScale.Y)); + optionsPanel.GetAllChildren().Where(c => c is GUITickBox).ForEach(t => t.RectTransform.MinSize = t.RectTransform.MinSize.Multiply(new Vector2(1.0f, 0.75f))); + optionsPanel.RectTransform.MinSize = new Point(0, (int)(optionsPanel.GetChild().RectTransform.Children.Sum(c => c.Rect.Height) / innerScale.Y)); + rightArea.Recalculate(); + } CreateButtonsPanel(); CreateModesPanel(toggleSize); @@ -2686,14 +2694,14 @@ namespace Barotrauma.CharacterEditor } var charButtons = new GUIFrame(new RectTransform(new Vector2(1, 0.25f), parent: content.RectTransform, anchor: Anchor.BottomLeft), style: null); var prevCharacterButton = new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), charButtons.RectTransform, Anchor.TopLeft), GetCharacterEditorTranslation("PreviousCharacter")); - prevCharacterButton.TextBlock.AutoScale = true; + prevCharacterButton.TextBlock.AutoScaleHorizontal = true; prevCharacterButton.OnClicked += (b, obj) => { SpawnCharacter(GetPreviousConfigFile()); return true; }; var nextCharacterButton = new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), charButtons.RectTransform, Anchor.TopRight), GetCharacterEditorTranslation("NextCharacter")); - prevCharacterButton.TextBlock.AutoScale = true; + prevCharacterButton.TextBlock.AutoScaleHorizontal = true; nextCharacterButton.OnClicked += (b, obj) => { SpawnCharacter(GetNextConfigFile()); @@ -3151,7 +3159,6 @@ namespace Barotrauma.CharacterEditor public ToggleButton(RectTransform rectT, Direction dir) { - rectT.MaxSize = new Point(int.MaxValue, (int)(100 * GUI.Scale)); toggleButton = new GUIButton(rectT, style: "UIToggleButton") { OnClicked = (button, data) => diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs index 8b7d7ac27..78577f46d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs @@ -157,7 +157,7 @@ namespace Barotrauma //(= the background texture that's revealed when a wall is destroyed) into the background render target //These will be visible through the LOS effect. spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform); - Submarine.DrawBack(spriteBatch, false, e => e is Structure s); + Submarine.DrawBack(spriteBatch, false, e => e is Structure s && (e.SpriteDepth >= 0.9f || s.Prefab.BackgroundSprite != null)); spriteBatch.End(); graphics.SetRenderTarget(null); @@ -201,7 +201,7 @@ namespace Barotrauma spriteBatch.End(); //Draw the rest of the structures, characters and front structures spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform); - Submarine.DrawBack(spriteBatch, false, s => !(s is Structure)); + Submarine.DrawBack(spriteBatch, false, e => !(e is Structure) || e.SpriteDepth < 0.9f); foreach (Character c in Character.CharacterList) { if (c.AnimController.Limbs.Any(l => l.DeformSprite != null) || !c.IsVisible) { continue; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs index 890df0f63..e7f67856f 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs @@ -784,12 +784,12 @@ namespace Barotrauma }; shuttleTickBox.TextBlock.RectTransform.SizeChanged += () => { - shuttleTickBox.TextBlock.AutoScale = true; + shuttleTickBox.TextBlock.AutoScaleHorizontal = true; shuttleTickBox.TextBlock.TextScale = 1.0f; if (shuttleTickBox.TextBlock.TextScale < 0.75f) { shuttleTickBox.TextBlock.Wrap = true; - shuttleTickBox.TextBlock.AutoScale = true; + shuttleTickBox.TextBlock.AutoScaleHorizontal = true; shuttleTickBox.TextBlock.TextScale = 1.0f; } }; @@ -831,13 +831,13 @@ namespace Barotrauma if (child is GUITextBlock textBlock) { textBlock.TextScale = 1; - textBlock.AutoScale = true; + textBlock.AutoScaleHorizontal = true; textBlock.SetTextPos(); } else if (child is GUITickBox tickBox) { tickBox.TextBlock.TextScale = 1; - tickBox.TextBlock.AutoScale = true; + tickBox.TextBlock.AutoScaleHorizontal = true; tickBox.TextBlock.SetTextPos(); } } @@ -1827,7 +1827,7 @@ namespace Barotrauma { UserData = selectedClient }; - viewSteamProfileButton.TextBlock.AutoScale = true; + viewSteamProfileButton.TextBlock.AutoScaleHorizontal = true; viewSteamProfileButton.OnClicked = (bt, userdata) => { Steamworks.SteamFriends.OpenWebOverlay("https://steamcommunity.com/profiles/" + selectedClient.SteamID.ToString()); @@ -2694,7 +2694,7 @@ namespace Barotrauma SelectedColor = Color.Transparent, TextColor = jobPrefab.UIColor, CanBeFocused = false, - AutoScale = true + AutoScaleHorizontal = true }; textBlock.RectTransform.SizeChanged += () => { textBlock.TextScale = 1.0f; }; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs index 8ebe3ca95..58dc10929 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs @@ -185,7 +185,7 @@ namespace Barotrauma { Padding = Vector4.Zero, ForceUpperCase = true, - AutoScale = true + AutoScaleHorizontal = true }; var infoHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.33f), topRow.RectTransform), isHorizontal: true, Anchor.BottomLeft) { RelativeSpacing = 0.01f, Stretch = false }; @@ -279,7 +279,7 @@ namespace Barotrauma var filterTitle = new GUITextBlock(new RectTransform(new Vector2(1.0f, elementHeight), filtersHolder.RectTransform), TextManager.Get("FilterServers"), font: GUI.SubHeadingFont) { Padding = Vector4.Zero, - AutoScale = true, + AutoScaleHorizontal = true, CanBeFocused = false }; @@ -1608,7 +1608,6 @@ namespace Barotrauma if (serverInfo.OwnerVerified) { - DebugConsole.NewMessage(serverInfo.OwnerID + " verified!"); var childrenToRemove = serverList.Content.FindChildren(c => (c.UserData is ServerInfo info) && info != serverInfo && (serverInfo.OwnerID != 0 ? info.OwnerID == serverInfo.OwnerID : info.IP == serverInfo.IP)).ToList(); foreach (var child in childrenToRemove) @@ -1637,7 +1636,7 @@ namespace Barotrauma var compatibleBox = new GUITickBox(new RectTransform(new Vector2(columnRelativeWidth[0], 0.9f), serverContent.RectTransform, Anchor.Center), label: "") { - Enabled = false, + CanBeFocused = false, Selected = serverInfo.GameVersion == GameMain.Version.ToString() && serverInfo.ContentPackagesMatch(GameMain.SelectedPackages), @@ -1648,7 +1647,7 @@ namespace Barotrauma { ToolTip = TextManager.Get((serverInfo.HasPassword) ? "ServerListHasPassword" : "FilterPassword"), Selected = serverInfo.HasPassword, - Enabled = false, + CanBeFocused = false, UserData = "password" }; @@ -1659,12 +1658,17 @@ namespace Barotrauma ((serverInfo.OwnerID != 0 || serverInfo.LobbyID != 0) ? "[STEAMP2P] " : "[LIDGREN] ") + serverInfo.ServerName, #endif style: "GUIServerListTextBox"); + serverName.UserData = serverName.Text; + serverName.RectTransform.SizeChanged += () => + { + serverName.Text = ToolBox.LimitString(serverName.Text, serverName.Font, serverName.Rect.Width); + }; new GUITickBox(new RectTransform(new Vector2(columnRelativeWidth[3], 0.9f), serverContent.RectTransform, Anchor.Center), label: "") { ToolTip = TextManager.Get((serverInfo.GameStarted) ? "ServerListRoundStarted" : "ServerListRoundNotStarted"), Selected = serverInfo.GameStarted, - Enabled = false + CanBeFocused = false }; var serverPlayers = new GUITextBlock(new RectTransform(new Vector2(columnRelativeWidth[4], 1.0f), serverContent.RectTransform), diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/SpriteEditorScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/SpriteEditorScreen.cs index 8a267922e..3fc91dcf5 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/SpriteEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/SpriteEditorScreen.cs @@ -162,7 +162,7 @@ namespace Barotrauma return true; } }; - resetBtn.TextBlock.AutoScale = true; + resetBtn.TextBlock.AutoScaleHorizontal = true; new GUITickBox(new RectTransform(new Vector2(0.2f, 0.2f), topPanelContents.RectTransform, Anchor.BottomCenter, Pivot.CenterRight) { RelativeOffset = new Vector2(0, 0.3f) }, TextManager.Get("spriteeditor.showgrid")) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs index f49c37cd9..78a1f11d7 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs @@ -868,7 +868,7 @@ namespace Barotrauma t.RectTransform.SizeChanged += () => { t.TextScale = 1.0f; - t.AutoScale = true; + t.AutoScaleHorizontal = true; }; } @@ -1096,25 +1096,20 @@ namespace Barotrauma { var tagBtn = new GUIButton(new RectTransform(new Vector2(0.25f, 1.0f), tagHolder.Content.RectTransform, anchor: Anchor.CenterLeft), tag.CapitaliseFirstInvariant(), style: "GUIButtonRound"); - tagBtn.TextBlock.AutoScale = true; + tagBtn.TextBlock.AutoScaleHorizontal = true; tagBtn.Selected = itemEditor?.Tags?.Any(t => t.ToLowerInvariant() == tag) ?? false; - Color defaultTextColor = tagBtn.TextColor; - tagBtn.TextColor = tagBtn.Selected ? GUI.Style.Green : defaultTextColor; - tagBtn.OnClicked = (btn, userdata) => { if (!tagBtn.Selected) { if (!(itemEditor?.Tags?.Any(t => t.ToLowerInvariant() == tag) ?? false)) { itemEditor = itemEditor?.WithTag(tagBtn.Text); } tagBtn.Selected = true; - tagBtn.TextColor = GUI.Style.Green; } else { itemEditor?.Tags?.RemoveAll(t => t.ToLowerInvariant() == tagBtn.Text.ToLowerInvariant()); tagBtn.Selected = false; - tagBtn.TextColor = defaultTextColor; } return true; }; @@ -1387,7 +1382,7 @@ namespace Barotrauma return true; } }; - publishBtn.TextBlock.AutoScale = true; + publishBtn.TextBlock.AutoScaleHorizontal = true; } private void OnPreviewImageSelected(GUIImage previewImageElement, string filePath) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs index 255c2a553..7cd362f63 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs @@ -38,6 +38,8 @@ namespace Barotrauma private GUIComponent showEntitiesPanel, entityCountPanel; private List showEntitiesTickBoxes = new List(); + private GUITextBlock subNameLabel; + private bool entityMenuOpen = true; private float entityMenuOpenState = 1.0f; public GUIComponent EntityMenu; @@ -45,11 +47,16 @@ namespace Barotrauma private GUIListBox entityList; private GUIButton toggleEntityMenuButton; + private GUITickBox defaultModeTickBox, wiringModeTickBox, characterModeTickBox; + private GUIComponent loadFrame, saveFrame; private GUITextBox nameBox, descriptionBox; + private GUIButton selectedCategoryButton; + private GUITextBlock selectedCategoryText; private readonly List entityCategoryButtons = new List(); + private MapEntityCategory? selectedCategory; private GUIFrame hullVolumeFrame; @@ -61,8 +68,6 @@ namespace Barotrauma private GUIDropDown linkedSubBox; - private GUIRadioButtonGroup modeButtonGroup; - //a Character used for picking up and manipulating items private Character dummyCharacter; @@ -89,15 +94,10 @@ namespace Barotrauma get { return cam; } } - public string GetSubName() - { - return (Submarine.MainSub == null) ? "" : Submarine.MainSub.Name; - } - public string GetSubDescription() { - string localizedDescription = TextManager.Get("submarine.description." + GetSubName(), true); - if (localizedDescription != null) return localizedDescription; + string localizedDescription = TextManager.Get("submarine.description." + (Submarine.MainSub?.Name ?? ""), true); + if (localizedDescription != null) { return localizedDescription; } return (Submarine.MainSub == null) ? "" : Submarine.MainSub.Description; } @@ -214,11 +214,8 @@ namespace Barotrauma new GUIFrame(new RectTransform(new Vector2(0.01f, 0.9f), paddedTopPanel.RectTransform), style: "VerticalLine"); - var nameLabel = new GUITextBlock(new RectTransform(new Vector2(0.1f, 0.9f), paddedTopPanel.RectTransform, Anchor.CenterLeft), - "", font: GUI.LargeFont, textAlignment: Alignment.CenterLeft) - { - TextGetter = GetSubName - }; + subNameLabel = new GUITextBlock(new RectTransform(new Vector2(0.3f, 0.9f), paddedTopPanel.RectTransform, Anchor.CenterLeft), + TextManager.Get("unspecifiedsubfilename"), font: GUI.LargeFont, textAlignment: Alignment.CenterLeft); linkedSubBox = new GUIDropDown(new RectTransform(new Vector2(0.15f, 0.9f), paddedTopPanel.RectTransform), TextManager.Get("AddSubButton"), elementCount: 20) @@ -238,52 +235,36 @@ namespace Barotrauma new GUIFrame(new RectTransform(new Vector2(0.01f, 0.9f), paddedTopPanel.RectTransform), style: "VerticalLine"); - modeButtonGroup = new GUIRadioButtonGroup(); - - var defaultModeTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "EditSubButton") + defaultModeTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "EditSubButton") { ToolTip = TextManager.Get("SubEditorEditingMode"), OnSelected = (GUITickBox tBox) => { - if (tBox.Selected) - { - SetMode(Mode.Default); - } + if (tBox.Selected) { SetMode(Mode.Default); } return true; } }; - var characterModeTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "CharacterModeButton") + characterModeTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "CharacterModeButton") { ToolTip = TextManager.Get("CharacterModeButton") + '\n' + TextManager.Get("CharacterModeToolTip"), OnSelected = (GUITickBox tBox) => { - if (tBox.Selected) - { - SetMode(Mode.Character); - } + SetMode(tBox.Selected ? Mode.Character : Mode.Default); return true; } }; - var wiringModeTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "WiringModeButton") + wiringModeTickBox = new GUITickBox(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "WiringModeButton") { ToolTip = TextManager.Get("WiringModeButton") + '\n' + TextManager.Get("WiringModeToolTip"), OnSelected = (GUITickBox tBox) => { - if (tBox.Selected) - { - SetMode(Mode.Wiring); - } + SetMode(tBox.Selected ? Mode.Wiring : Mode.Default); return true; } }; - modeButtonGroup.AddRadioButton((int)Mode.Default, defaultModeTickBox); - modeButtonGroup.AddRadioButton((int)Mode.Character, characterModeTickBox); - modeButtonGroup.AddRadioButton((int)Mode.Wiring, wiringModeTickBox); - modeButtonGroup.Selected = (int)Mode.Default; - new GUIFrame(new RectTransform(new Vector2(0.01f, 0.9f), paddedTopPanel.RectTransform), style: "VerticalLine"); new GUIButton(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "GenerateWaypointsButton") @@ -294,7 +275,7 @@ namespace Barotrauma new GUIFrame(new RectTransform(new Vector2(0.01f, 0.9f), paddedTopPanel.RectTransform), style: "VerticalLine"); - var visibilityButton = new GUIButton(new RectTransform(new Vector2(0.15f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "SetupVisibilityButton") + var visibilityButton = new GUIButton(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "SetupVisibilityButton") { ToolTip = TextManager.Get("SubEditorVisibilityButton") + '\n' + TextManager.Get("SubEditorVisibilityToolTip"), OnClicked = (btn, userData) => @@ -306,7 +287,7 @@ namespace Barotrauma } }; - var previouslyUsedButton = new GUIButton(new RectTransform(new Vector2(0.15f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "RecentlyUsedButton") + var previouslyUsedButton = new GUIButton(new RectTransform(new Vector2(0.9f, 0.9f), paddedTopPanel.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "RecentlyUsedButton") { ToolTip = TextManager.Get("PreviouslyUsedLabel"), OnClicked = (btn, userData) => @@ -536,7 +517,7 @@ namespace Barotrauma Visible = false }; var saveAssemblyButton = new GUIButton(new RectTransform(new Vector2(0.9f, 0.8f), saveAssemblyFrame.RectTransform, Anchor.Center), TextManager.Get("SaveItemAssembly")); - saveAssemblyButton.TextBlock.AutoScale = true; + saveAssemblyButton.TextBlock.AutoScaleHorizontal = true; saveAssemblyButton.OnClicked += (btn, userdata) => { CreateSaveAssemblyScreen(); @@ -567,7 +548,7 @@ namespace Barotrauma var paddedTab = new GUILayoutGroup(new RectTransform(new Vector2(0.98f, 0.96f), EntityMenu.RectTransform, Anchor.BottomCenter), childAnchor: Anchor.TopCenter) { - RelativeSpacing = 0.05f, + RelativeSpacing = 0.04f, Stretch = true }; @@ -576,22 +557,28 @@ namespace Barotrauma Stretch = true }; - var selectedCategoryButton = new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), entityMenuTop.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "CategoryButton.All") + selectedCategoryButton = new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), entityMenuTop.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "CategoryButton.All") { CanBeFocused = false }; - var selectedCategoryText = new GUITextBlock(new RectTransform(new Vector2(0.4f, 1.0f), entityMenuTop.RectTransform), TextManager.Get("MapEntityCategory.All"), font: GUI.LargeFont); + selectedCategoryText = new GUITextBlock(new RectTransform(new Vector2(0.2f, 1.0f), entityMenuTop.RectTransform), TextManager.Get("MapEntityCategory.All"), font: GUI.LargeFont); + + var filterText = new GUITextBlock(new RectTransform(new Vector2(0.1f, 1.0f), entityMenuTop.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.SubHeadingFont); + filterText.RectTransform.MaxSize = new Point((int)(filterText.TextSize.X * 1.5f), int.MaxValue); + entityFilterBox = new GUITextBox(new RectTransform(new Vector2(0.17f, 1.0f), entityMenuTop.RectTransform), font: GUI.Font, createClearButton: true); + entityFilterBox.OnTextChanged += (textBox, text) => { FilterEntities(text); return true; }; + + //spacing + new GUIFrame(new RectTransform(new Vector2(0.075f, 1.0f), entityMenuTop.RectTransform), style: null); entityCategoryButtons.Clear(); entityCategoryButtons.Add( new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), entityMenuTop.RectTransform, scaleBasis: ScaleBasis.BothHeight), "", style: "CategoryButton.All") { - OnClicked = (btn, userdata) => - { - entityCategoryButtons.ForEach(b => b.Selected = b == btn); - selectedCategoryText.Text = TextManager.Get("MapEntityCategory.All"); - selectedCategoryButton.ApplyStyle(GUI.Style.GetComponentStyle("CategoryButton.All")); - ClearFilter(); + OnClicked = (btn, userdata) => + { + if (!string.IsNullOrEmpty(entityFilterBox.Text)) { ClearFilter(); } + OpenEntityMenu(null); return true; } }); @@ -605,20 +592,14 @@ namespace Barotrauma ToolTip = TextManager.Get("MapEntityCategory." + category.ToString()), OnClicked = (btn, userdata) => { - entityMenuOpen = true; + if (!string.IsNullOrEmpty(entityFilterBox.Text)) { ClearFilter(); } MapEntityCategory newCategory = (MapEntityCategory)userdata; - selectedCategoryText.Text = TextManager.Get("MapEntityCategory." + newCategory.ToString()); - selectedCategoryButton.ApplyStyle(GUI.Style.GetComponentStyle("CategoryButton." + category.ToString())); OpenEntityMenu(newCategory); return true; } }); } - - var filterText = new GUITextBlock(new RectTransform(new Vector2(0.1f, 1.0f), entityMenuTop.RectTransform), TextManager.Get("serverlog.filter"), font: GUI.SubHeadingFont); - filterText.RectTransform.MaxSize = new Point((int)(filterText.TextSize.X * 1.5f), int.MaxValue); - entityFilterBox = new GUITextBox(new RectTransform(new Vector2(0.2f, 1.0f), entityMenuTop.RectTransform), font: GUI.Font, createClearButton: true); - entityFilterBox.OnTextChanged += (textBox, text) => { FilterEntities(text); return true; }; + entityCategoryButtons.ForEach(b => b.RectTransform.MaxSize = new Point(b.Rect.Height)); new GUIFrame(new RectTransform(new Vector2(0.8f, 0.01f), paddedTab.RectTransform), style: "HorizontalLine"); @@ -636,7 +617,7 @@ namespace Barotrauma { entityList.Content.ClearChildren(); - int entitiesPerRow = (int)Math.Ceiling(entityList.Content.Rect.Width / Math.Max(125 * GUI.Scale, 100)); + int entitiesPerRow = (int)Math.Ceiling(entityList.Content.Rect.Width / Math.Max(125 * GUI.Scale, 60)); foreach (MapEntityPrefab ep in MapEntityPrefab.List) { @@ -762,6 +743,9 @@ namespace Barotrauma UpdateEntityList(); + string name = (Submarine.MainSub == null) ? TextManager.Get("unspecifiedsubfilename") : Submarine.MainSub.Name; + subNameLabel.Text = ToolBox.LimitString(name, subNameLabel.Font, subNameLabel.Rect.Width); + foreach (MapEntityPrefab prefab in MapEntityPrefab.List) { prefab.sprite?.EnsureLazyLoaded(); @@ -1000,7 +984,6 @@ namespace Barotrauma if (string.IsNullOrWhiteSpace(nameBox.Text)) { GUI.AddMessage(TextManager.Get("SubNameMissingWarning"), GUI.Style.Red); - nameBox.Flash(); return false; } @@ -1069,6 +1052,8 @@ namespace Barotrauma linkedSubBox.AddItem(sub.Name, sub); } + subNameLabel.Text = ToolBox.LimitString(Submarine.MainSub.Name, subNameLabel.Font, subNameLabel.Rect.Width); + saveFrame = null; return false; @@ -1102,8 +1087,7 @@ namespace Barotrauma nameBox = new GUITextBox(new RectTransform(new Vector2(.95f, 0.05f), leftColumn.RectTransform)) { - OnEnterPressed = ChangeSubName, - Text = GetSubName() + OnEnterPressed = ChangeSubName }; nameBox.OnTextChanged += (textBox, text) => { @@ -1627,6 +1611,9 @@ namespace Barotrauma Submarine.MainSub.SetPrevTransform(Submarine.MainSub.Position); Submarine.MainSub.UpdateTransform(); + string name = Submarine.MainSub.Name; + subNameLabel.Text = ToolBox.LimitString(name, subNameLabel.Font, subNameLabel.Rect.Width); + cam.Position = Submarine.MainSub.Position + Submarine.MainSub.HiddenSubPosition; loadFrame = null; @@ -1700,22 +1687,25 @@ namespace Barotrauma msgBox.Buttons[1].OnClicked += msgBox.Close; } - private bool OpenEntityMenu(MapEntityCategory selectedCategory) + private bool OpenEntityMenu(MapEntityCategory? selectedCategory) { - entityFilterBox.Text = ""; + foreach (GUIButton categoryButton in entityCategoryButtons) + { + categoryButton.Selected = selectedCategory.HasValue ? + categoryButton.UserData is MapEntityCategory category && selectedCategory.Value == category : + categoryButton.UserData == null; + string categoryName = selectedCategory.HasValue ? selectedCategory.Value.ToString() : "All"; + selectedCategoryText.Text = TextManager.Get("MapEntityCategory." + categoryName); + selectedCategoryButton.ApplyStyle(GUI.Style.GetComponentStyle("CategoryButton." + categoryName)); + } + + this.selectedCategory = selectedCategory; + SetMode(Mode.Default); saveFrame = null; loadFrame = null; - - ClearFilter(); - foreach (GUIButton button in entityCategoryButtons) - { - button.Selected = - button.UserData != null && - (MapEntityCategory)button.UserData == selectedCategory; - } - + foreach (GUIComponent child in toggleEntityMenuButton.Children) { child.SpriteEffects = entityMenuOpen ? SpriteEffects.None : SpriteEffects.FlipVertically; @@ -1723,7 +1713,7 @@ namespace Barotrauma foreach (GUIComponent child in entityList.Content.Children) { - child.Visible = ((MapEntityPrefab)child.UserData).Category == selectedCategory; + child.Visible = !selectedCategory.HasValue || ((MapEntityPrefab)child.UserData).Category == selectedCategory; } entityList.UpdateScrollBarSize(); entityList.BarScroll = 0.0f; @@ -1733,14 +1723,9 @@ namespace Barotrauma private bool FilterEntities(string filter) { - foreach (GUIButton button in entityCategoryButtons) - { - button.Selected = false; - } - if (string.IsNullOrWhiteSpace(filter)) { - entityList.Content.Children.ForEach(c => c.Visible = true); + entityList.Content.Children.ForEach(c => c.Visible = !selectedCategory.HasValue || selectedCategory == ((MapEntityPrefab)c.UserData).Category); return true; } @@ -1748,7 +1733,9 @@ namespace Barotrauma foreach (GUIComponent child in entityList.Content.Children) { var textBlock = child.GetChild(); - child.Visible = ((MapEntityPrefab)child.UserData).Name.ToLower().Contains(filter); + child.Visible = + (!selectedCategory.HasValue || selectedCategory == ((MapEntityPrefab)child.UserData).Category) && + ((MapEntityPrefab)child.UserData).Name.ToLower().Contains(filter); } entityList.UpdateScrollBarSize(); entityList.BarScroll = 0.0f; @@ -1768,9 +1755,13 @@ namespace Barotrauma public void SetMode(Mode mode) { if (mode == this.mode) { return; } - this.mode = mode; - modeButtonGroup.Selected = (int)mode; + + defaultModeTickBox.Selected = mode == Mode.Default; + defaultModeTickBox.CanBeFocused = !defaultModeTickBox.Selected; + + characterModeTickBox.Selected = mode == Mode.Character; + wiringModeTickBox.Selected = mode == Mode.Wiring; switch (mode) { @@ -1855,10 +1846,11 @@ namespace Barotrauma { if (!child.Enabled) { child.TextColor *= 0.5f; } } - + + contextMenu.Content.Children.ForEach(c => c.RectTransform.MinSize = new Point(0, c.Rect.Height)); contextMenu.RectTransform.NonScaledSize = new Point( contextMenu.Rect.Width, - (int)((contextMenu.Content.CountChildren * 18) * GUI.Scale)); + (int)((contextMenu.Content.CountChildren * 20) * GUI.Scale)); contextMenu.OnSelected = (GUIComponent component, object obj) => { @@ -2411,6 +2403,11 @@ namespace Barotrauma hullVolumeFrame.Visible = MapEntity.SelectedList.Any(s => s is Hull); saveAssemblyFrame.Visible = MapEntity.SelectedList.Count > 0; + + if (PlayerInput.KeyHit(Microsoft.Xna.Framework.Input.Keys.Tab)) + { + entityFilterBox.Select(); + } cam.MoveCamera((float)deltaTime, true); if (PlayerInput.MidButtonHeld()) @@ -2615,9 +2612,11 @@ namespace Barotrauma GUI.DrawLine(spriteBatch, new Vector2(Submarine.MainSub.HiddenSubPosition.X, -cam.WorldView.Y), new Vector2(Submarine.MainSub.HiddenSubPosition.X, -(cam.WorldView.Y - cam.WorldView.Height)), Color.White * 0.5f, 1.0f, (int)(2.0f / cam.Zoom)); GUI.DrawLine(spriteBatch, new Vector2(cam.WorldView.X, -Submarine.MainSub.HiddenSubPosition.Y), new Vector2(cam.WorldView.Right, -Submarine.MainSub.HiddenSubPosition.Y), Color.White * 0.5f, 1.0f, (int)(2.0f / cam.Zoom)); } - - Submarine.DrawBack(spriteBatch, editing: true); + Submarine.DrawBack(spriteBatch, true, e => e is Structure s && (e.SpriteDepth >= 0.9f || s.Prefab.BackgroundSprite != null)); + spriteBatch.End(); + spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, transformMatrix: cam.Transform); + Submarine.DrawBack(spriteBatch, true, e => !(e is Structure) || e.SpriteDepth < 0.9f); spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, transformMatrix: cam.Transform); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Serialization/SerializableEntityEditor.cs b/Barotrauma/BarotraumaClient/ClientSource/Serialization/SerializableEntityEditor.cs index 15f332f9e..2c442a4b0 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Serialization/SerializableEntityEditor.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Serialization/SerializableEntityEditor.cs @@ -277,7 +277,7 @@ namespace Barotrauma layoutGroup = new GUILayoutGroup(new RectTransform(Vector2.One, RectTransform)) { AbsoluteSpacing = (int)(5 * GUI.Scale) }; if (showName) { - new GUITextBlock(new RectTransform(new Point(layoutGroup.Rect.Width, this.elementHeight), layoutGroup.RectTransform), entity.Name, font: titleFont ?? GUI.Font) + new GUITextBlock(new RectTransform(new Point(layoutGroup.Rect.Width, this.elementHeight), layoutGroup.RectTransform, isFixedSize: true), entity.Name, font: titleFont ?? GUI.Font) { TextColor = Color.White, Color = Color.Black @@ -392,7 +392,7 @@ namespace Barotrauma public GUIComponent CreateBoolField(ISerializableEntity entity, SerializableProperty property, bool value, string displayName, string toolTip) { - GUITickBox propertyTickBox = new GUITickBox(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform), displayName) + GUITickBox propertyTickBox = new GUITickBox(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform, isFixedSize: true), displayName) { Font = GUI.SmallFont, Selected = value, @@ -412,7 +412,7 @@ namespace Barotrauma public GUIComponent CreateIntField(ISerializableEntity entity, SerializableProperty property, int value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - inputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -453,7 +453,7 @@ namespace Barotrauma public GUIComponent CreateFloatField(ISerializableEntity entity, SerializableProperty property, float value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - 1, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -476,6 +476,7 @@ namespace Barotrauma { if (property.TrySetValue(entity, numInput.FloatValue)) { + numInput.FloatValue = (float)property.GetValue(entity); TrySendNetworkUpdate(entity, property); } }; @@ -485,7 +486,7 @@ namespace Barotrauma public GUIComponent CreateEnumField(ISerializableEntity entity, SerializableProperty property, object value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - inputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -514,7 +515,7 @@ namespace Barotrauma public GUIComponent CreateEnumFlagField(ISerializableEntity entity, SerializableProperty property, object value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - inputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -547,7 +548,7 @@ namespace Barotrauma public GUIComponent CreateStringField(ISerializableEntity entity, SerializableProperty property, string value, string displayName, string toolTip) { - var frame = new GUILayoutGroup(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft) + var frame = new GUILayoutGroup(new RectTransform(new Point(Rect.Width, elementHeight), layoutGroup.RectTransform, isFixedSize: true), isHorizontal: true, childAnchor: Anchor.CenterLeft) { Stretch = true }; @@ -608,7 +609,7 @@ namespace Barotrauma public GUIComponent CreatePointField(ISerializableEntity entity, SerializableProperty property, Point value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - inputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -661,7 +662,7 @@ namespace Barotrauma public GUIComponent CreateVector2Field(ISerializableEntity entity, SerializableProperty property, Vector2 value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - inputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -716,7 +717,7 @@ namespace Barotrauma public GUIComponent CreateVector3Field(ISerializableEntity entity, SerializableProperty property, Vector3 value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - largeInputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -775,7 +776,7 @@ namespace Barotrauma public GUIComponent CreateVector4Field(ISerializableEntity entity, SerializableProperty property, Vector4 value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - largeInputFieldWidth, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = toolTip @@ -838,7 +839,7 @@ namespace Barotrauma public GUIComponent CreateColorField(ISerializableEntity entity, SerializableProperty property, Color value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(1.0f - largeInputFieldWidth, 1), frame.RectTransform) { MinSize = new Point(80, 26) }, displayName, font: GUI.SmallFont) { ToolTip = displayName + '\n' + toolTip @@ -910,7 +911,7 @@ namespace Barotrauma public GUIComponent CreateRectangleField(ISerializableEntity entity, SerializableProperty property, Rectangle value, string displayName, string toolTip) { - var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform), color: Color.Transparent); + var frame = new GUIFrame(new RectTransform(new Point(Rect.Width, Math.Max(elementHeight, 26)), layoutGroup.RectTransform, isFixedSize: true), color: Color.Transparent); var label = new GUITextBlock(new RectTransform(new Vector2(0.25f, 1), frame.RectTransform), displayName, font: GUI.SmallFont) { ToolTip = displayName + '\n' + toolTip diff --git a/Barotrauma/BarotraumaClient/ClientSource/Sounds/OpenAL/Alc.cs b/Barotrauma/BarotraumaClient/ClientSource/Sounds/OpenAL/Alc.cs index 3159ff805..195731d78 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Sounds/OpenAL/Alc.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Sounds/OpenAL/Alc.cs @@ -120,6 +120,27 @@ namespace OpenAL [DllImport(OpenAlDll, CallingConvention = CallingConvention.Cdecl, EntryPoint = "alcGetError")] public static extern int GetError(IntPtr device); + public static string GetErrorString(int errorCode) + { + switch (errorCode) + { + case NoError: + return "No error"; + case InvalidContext: + return "Invalid context"; + case InvalidDevice: + return "Invalid device"; + case InvalidEnum: + return "Invalid enum"; + case InvalidValue: + return "Invalid value"; + case OutOfMemory: + return "Out of memory"; + default: + return "Unknown error"; + } + } + [DllImport(OpenAlDll, CallingConvention = CallingConvention.Cdecl, EntryPoint = "alcIsExtensionPresent")] public static extern bool IsExtensionPresent(IntPtr device, string extname); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundManager.cs b/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundManager.cs index ccb47ec11..15f0aa097 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundManager.cs @@ -195,31 +195,39 @@ namespace Barotrauma.Sounds loadedSounds = new List(); streamingThread = null; categoryModifiers = null; - - alcDevice = Alc.OpenDevice(null); - if (alcDevice == null) + + int alcError = Alc.NoError; + + string deviceName = Alc.GetString(IntPtr.Zero, Alc.DefaultDeviceSpecifier); + DebugConsole.NewMessage($"Attempting to open ALC device \"{deviceName}\""); + + alcDevice = IntPtr.Zero; + for (int i = 0; i < 3; i++) { - DebugConsole.ThrowError("Failed to open an ALC device! Disabling audio playback..."); - Disabled = true; - return; - } - - int alcError = Alc.GetError(alcDevice); - if (alcError != Alc.NoError) - { - //The audio device probably wasn't ready, this happens quite often - //Just wait a while and try again - Thread.Sleep(100); - - alcDevice = Alc.OpenDevice(null); - - alcError = Alc.GetError(alcDevice); - if (alcError != Alc.NoError) + alcDevice = Alc.OpenDevice(deviceName); + if (alcDevice == IntPtr.Zero) { - DebugConsole.ThrowError("Error initializing ALC device: " + alcError.ToString() + ". Disabling audio playback..."); - Disabled = true; - return; + DebugConsole.NewMessage($"ALC device initialization attempt #{i + 1} failed: device is null"); } + else + { + alcError = Alc.GetError(alcDevice); + if (alcError != Alc.NoError) + { + DebugConsole.NewMessage($"ALC device initialization attempt #{i + 1} failed: error code {Alc.GetErrorString(alcError)}"); + bool closed = Alc.CloseDevice(alcDevice); + if (!closed) + { + DebugConsole.NewMessage($"Failed to close ALC device"); + } + alcDevice = IntPtr.Zero; + } + } + } + if (alcDevice == IntPtr.Zero) + { + DebugConsole.ThrowError("ALC device creation failed too many times!"); + Disabled = true; } int[] alcContextAttrs = new int[] { }; @@ -241,7 +249,7 @@ namespace Barotrauma.Sounds alcError = Alc.GetError(alcDevice); if (alcError != Alc.NoError) { - DebugConsole.ThrowError("Error after assigning ALC context: " + alcError.ToString() + ". Disabling audio playback..."); + DebugConsole.ThrowError("Error after assigning ALC context: " + Alc.GetErrorString(alcError) + ". Disabling audio playback..."); Disabled = true; return; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Utils/LocalizationCSVtoXML.cs b/Barotrauma/BarotraumaClient/ClientSource/Utils/LocalizationCSVtoXML.cs index 11849a5a3..6f412a170 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Utils/LocalizationCSVtoXML.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Utils/LocalizationCSVtoXML.cs @@ -18,9 +18,10 @@ namespace Barotrauma private const string infoTextPath = "Content/Texts"; private const string xmlHeader = ""; - private static string[,] translatedLanguageNames = new string[12, 2] { { "English", "English" }, { "French", "Français" }, { "German", "Deutsch" }, + private static string[,] translatedLanguageNames = new string[13, 2] { { "English", "English" }, { "French", "Français" }, { "German", "Deutsch" }, { "Russian", "Русский" }, { "Brazilian Portuguese", "Português brasileiro" }, { "Simplified Chinese", "中文(简体)" }, { "Traditional Chinese", "中文(繁體)" }, - { "Castilian Spanish", "Castellano" }, { "Latinamerican Spanish", "Español Latinoamericano" }, { "Polish", "Polski" }, { "Turkish", "Türkçe" }, { "Japanese", "日本語" } }; + { "Castilian Spanish", "Castellano" }, { "Latinamerican Spanish", "Español Latinoamericano" }, { "Polish", "Polski" }, { "Turkish", "Türkçe" }, + { "Japanese", "日本語" }, { "Korean", "한국어" } }; public static void Convert() { @@ -81,7 +82,7 @@ namespace Barotrauma continue; } string xmlFileFullPath = $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}/NpcConversations_{languageNoWhitespace}_NEW.xml"; - File.WriteAllLines(xmlFileFullPath, xmlContent); + File.WriteAllLines(xmlFileFullPath, xmlContent, Encoding.UTF8); DebugConsole.NewMessage("Conversation localization .xml file successfully created at: " + xmlFileFullPath); } @@ -94,7 +95,7 @@ namespace Barotrauma continue; } string xmlFileFullPath = $"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}/{languageNoWhitespace}Vanilla_NEW.xml"; - File.WriteAllLines(xmlFileFullPath, xmlContent); + File.WriteAllLines(xmlFileFullPath, xmlContent, Encoding.UTF8); DebugConsole.NewMessage("InfoText localization .xml file successfully created at: " + xmlFileFullPath); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs b/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs index f482c401c..4d14e506d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs @@ -114,7 +114,7 @@ namespace Barotrauma public static string WrapText(string text, float lineLength, ScalableFont font, float textScale = 1.0f, bool playerInput = false) //TODO: could integrate this into the ScalableFont class directly { Vector2 textSize = font.MeasureString(text); - if (textSize.X < lineLength) { return text; } + if (textSize.X <= lineLength) { return text; } if (!playerInput) { diff --git a/Barotrauma/BarotraumaClient/LinuxClient.csproj b/Barotrauma/BarotraumaClient/LinuxClient.csproj index cdcfe3c8e..eb66cd697 100644 --- a/Barotrauma/BarotraumaClient/LinuxClient.csproj +++ b/Barotrauma/BarotraumaClient/LinuxClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 0.9.702.0 + 0.9.703.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaClient/MacClient.csproj b/Barotrauma/BarotraumaClient/MacClient.csproj index d6414dc0d..de5014235 100644 --- a/Barotrauma/BarotraumaClient/MacClient.csproj +++ b/Barotrauma/BarotraumaClient/MacClient.csproj @@ -11,7 +11,7 @@ AnyCPU;x64 Barotrauma ..\BarotraumaShared\Icon.ico - 0.9.0.0 + 0.9.703.0 Debug;Release;Unstable diff --git a/Barotrauma/BarotraumaClient/WindowsClient.csproj b/Barotrauma/BarotraumaClient/WindowsClient.csproj index 4f701d93f..ecced590d 100644 --- a/Barotrauma/BarotraumaClient/WindowsClient.csproj +++ b/Barotrauma/BarotraumaClient/WindowsClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 0.9.702.0 + 0.9.703.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaServer/LinuxServer.csproj b/Barotrauma/BarotraumaServer/LinuxServer.csproj index e14f65a74..b40af5df1 100644 --- a/Barotrauma/BarotraumaServer/LinuxServer.csproj +++ b/Barotrauma/BarotraumaServer/LinuxServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 0.9.702.0 + 0.9.703.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaServer/MacServer.csproj b/Barotrauma/BarotraumaServer/MacServer.csproj index e1f5e4e95..1e2c5358f 100644 --- a/Barotrauma/BarotraumaServer/MacServer.csproj +++ b/Barotrauma/BarotraumaServer/MacServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 0.9.702.0 + 0.9.703.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs b/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs index c251f7908..8497f6b7f 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs @@ -248,6 +248,16 @@ namespace Barotrauma } } + private static Client FindClient(string arg) + { + int.TryParse(arg, out int id); + var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + client ??= GameMain.Server.ConnectedClients.Find(c => c.EndpointMatches(arg)); + client ??= GameMain.Server.ConnectedClients.Find(c => c.SteamID == Steam.SteamManager.SteamIDStringToUInt64(arg)); + client ??= GameMain.Server.ConnectedClients.Find(c => Homoglyphs.Compare(c.Name, arg)); + return client; + } + private static void AssignOnClientRequestExecute(string names, Action onClientRequestExecute) { var matchingCommand = commands.Find(c => c.names.Intersect(names.Split('|')).Count() > 0); @@ -406,11 +416,10 @@ namespace Barotrauma return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - ThrowError("Client id \"" + id + "\" not found."); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -430,7 +439,7 @@ namespace Barotrauma client.GivePermission(permission); GameMain.Server.UpdateClientPermissions(client); NewMessage("Granted " + perm + " permissions to " + client.Name + ".", Color.White); - }); + }, args, 2); }); AssignOnExecute("revokeperm", (string[] args) => @@ -442,11 +451,10 @@ namespace Barotrauma return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - ThrowError("Client id \"" + id + "\" not found."); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -466,7 +474,7 @@ namespace Barotrauma client.RemovePermission(permission); GameMain.Server.UpdateClientPermissions(client); NewMessage("Revoked " + perm + " permissions from " + client.Name + ".", Color.White); - }); + }, args, 2); }); AssignOnExecute("giverank", (string[] args) => @@ -474,15 +482,14 @@ namespace Barotrauma if (GameMain.Server == null) return; if (args.Length < 1) { - NewMessage("giverank [id]: Assigns a specific rank(= a set of administrative permissions) to the player with the specified client ID.", Color.Cyan); + NewMessage("giverank [id/steamid/endpoint/name] [rank]: Assigns a specific rank (= a set of administrative permissions) to the player with the specified client ID.", Color.Cyan); return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - ThrowError("Client id \"" + id + "\" not found."); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -504,7 +511,7 @@ namespace Barotrauma client.SetPermissions(preset.Permissions, preset.PermittedCommands); GameMain.Server.UpdateClientPermissions(client); NewMessage("Assigned the rank \"" + preset.Name + "\" to " + client.Name + ".", Color.White); - }); + }, args, 2); }); AssignOnExecute("givecommandperm", (string[] args) => @@ -516,11 +523,10 @@ namespace Barotrauma return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - ThrowError("Client id \"" + id + "\" not found."); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -546,7 +552,7 @@ namespace Barotrauma client.SetPermissions(client.Permissions, client.PermittedConsoleCommands.Union(grantedCommands).Distinct().ToList()); GameMain.Server.UpdateClientPermissions(client); NewMessage("Gave the client \"" + client.Name + "\" the permission to use console commands " + string.Join(", ", grantedCommands.Select(c => c.names[0])) + ".", Color.White); - }); + }, args, 2); }); AssignOnExecute("revokecommandperm", (string[] args) => @@ -558,11 +564,10 @@ namespace Barotrauma return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - ThrowError("Client id \"" + id + "\" not found."); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -587,7 +592,7 @@ namespace Barotrauma client.SetPermissions(client.Permissions, client.PermittedConsoleCommands.Except(revokedCommands).ToList()); GameMain.Server.UpdateClientPermissions(client); NewMessage("Revoked \"" + client.Name + "\"'s permission to use the console commands " + string.Join(", ", revokedCommands.Select(c => c.names[0])) + ".", Color.White); - }); + }, args, 2); }); AssignOnExecute("showperm", (string[] args) => @@ -599,11 +604,10 @@ namespace Barotrauma return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - ThrowError("Client id \"" + id + "\" not found."); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -1571,11 +1575,10 @@ namespace Barotrauma { if (args.Length < 2) return; - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -1600,11 +1603,10 @@ namespace Barotrauma { if (args.Length < 2) return; - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -1629,11 +1631,10 @@ namespace Barotrauma { if (args.Length < 2) return; - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -1658,11 +1659,10 @@ namespace Barotrauma { if (args.Length < 2) return; - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -1696,11 +1696,10 @@ namespace Barotrauma { if (args.Length < 2) return; - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient); + ThrowError("Client \"" + args[0] + "\" not found."); return; } @@ -1738,11 +1737,10 @@ namespace Barotrauma return; } - int.TryParse(args[0], out int id); - var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id); + var client = FindClient(args[0]); if (client == null) { - GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient); + ThrowError("Client \"" + args[0] + "\" not found."); return; } diff --git a/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs b/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs index 727947c01..9565e3adf 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs @@ -107,6 +107,7 @@ namespace Barotrauma ScriptedEventSet.LoadPrefabs(); AfflictionPrefab.LoadAll(GetFilesOfType(ContentType.Afflictions)); + SkillSettings.Load(GetFilesOfType(ContentType.SkillSettings)); StructurePrefab.LoadAll(GetFilesOfType(ContentType.Structure)); ItemPrefab.LoadAll(GetFilesOfType(ContentType.Item)); JobPrefab.LoadAll(GetFilesOfType(ContentType.Jobs)); diff --git a/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Reactor.cs b/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Reactor.cs index 9069c1946..dc3a1d4ae 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Reactor.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Reactor.cs @@ -13,7 +13,7 @@ namespace Barotrauma.Items.Components public void ServerRead(ClientNetObject type, IReadMessage msg, Client c) { bool autoTemp = msg.ReadBoolean(); - bool shutDown = msg.ReadBoolean(); + bool powerOn = msg.ReadBoolean(); float fissionRate = msg.ReadRangedSingle(0.0f, 100.0f, 8); float turbineOutput = msg.ReadRangedSingle(0.0f, 100.0f, 8); @@ -24,10 +24,10 @@ namespace Barotrauma.Items.Components if (!autoTemp && AutoTemp) blameOnBroken = c; if (turbineOutput < targetTurbineOutput) blameOnBroken = c; if (fissionRate > targetFissionRate) blameOnBroken = c; - if (!this._powerOn && shutDown) blameOnBroken = c; + if (!_powerOn && powerOn) blameOnBroken = c; AutoTemp = autoTemp; - this._powerOn = shutDown; + _powerOn = powerOn; targetFissionRate = fissionRate; targetTurbineOutput = turbineOutput; diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs index db79485db..0dd7868f6 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs @@ -327,6 +327,12 @@ namespace Barotrauma.Networking #endif if (!started) { return; } + if (OwnerConnection != null && ChildServerRelay.HasShutDown) + { + Disconnect(); + return; + } + base.Update(deltaTime); fileSender.Update(deltaTime); diff --git a/Barotrauma/BarotraumaServer/WindowsServer.csproj b/Barotrauma/BarotraumaServer/WindowsServer.csproj index fdf2b7c3b..8ed3c8daf 100644 --- a/Barotrauma/BarotraumaServer/WindowsServer.csproj +++ b/Barotrauma/BarotraumaServer/WindowsServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 0.9.702.0 + 0.9.703.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml b/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml index fce51ea89..97c5d3597 100644 --- a/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml +++ b/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml @@ -103,6 +103,7 @@ + @@ -130,10 +131,12 @@ + + diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs index 95b2c5e28..e0cd0198f 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs @@ -296,14 +296,14 @@ namespace Barotrauma } float multiplier = MathHelper.Lerp(1, 10, MathHelper.Clamp(collider.LinearVelocity.Length() / 10, 0, 1)); float targetDistance = collider.GetSize().X * multiplier; - float horizontalDistance = Math.Abs(collider.SimPosition.X - currentPath.CurrentNode.SimPosition.X); - float verticalDistance = Math.Abs(collider.SimPosition.Y - currentPath.CurrentNode.SimPosition.Y); + float horizontalDistance = Math.Abs(character.WorldPosition.X - currentPath.CurrentNode.WorldPosition.X); + float verticalDistance = Math.Abs(character.WorldPosition.Y - currentPath.CurrentNode.WorldPosition.Y); if (character.CurrentHull != currentPath.CurrentNode.CurrentHull) { verticalDistance *= 2; } float distance = horizontalDistance + verticalDistance; - if (distance < targetDistance) + if (ConvertUnits.ToSimUnits(distance) < targetDistance) { currentPath.SkipToNextNode(); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs index 3d279cb85..14bb6e791 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs @@ -74,6 +74,8 @@ namespace Barotrauma public readonly Dictionary OptionSprites; + public readonly float Weight; + static Order() { Prefabs = new Dictionary(); @@ -172,6 +174,9 @@ namespace Barotrauma PrefabList = new List(Prefabs.Values); } + /// + /// Constructor for order prefabs + /// private Order(XElement orderElement) { Identifier = orderElement.GetAttributeString("identifier", ""); @@ -199,6 +204,7 @@ namespace Barotrauma AppropriateJobs = orderElement.GetAttributeStringArray("appropriatejobs", new string[0]); Options = orderElement.GetAttributeStringArray("options", new string[0]); Category = (OrderCategory)Enum.Parse(typeof(OrderCategory), orderElement.GetAttributeString("category", "undefined"), true); + Weight = orderElement.GetAttributeFloat(0.0f, "weight"); string translatedOptionNames = TextManager.Get("OrderOptions." + Identifier, true); if (translatedOptionNames == null) @@ -243,6 +249,9 @@ namespace Barotrauma } } + /// + /// Constructor for order instances + /// public Order(Order prefab, Entity targetEntity, ItemComponent targetItem, Character orderGiver = null) { Prefab = prefab; @@ -257,6 +266,7 @@ namespace Barotrauma TargetAllCharacters = prefab.TargetAllCharacters; AppropriateJobs = prefab.AppropriateJobs; FadeOutTime = prefab.FadeOutTime; + Weight = prefab.Weight; OrderGiver = orderGiver; TargetEntity = targetEntity; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs index caf7425cf..cf3bc553d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs @@ -1407,7 +1407,7 @@ namespace Barotrauma target.CharacterHealth.CalculateVitality(); if (wasCritical && target.Vitality > 0.0f && Timing.TotalTime > lastReviveTime + 10.0f) { - character.Info.IncreaseSkillLevel("medical", 0.5f, character.WorldPosition + Vector2.UnitY * 150.0f); + character.Info.IncreaseSkillLevel("medical", SkillSettings.Current.SkillIncreasePerCprRevive, character.WorldPosition + Vector2.UnitY * 150.0f); SteamAchievementManager.OnCharacterRevived(target, character); lastReviveTime = (float)Timing.TotalTime; #if SERVER diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs index 40b7dab76..287e0704b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs @@ -138,6 +138,8 @@ namespace Barotrauma private readonly List statusEffects = new List(); private readonly List speedMultipliers = new List(); + private float greatestNegativeSpeedMultiplier = 1f; + private float greatestPositiveSpeedMultiplier = 1f; public Entity ViewTarget { @@ -1069,42 +1071,32 @@ namespace Barotrauma { get { - if (speedMultipliers.Count == 0) return 1f; - - float greatestPositive = 1f; - float greatestNegative = 1f; - - for (int i = 0; i < speedMultipliers.Count; i++) - { - float val = speedMultipliers[i]; - if (val < 1f) - { - if (val < greatestNegative) - { - greatestNegative = val; - } - } - else - { - if (val > greatestPositive) - { - greatestPositive = val; - } - } - } - - return greatestPositive - (1f - greatestNegative); + return greatestPositiveSpeedMultiplier - (1f - greatestNegativeSpeedMultiplier); } - set + } + + public void StackSpeedMultiplier(float val) + { + if (val < 1f) { - if (value == 1f) return; - speedMultipliers.Add(value); + if (val < greatestNegativeSpeedMultiplier) + { + greatestNegativeSpeedMultiplier = val; + } + } + else + { + if (val > greatestPositiveSpeedMultiplier) + { + greatestPositiveSpeedMultiplier = val; + } } } public void ResetSpeedMultiplier() { - speedMultipliers.Clear(); + greatestPositiveSpeedMultiplier = 1f; + greatestNegativeSpeedMultiplier = 1f; } public float ApplyTemporarySpeedLimits(float speed) @@ -1440,6 +1432,7 @@ namespace Barotrauma public bool HasEquippedItem(Item item) { + if (Inventory == null) { return false; } for (int i = 0; i < Inventory.Capacity; i++) { if (Inventory.Items[i] == item && Inventory.SlotTypes[i] != InvSlotType.Any) return true; @@ -2339,15 +2332,16 @@ namespace Barotrauma } private readonly List aiChatMessageQueue = new List(); - private readonly List prevAiChatMessages = new List(); + + //key = identifier, value = time the message was sent + private readonly Dictionary prevAiChatMessages = new Dictionary(); public void DisableLine(string identifier) { - var dummyMsg = new AIChatMessage("", ChatMessageType.Default, identifier) + if (!string.IsNullOrEmpty(identifier)) { - SendTime = Timing.TotalTime - }; - prevAiChatMessages.Add(dummyMsg); + prevAiChatMessages[identifier] = (float)Timing.TotalTime; + } } public void Speak(string message, ChatMessageType? messageType = null, float delay = 0.0f, string identifier = "", float minDurationBetweenSimilar = 0.0f) @@ -2355,10 +2349,15 @@ namespace Barotrauma if (GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient) { return; } if (string.IsNullOrEmpty(message)) { return; } + if (prevAiChatMessages.ContainsKey(identifier) && + prevAiChatMessages[identifier] < Timing.TotalTime - minDurationBetweenSimilar) + { + prevAiChatMessages.Remove(identifier); + } + //already sent a similar message a moment ago if (!string.IsNullOrEmpty(identifier) && minDurationBetweenSimilar > 0.0f && - (aiChatMessageQueue.Any(m => m.Identifier == identifier) || - prevAiChatMessages.Any(m => m.Identifier == identifier && m.SendTime > Timing.TotalTime - minDurationBetweenSimilar))) + (aiChatMessageQueue.Any(m => m.Identifier == identifier) || prevAiChatMessages.ContainsKey(identifier))) { return; } @@ -2403,15 +2402,25 @@ namespace Barotrauma { sent.SendTime = Timing.TotalTime; aiChatMessageQueue.Remove(sent); - prevAiChatMessages.Add(sent); + if (!string.IsNullOrEmpty(sent.Identifier)) + { + prevAiChatMessages[sent.Identifier] = (float)sent.SendTime; + } } - for (int i = prevAiChatMessages.Count - 1; i >= 0; i--) + if (prevAiChatMessages.Count > 100) { - if (prevAiChatMessages[i].SendTime < Timing.TotalTime - 60.0f) + List toRemove = new List(); + foreach (KeyValuePair prevMessage in prevAiChatMessages) { - prevAiChatMessages.RemoveRange(0, i + 1); - break; + if (prevMessage.Value < Timing.TotalTime - 60.0f) + { + toRemove.Add(prevMessage.Key); + } + } + foreach (string identifier in toRemove) + { + prevAiChatMessages.Remove(identifier); } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs index 89e418f94..093de4d3b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs @@ -619,7 +619,7 @@ namespace Barotrauma { UpdateBleedingProjSpecific((AfflictionBleeding)affliction, targetLimb, deltaTime); } - Character.SpeedMultiplier = affliction.GetSpeedMultiplier(); + Character.StackSpeedMultiplier(affliction.GetSpeedMultiplier()); } } @@ -638,7 +638,7 @@ namespace Barotrauma var affliction = afflictions[i]; affliction.Update(this, null, deltaTime); affliction.DamagePerSecondTimer += deltaTime; - Character.SpeedMultiplier = affliction.GetSpeedMultiplier(); + Character.StackSpeedMultiplier(affliction.GetSpeedMultiplier()); } UpdateLimbAfflictionOverlays(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/SkillSettings.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/SkillSettings.cs new file mode 100644 index 000000000..f0814daed --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/SkillSettings.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma +{ + class SkillSettings : ISerializableEntity + { + public static SkillSettings Current + { + get; + private set; + } + + [Serialize(4.0f, true)] + public float SingleRoundSkillGainMultiplier { get; set; } + + + private float skillIncreasePerRepair; + [Serialize(5.0f, true)] + public float SkillIncreasePerRepair + { + get { return skillIncreasePerRepair * GetCurrentSkillGainMultiplier(); } + set { skillIncreasePerRepair = value; } + } + + private float skillIncreasePerSabotage; + [Serialize(3.0f, true)] + public float SkillIncreasePerSabotage + { + get { return skillIncreasePerSabotage * GetCurrentSkillGainMultiplier(); } + set { skillIncreasePerSabotage = value; } + } + + private float skillIncreasePerCprRevive; + [Serialize(0.5f, true)] + public float SkillIncreasePerCprRevive + { + get { return skillIncreasePerCprRevive * GetCurrentSkillGainMultiplier(); } + set { skillIncreasePerCprRevive = value; } + } + + private float skillIncreasePerRepairedStructureDamage; + [Serialize(0.005f, true)] + public float SkillIncreasePerRepairedStructureDamage + { + get { return skillIncreasePerRepairedStructureDamage * GetCurrentSkillGainMultiplier(); } + set { skillIncreasePerRepairedStructureDamage = value; } + } + + private float skillIncreasePerSecondWhenSteering; + [Serialize(0.005f, true)] + public float SkillIncreasePerSecondWhenSteering + { + get { return skillIncreasePerSecondWhenSteering * GetCurrentSkillGainMultiplier(); } + set { skillIncreasePerSecondWhenSteering = value; } + } + + private float skillIncreasePerFabricatorRequiredSkill; + [Serialize(0.5f, true)] + public float SkillIncreasePerFabricatorRequiredSkill + { + get { return skillIncreasePerFabricatorRequiredSkill * GetCurrentSkillGainMultiplier(); } + set { skillIncreasePerFabricatorRequiredSkill = value; } + } + + private SkillSettings(XElement element) + { + SerializableProperties = SerializableProperty.DeserializeProperties(this, element); + } + + public string Name => "SkillSettings"; + + public Dictionary SerializableProperties + { + get; + set; + } + + public static void Load(IEnumerable files) + { + //reverse order to respect content package load order (last file overrides others) + foreach (ContentFile file in files.Reverse()) + { + if (file.Type != ContentType.SkillSettings) + { + throw new ArgumentException(); + } + + XDocument doc = XMLExtensions.TryLoadXml(file.Path); + if (doc == null) { continue; } + + Current = new SkillSettings(doc.Root); + break; + } + + if (Current == null) + { + DebugConsole.NewMessage("Now skill settings found in the selected content packages. Using default values."); + Current = new SkillSettings(null); + } + } + + private float GetCurrentSkillGainMultiplier() + { + if (GameMain.GameSession?.GameMode is CampaignMode) + { + return 1.0f; + } + else + { + return SingleRoundSkillGainMultiplier; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs b/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs index 9b7aee2c2..b40ae00f6 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs @@ -38,7 +38,8 @@ namespace Barotrauma UIStyle, TraitorMissions, EventManagerSettings, - Orders + Orders, + SkillSettings } public class ContentPackage diff --git a/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs b/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs index bbb889b45..90ff507be 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs @@ -290,11 +290,41 @@ namespace Barotrauma commands.Add(new Command("startwhenclientsready", "startwhenclientsready [true/false]: Enable or disable automatically starting the round when clients are ready to start.", null)); - commands.Add(new Command("giveperm", "giveperm [id]: Grants administrative permissions to the player with the specified client ID.", null)); + commands.Add(new Command("giveperm", "giveperm [id]: Grants administrative permissions to the player with the specified client ID.", null, + () => + { + if (GameMain.NetworkMember == null) return null; - commands.Add(new Command("revokeperm", "revokeperm [id]: Revokes administrative permissions to the player with the specified client ID.", null)); + return new string[][] + { + GameMain.NetworkMember.ConnectedClients.Select(c => c.Name).ToArray(), + Enum.GetValues(typeof(ClientPermissions)).Cast().Select(v => v.ToString()).ToArray() + }; + })); + + commands.Add(new Command("revokeperm", "revokeperm [id]: Revokes administrative permissions to the player with the specified client ID.", null, + () => + { + if (GameMain.NetworkMember == null) return null; + + return new string[][] + { + GameMain.NetworkMember.ConnectedClients.Select(c => c.Name).ToArray(), + Enum.GetValues(typeof(ClientPermissions)).Cast().Select(v => v.ToString()).ToArray() + }; + })); - commands.Add(new Command("giverank", "giverank [id]: Assigns a specific rank (= a set of administrative permissions) to the player with the specified client ID.", null)); + commands.Add(new Command("giverank", "giverank [id]: Assigns a specific rank (= a set of administrative permissions) to the player with the specified client ID.", null, + () => + { + if (GameMain.NetworkMember == null) return null; + + return new string[][] + { + GameMain.NetworkMember.ConnectedClients.Select(c => c.Name).ToArray(), + PermissionPreset.List.Select(pp => pp.Name).ToArray() + }; + })); commands.Add(new Command("givecommandperm", "givecommandperm [id]: Gives the player with the specified client ID the permission to use the specified console commands.", null)); @@ -823,6 +853,7 @@ namespace Barotrauma var reactor = reactorItem.GetComponent(); reactor.TurbineOutput = power / reactor.MaxPowerOutput * 100.0f; reactor.FissionRate = power / reactor.MaxPowerOutput * 100.0f; + reactor.PowerOn = true; reactor.AutoTemp = true; #if SERVER @@ -1514,8 +1545,13 @@ namespace Barotrauma } } - public static void ShowQuestionPrompt(string question, QuestionCallback onAnswered) + public static void ShowQuestionPrompt(string question, QuestionCallback onAnswered, string[] args = null, int argCount = -1) { + if (args != null && args.Length > argCount) + { + onAnswered(args[argCount]); + } + #if CLIENT activeQuestionText = new GUITextBlock(new RectTransform(new Point(listBox.Content.Rect.Width, 0), listBox.Content.RectTransform), " >>" + question, font: GUI.SmallFont, wrap: true) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/MonsterMission.cs b/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/MonsterMission.cs index c0be2525a..6588014fc 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/MonsterMission.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/MonsterMission.cs @@ -77,6 +77,12 @@ namespace Barotrauma Level.Loaded.TryGetInterestingPosition(true, Level.PositionType.MainPath, Level.Loaded.Size.X * 0.3f, out Vector2 spawnPos); bool isClient = IsClient; + + if (monsters.Count > 0) + { + throw new Exception($"monsters.Count > 0 ({monsters.Count})"); + } + if (!string.IsNullOrEmpty(monsterFile)) { for (int i = 0; i < monsterCount; i++) @@ -92,12 +98,22 @@ namespace Barotrauma } } + if (tempSonarPositions.Count > 0) + { + throw new Exception($"tempSonarPositions.Count > 0 ({tempSonarPositions.Count})"); + } + monsters.ForEach(m => m.Enabled = false); SwarmBehavior.CreateSwarm(monsters.Cast()); for (int i = 0; i < monsters.Count; i++) { tempSonarPositions.Add(spawnPos + Rand.Vector(maxSonarMarkerDistance)); } + + if (monsters.Count != tempSonarPositions.Count) + { + throw new Exception($"monsters.Count != tempSonarPositions.Count ({monsters.Count} != {tempSonarPositions.Count})"); + } } public override void Update(float deltaTime) @@ -108,6 +124,16 @@ namespace Barotrauma //keep sonar markers within maxSonarMarkerDistance from the monster(s) for (int i = 0; i < tempSonarPositions.Count; i++) { + if (monsters.Count != tempSonarPositions.Count) + { + throw new Exception($"monsters.Count != tempSonarPositions.Count ({monsters.Count} != {tempSonarPositions.Count})"); + } + + if (i < 0 || i >= monsters.Count) + { + throw new Exception($"Index {i} outside of bounds 0-{monsters.Count} ({tempSonarPositions.Count})"); + } + if (monsters[i].Removed || monsters[i].IsDead) { continue; } Vector2 diff = tempSonarPositions[i] - monsters[i].Position; @@ -148,8 +174,10 @@ namespace Barotrauma public override void End() { + tempSonarPositions.Clear(); + monsters.Clear(); if (State < 1) { return; } - + GiveReward(); completed = true; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Events/ScriptedEventSet.cs b/Barotrauma/BarotraumaShared/SharedSource/Events/ScriptedEventSet.cs index d21cefb8d..333974395 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Events/ScriptedEventSet.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Events/ScriptedEventSet.cs @@ -39,7 +39,7 @@ namespace Barotrauma private ScriptedEventSet(XElement element, string debugIdentifier) { - DebugIdentifier = debugIdentifier; + DebugIdentifier = element.GetAttributeString("identifier", null) ?? debugIdentifier; Commonness = new Dictionary(); EventPrefabs = new List(); ChildSets = new List(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Deconstructor.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Deconstructor.cs index 677f6aac8..424665d8a 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Deconstructor.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Deconstructor.cs @@ -72,7 +72,7 @@ namespace Barotrauma.Items.Components ApplyStatusEffects(ActionType.OnActive, deltaTime, null); if (powerConsumption <= 0.0f) { Voltage = 1.0f; } - progressTimer += deltaTime * Voltage; + progressTimer += deltaTime * Math.Min(Voltage, 1.0f); var targetItem = inputContainer.Inventory.Items.LastOrDefault(i => i != null); if (targetItem == null) { return; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs index 3fe0406e9..7bdd7bfdc 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs @@ -10,8 +10,6 @@ namespace Barotrauma.Items.Components partial class Fabricator : Powered, IServerSerializable, IClientSerializable { - public const float SkillIncreaseMultiplier = 0.5f; - private readonly List fabricationRecipes = new List(); private FabricationRecipe fabricatedItem; @@ -130,13 +128,6 @@ namespace Barotrauma.Items.Components if (selectedItem == null) return; if (!outputContainer.Inventory.IsEmpty()) return; -#if SERVER - if (user != null) - { - GameServer.Log(user.LogName + " started fabricating " + selectedItem.DisplayName + " in " + item.Name, ServerLog.MessageType.ItemInteraction); - } -#endif - #if CLIENT itemList.Enabled = false; activateButton.Text = TextManager.Get("FabricatorCancel"); @@ -155,20 +146,19 @@ namespace Barotrauma.Items.Components currPowerConsumption = powerConsumption; currPowerConsumption *= MathHelper.Lerp(1.5f, 1.0f, item.Condition / item.MaxCondition); + +#if SERVER + if (user != null) + { + GameServer.Log(user.LogName + " started fabricating " + selectedItem.DisplayName + " in " + item.Name, ServerLog.MessageType.ItemInteraction); + } + item.CreateServerEvent(this); +#endif } private void CancelFabricating(Character user = null) { -#if SERVER - if (fabricatedItem != null) - { - if (user != null) - { - GameServer.Log(user.LogName + " cancelled the fabrication of " + fabricatedItem.DisplayName + " in " + item.Name, ServerLog.MessageType.ItemInteraction); - } - item.CreateServerEvent(this); - } -#endif + if (fabricatedItem == null) { return; } IsActive = false; fabricatedItem = null; @@ -190,6 +180,13 @@ namespace Barotrauma.Items.Components inputContainer.Inventory.Locked = false; outputContainer.Inventory.Locked = false; +#if SERVER + if (user != null) + { + GameServer.Log(user.LogName + " cancelled the fabrication of " + fabricatedItem.DisplayName + " in " + item.Name, ServerLog.MessageType.ItemInteraction); + } + item.CreateServerEvent(this); +#endif } public override void Update(float deltaTime, Camera cam) @@ -215,7 +212,7 @@ namespace Barotrauma.Items.Components if (powerConsumption <= 0) { Voltage = 1.0f; } - timeUntilReady -= deltaTime * Voltage; + timeUntilReady -= deltaTime * Math.Min(Voltage, 1.0f); if (timeUntilReady > 0.0f) { return; } @@ -254,14 +251,15 @@ namespace Barotrauma.Items.Components { foreach (Skill skill in fabricatedItem.RequiredSkills) { - user.Info.IncreaseSkillLevel(skill.Identifier, skill.Level / 100.0f * SkillIncreaseMultiplier, user.WorldPosition + Vector2.UnitY * 150.0f); + float userSkill = user.GetSkillLevel(skill.Identifier); + user.Info.IncreaseSkillLevel( + skill.Identifier, + skill.Level * SkillSettings.Current.SkillIncreasePerFabricatorRequiredSkill / Math.Max(userSkill, 1.0f), + user.WorldPosition + Vector2.UnitY * 150.0f); } } - CancelFabricating(null); -#if SERVER - item.CreateServerEvent(this); -#endif + CancelFabricating(); } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Reactor.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Reactor.cs index 93c355bfa..68d569275 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Reactor.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Reactor.cs @@ -43,13 +43,14 @@ namespace Barotrauma.Items.Components private float sendUpdateTimer; private float degreeOfSuccess; - + private Vector2 optimalTemperature, allowedTemperature; private Vector2 optimalFissionRate, allowedFissionRate; private Vector2 optimalTurbineOutput, allowedTurbineOutput; private bool _powerOn; + [Serialize(defaultValue: false, isSaveable: true)] public bool PowerOn { get { return _powerOn; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Sonar.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Sonar.cs index 4d94f2ec8..830f8e5a0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Sonar.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Sonar.cs @@ -106,16 +106,18 @@ namespace Barotrauma.Items.Components get => currentMode; set { + bool changed = currentMode != value; + currentMode = value; if (value == Mode.Passive) { - currentPingIndex = -1; if (item.AiTarget != null) { item.AiTarget.SectorDegrees = 360.0f; } } #if CLIENT + if (changed) { prevPassivePingRadius = float.MaxValue; } UpdateGUIElements(); #endif } @@ -263,7 +265,7 @@ namespace Barotrauma.Items.Components character.Speak(TextManager.GetWithVariables(dialogTag, new string[2] { "[direction]", "[count]" }, new string[2] { targetGroup.Key.ToString(), targetGroup.Value.Count.ToString() }, - new bool[2] { true, false }), null, 0, "sonartarget" + targetGroup.Value[0].ID, 30); + new bool[2] { true, false }), null, 0, "sonartarget" + targetGroup.Value[0].ID, 60); //prevent the character from reporting other targets in the group for (int i = 1; i < targetGroup.Value.Count; i++) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs index 80da2e0bf..e514c6a91 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs @@ -277,21 +277,25 @@ namespace Barotrauma.Items.Components ApplyStatusEffects(ActionType.OnActive, deltaTime, null); + float userSkill = 0.0f; + if (user != null && (user.SelectedConstruction == item || item.linkedTo.Contains(user.SelectedConstruction))) + { + userSkill = user.GetSkillLevel("helm") / 100.0f; + } + if (AutoPilot) { UpdateAutoPilot(deltaTime); - float userSkill = 0.0f; - if (user != null && (user.SelectedConstruction == item || item.linkedTo.Contains(user.SelectedConstruction))) - { - userSkill = user.GetSkillLevel("helm") / 100.0f; - } targetVelocity = targetVelocity.ClampLength(MathHelper.Lerp(AutoPilotMaxSpeed, AIPilotMaxSpeed, userSkill) * 100.0f); } else { if (user != null && user.Info != null && user.SelectedConstruction == item) { - user.Info.IncreaseSkillLevel("helm", 0.005f * deltaTime, user.WorldPosition + Vector2.UnitY * 150.0f); + user.Info.IncreaseSkillLevel( + "helm", + SkillSettings.Current.SkillIncreasePerSecondWhenSteering / Math.Max(userSkill, 1.0f) * deltaTime, + user.WorldPosition + Vector2.UnitY * 150.0f); } Vector2 velocityDiff = steeringInput - targetVelocity; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs index 6f7bf3b0e..4544bd612 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs @@ -9,9 +9,6 @@ namespace Barotrauma.Items.Components { partial class Repairable : ItemComponent, IServerSerializable, IClientSerializable { - public static float SkillIncreasePerRepair = 5.0f; - public static float SkillIncreasePerSabotage = 3.0f; - private string header; private float deteriorationTimer; @@ -282,7 +279,7 @@ namespace Barotrauma.Items.Components { float characterSkillLevel = CurrentFixer.GetSkillLevel(skill.Identifier); CurrentFixer.Info.IncreaseSkillLevel(skill.Identifier, - SkillIncreasePerRepair / Math.Max(characterSkillLevel, 1.0f), + SkillSettings.Current.SkillIncreasePerRepair / Math.Max(characterSkillLevel, 1.0f), CurrentFixer.WorldPosition + Vector2.UnitY * 100.0f); } @@ -313,7 +310,7 @@ namespace Barotrauma.Items.Components { float characterSkillLevel = CurrentFixer.GetSkillLevel(skill.Identifier); CurrentFixer.Info.IncreaseSkillLevel(skill.Identifier, - SkillIncreasePerSabotage / Math.Max(characterSkillLevel, 1.0f), + SkillSettings.Current.SkillIncreasePerSabotage / Math.Max(characterSkillLevel, 1.0f), CurrentFixer.WorldPosition + Vector2.UnitY * 100.0f); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WifiComponent.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WifiComponent.cs index f78b70c90..4342bb427 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WifiComponent.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WifiComponent.cs @@ -83,8 +83,14 @@ namespace Barotrauma.Items.Components public bool CanReceive(WifiComponent sender) { if (sender == null || sender.channel != channel) { return false; } - if (sender.TeamID == Character.TeamType.Team1 && TeamID == Character.TeamType.Team2) { return false; } - if (sender.TeamID == Character.TeamType.Team2 && TeamID == Character.TeamType.Team1) { return false; } + + if (sender.TeamID != Character.TeamType.None && TeamID != Character.TeamType.None) + { + if (sender.TeamID != TeamID) + { + return false; + } + } if (Vector2.DistanceSquared(item.WorldPosition, sender.item.WorldPosition) > sender.range * sender.range) { return false; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Wire.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Wire.cs index cc89c64ad..efdb0d0e6 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Wire.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Wire.cs @@ -671,21 +671,33 @@ namespace Barotrauma.Items.Components return closestIndex; } - + public override void FlipX(bool relativeToSub) - { + { + Vector2 refPos = item.Submarine == null ? + Vector2.Zero : + item.Position - item.Submarine.HiddenSubPosition; + for (int i = 0; i < nodes.Count; i++) { - nodes[i] = new Vector2(-nodes[i].X, nodes[i].Y); + nodes[i] = relativeToSub ? + new Vector2(-nodes[i].X, nodes[i].Y) : + new Vector2(refPos.X - (nodes[i].X - refPos.X), nodes[i].Y); } UpdateSections(); } public override void FlipY(bool relativeToSub) { + Vector2 refPos = item.Submarine == null ? + Vector2.Zero : + item.Position - item.Submarine.HiddenSubPosition; + for (int i = 0; i < nodes.Count; i++) { - nodes[i] = new Vector2(nodes[i].X, -nodes[i].Y); + nodes[i] = relativeToSub ? + new Vector2(nodes[i].X, -nodes[i].Y) : + new Vector2(nodes[i].X, refPos.Y - (nodes[i].Y - refPos.Y)); } UpdateSections(); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Inventory.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Inventory.cs index 998411cec..e55d25536 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Inventory.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Inventory.cs @@ -44,15 +44,9 @@ namespace Barotrauma // Adjustment to match the old size of 75,71 SlotSpriteSmall.size = new Vector2(SlotSpriteSmall.SourceRect.Width * 0.5859375f, SlotSpriteSmall.SourceRect.Height * 0.5546875f); - slotSpriteVertical = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(672, 218, 75, 144), null, 0); - slotSpriteHorizontal = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(476, 186, 160, 75), null, 0); - slotSpriteRound = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(681, 373, 58, 64), null, 0); slotHotkeySprite = new Sprite("Content/UI/InventoryUIAtlas.png", new Rectangle(128, 0, 128, 128), null, 0); - EquipIndicator = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(673, 182, 73, 27), new Vector2(0.5f, 0.5f), 0); EquipIndicatorHighlight = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(679, 108, 67, 21), new Vector2(0.5f, 0.5f), 0); - DropIndicator = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(870, 55, 73, 66), new Vector2(0.5f, 0.75f), 0); - DropIndicatorHighlight = new Sprite("Content/UI/inventoryAtlas.png", new Rectangle(946, 54, 73, 66), new Vector2(0.5f, 0.75f), 0); } #endif } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs index 27ca4a39a..454068b5e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Gap.cs @@ -107,19 +107,16 @@ namespace Barotrauma : this (rectangle, Submarine.MainSub) { } - public Gap(Rectangle newRect, Submarine submarine) - : this(newRect, newRect.Width < newRect.Height, submarine) + public Gap(Rectangle rect, Submarine submarine) + : this(rect, rect.Width < rect.Height, submarine) { } - public Gap(Rectangle newRect, bool isHorizontal, Submarine submarine) + public Gap(Rectangle rect, bool isHorizontal, Submarine submarine) : base(MapEntityPrefab.Find(null, "gap"), submarine) { - rect = newRect; - + this.rect = rect; flowForce = Vector2.Zero; - - this.IsHorizontal = isHorizontal; - + IsHorizontal = isHorizontal; open = 1.0f; FindHulls(); @@ -131,6 +128,7 @@ namespace Barotrauma outsideCollisionBlocker.CollisionCategories = Physics.CollisionWall; outsideCollisionBlocker.CollidesWith = Physics.CollisionCharacter; outsideCollisionBlocker.Enabled = false; + Resized += newRect => IsHorizontal = newRect.Width < newRect.Height; DebugConsole.Log("Created gap (" + ID + ")"); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs index edbcea775..1f03417ba 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs @@ -36,6 +36,8 @@ namespace Barotrauma //is the mouse inside the rect private bool isHighlighted; + public event Action Resized; + public bool IsHighlighted { get { return isHighlighted || ExternalHighlight; } @@ -578,6 +580,7 @@ namespace Barotrauma if (!float.IsNaN(value)) { _spriteOverrideDepth = MathHelper.Clamp(value, 0.001f, 0.999f); + if (this is Item) { _spriteOverrideDepth = Math.Min(_spriteOverrideDepth, 0.9f); } SpriteDepthOverrideIsSet = true; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs index fb11526b5..a3d64c723 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs @@ -42,9 +42,6 @@ namespace Barotrauma public const int WallSectionSize = 96; public static List WallList = new List(); - //how much mechanic skill increases per damage removed from the wall by welding - public const float SkillIncreaseMultiplier = 0.005f; - const float LeakThreshold = 0.1f; #if CLIENT @@ -1008,7 +1005,7 @@ namespace Barotrauma if (damageDiff < 0.0f) { attacker.Info.IncreaseSkillLevel("mechanical", - -damageDiff * SkillIncreaseMultiplier / Math.Max(attacker.GetSkillLevel("mechanical"), 1.0f), + -damageDiff * SkillSettings.Current.SkillIncreasePerRepairedStructureDamage / Math.Max(attacker.GetSkillLevel("mechanical"), 1.0f), SectionPosition(sectionIndex, true)); } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs index 00319e3f3..09e5fda56 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs @@ -949,6 +949,7 @@ namespace Barotrauma && !fixture.CollisionCategories.HasFlag(Physics.CollisionWall) && !fixture.CollisionCategories.HasFlag(Physics.CollisionRepair)) { return -1; } if (ignoreSubs && fixture.Body.UserData is Submarine) { return -1; } + if (fixture.Body.UserData as string == "ruinroom") { return -1; } if (fixture.Body.UserData is Structure structure) { if (structure.IsPlatform || structure.StairDirection != Direction.None) { return -1; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs index d79cf7e6e..bf838f108 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs @@ -176,8 +176,16 @@ namespace Barotrauma.Networking byte[] lengthBytes = new byte[2]; lengthBytes[0] = (byte)(msg.Length & 0xFF); lengthBytes[1] = (byte)((msg.Length >> 8) & 0xFF); - writeStream?.Write(lengthBytes, 0, 2); - writeStream?.Write(msg, 0, msg.Length); + try + { + writeStream?.Write(lengthBytes, 0, 2); + writeStream?.Write(msg, 0, msg.Length); + } + catch (IOException e) + { + shutDown = true; + break; + } if (shutDown) { break; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs index b79e5f4c4..a42d9ce20 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs @@ -74,6 +74,17 @@ namespace Barotrauma.Networking RespawnShuttle.Load(false); RespawnShuttle.PhysicsBody.FarseerBody.OnCollision += OnShuttleCollision; + //prevent wifi components from communicating between the respawn shuttle and other subs + List wifiComponents = new List(); + foreach (Item item in Item.ItemList) + { + if (item.Submarine == RespawnShuttle) { wifiComponents.AddRange(item.GetComponents()); } + } + foreach (WifiComponent wifiComponent in wifiComponents) + { + wifiComponent.TeamID = Character.TeamType.FriendlyNPC; + } + ResetShuttle(); shuttleDoors = new List(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Screens/GameScreen.cs b/Barotrauma/BarotraumaShared/SharedSource/Screens/GameScreen.cs index 35601ec5b..be0e35b25 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Screens/GameScreen.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Screens/GameScreen.cs @@ -148,10 +148,26 @@ namespace Barotrauma sw.Stop(); GameMain.PerformanceCounter.AddElapsedTicks("LevelUpdate", sw.ElapsedTicks); - if (Character.Controlled != null && Character.Controlled.SelectedConstruction != null && Character.Controlled.CanInteractWith(Character.Controlled.SelectedConstruction)) + if (Character.Controlled != null) { - Character.Controlled.SelectedConstruction.UpdateHUD(cam, Character.Controlled, (float)deltaTime); + if (Character.Controlled.SelectedConstruction != null && Character.Controlled.CanInteractWith(Character.Controlled.SelectedConstruction)) + { + Character.Controlled.SelectedConstruction.UpdateHUD(cam, Character.Controlled, (float)deltaTime); + } + if (Character.Controlled.Inventory != null) + { + foreach (Item item in Character.Controlled.Inventory.Items) + { + if (item == null) { continue; } + if (Character.Controlled.HasEquippedItem(item)) + { + item.UpdateHUD(cam, Character.Controlled, (float)deltaTime); + } + } + } } + + sw.Restart(); Character.UpdateAll((float)deltaTime, cam); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Serialization/SerializableProperty.cs b/Barotrauma/BarotraumaShared/SharedSource/Serialization/SerializableProperty.cs index 803448b5c..2526e7f8c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Serialization/SerializableProperty.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Serialization/SerializableProperty.cs @@ -520,7 +520,7 @@ namespace Barotrauma { if (parentObject is Character character && value is float) { character.LowPassMultiplier = (float)value; return true; } } break; case "SpeedMultiplier": - { if (parentObject is Character character && value is float) { character.SpeedMultiplier = (float)value; return true; } } + { if (parentObject is Character character && value is float) { character.StackSpeedMultiplier((float)value); return true; } } break; case "IsOn": { if (parentObject is LightComponent lightComponent && value is bool) { lightComponent.IsOn = (bool)value; return true; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/AssemblyInfo.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/AssemblyInfo.cs index 9984506ed..4e891145a 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/AssemblyInfo.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/AssemblyInfo.cs @@ -35,6 +35,8 @@ public static class AssemblyInfo #if DEBUG retVal = "Debug" + retVal; +#elif UNSTABLE + retVal = "Unstable" + retVal; #else retVal = "Release" + retVal; #endif diff --git a/Barotrauma/BarotraumaShared/Submarines/Bunyip.sub b/Barotrauma/BarotraumaShared/Submarines/Bunyip.sub deleted file mode 100644 index 4c8fa1c9ea4e32bcfcfbe3852a2172585f3e06ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262712 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 e=c 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 BwJNJ;s3*M)>>F+B8P7 zI8N7JivIknb0982F42&BGo_G8C4JPAOTLiZs@>5TuZj&Y8jJ~*zs_W7In3Pj`M~Yy zsls4h3{{5SP8J0X^3$t21w;5fY>0sxcM%N|?5YbxPsP2ObTCqU7{jau@{K$UISf@g z_2ZX0R-an=h_KtHM*_{^W)B?5w4reC(FqUy;z97)+N7;E>dgaQi(TLhF@vSl{#C(k zcpp{^(NS`LKP5@dv!G1!1?JvuKIk7fMPQhkFYh6lN1X&c|)}h7V{25H*Q@5jY_0|H3 zvjjvk>GHlhnlX_P@5sGQYMi=KR}b)D>3LTd>MnsC2*uWGqbj;W<*wtehdGx2y7&!+DL@I`@! zN|grdLcL6XqLI`2LGg|RFmJ7;rVB4iWrJN_oElw13cU3~um7LxyTgLrc{v>%_dHe# zCIZ3q3#|hCw2%Mt}01Fp-#3aNYd}Ubks8hpZ;fTOWD__tkau+2r~G;g=nQHw9D7fWW87gK_y791Nj zPNUY)MxyYf#_=acshryI!l?dS1go*A8M1l=27GhygOCL?7^e3qbL6>du$2SF79A49CktH;Z^ z^&J_BYcm%G>oxJjN^+r8ER{n?)c$9~=-Hacq#miy!TjHp7JxjvC?Az@tA!|6Htr%l8 z{QIVzGQ%I#zsdDDpt97uJ77pwVF)AqZavYtDODh3p>vr2k@ht}-fo2KyA?L?Y`IKp z2hJ14HPv5&8AGUX6@WgDFKoUX1CUfb1mHmVd02-R3Od@Y)nx*OCebWGZAS)Kh&-3qsJL<(#%Wo|6lKuX?aN) z<=BnvoZSsvJy9;ksTRy=iAhP2@-$p-Uwi97{Ei>;B%SjtIjmXc;u(1b8NQcr68=wi zu}HhiB<%YMSkuJE`3wYVV>wVhc`q6z53(6fpovlbQ`hNQTK4)aZ4^Z4yO- z6R!`E5629QRDKcfQMncFqH*duutM~1C=+x603&(zq$>jXiYVqv?Vy5pH$Yn|?}_Vd zfdDLK74{rJ_s1?V5F=Pa5uo2I6JFH&AC~+OgcT0RTd6~C4u}*DZXt&dH*;4EJeTXQ zp49AqiDV+TLjOngOBW;S6g4j&p$M-xu4N{&$h?(!`j-Oab5P?|W;#R_QM`g^`I!gz zV+7$`P6RjSx_2nCKxb*+@U-!o79Uo3f$X7dNFe97g`8j-&J9->?h?9drI?lJerbd5 zN5puYI99fE!b&DbW=1>#fQH4wz^?eLaflQ#wR|Lb{D4NR&~;mvtW40q|07Ko=9)GQ zR9jnW9b_JR_1Weudmemz5JM`#5*&6S_3y&(i^C`^5@>*gm@C~`GutAA{6S)Ideq}C za%7nDxQ2?V7B0K)#MH|Zkn9o78TVi88z1BQ<9GW4Nx!o96)WPZ z7~H0)O)n`PNEAeU8-eOctA>%`bOqDhzK-%aEHSt9`rZzp^Ox>d*2fZMB1-b=y39jxq?$J_uW_R8&Y(ZX0lPjBIfQLVaXk#7TyuxevRk3B|U`E zACP9gxOSu8Q4d>#oG-6BhMKqb7_hF5#BCJDbe$sA096da7dWyVIzB^`^?o5?ceF~O zg~Q%2_j?uQi8x`LeBwNWS?Cf$(iRuz>hWanTuZz@Dd@X!T=eWOMac)io8P#XGdekY zlHlE$8AJSDtuz^Btq>bfZ2T-XU4s@M{DR^mN~l==fQg?& zqPr+6YbmcU?WeQRN5w|S;6nbn2DzNt0IT#fx`ix;Q1b;txt?|`S<%Zb@lp}6u`ala~HuhkH zjR+hOq6{RJcK)-O3;D)>c#RauNvLVp&mp%@c>`YH-X7;`8uVB#8=j7707B!5t~Jk%QX%9zR%zY_tRPnQz^?C;Llno zpt=8kcZ*4QhGK|sac?f;s)nRZZSCV#biLLtlJ@E~ur3Xm-~dkh4GkOpejkCIJ{L=a z0Ec21l-0BXc7RYjXrzZvxFep9+#o~H!jAqA6&cl*?c7Gr(Wb+sH}otn%z9zq`ZK&- zh4Os&J%6DXSp;T`xMYlm^s_9F&-tDj_(DTbTIBxEx;8S1s;4bpaSov4GB*s*En{GFYp9lTq1Xm!4@aT{@_yty()D3|ZtMgZkEI-g1jJYa*jY&K~Q%LT{>NG(L^2}g_BlXg0(*KW#R4hRKV6VCq)prjN zWiYE3lP)kRt?yCZ_lhDCo zymGQJh%PWFe>942aGc-)Q#DOMGGQ1LLy|=J0M+;ELlCG;t{D~8cm8IO2hj$SI-Bak zSy{q>D&WXsR*^tb|W;*#e!f7QzfM-T^WT*OJAmVljwow!%c7ZsISU0ri%~gDcg6mGVPx|u4PnLf)NS@9K=)8q`%FL`QdF4Cq zQj{UdfRV+=n_CcSk4EBqk7|sgAh`cPV!^@j*#T6;UYL4Z^?e&$ZNN>^JB2&N$A14AZbTs zD*llm;Dwx2&$JxQj_z9*=caBD3TkhO?1-H6=b)nrED3lUX@2^_Gs9Z!D~>AQIjQX} zQgqE@yFC3E-EweYsP^7IyBB>urLl$bbmyXD$=L1cIWBaIZK!0}4w|BAeluv$2W>+8 zfZz-ASIHU%0TjlUTVP->#_%NaZT4ny4|(u1O_Z5B#+JK9Dgl6c9Tz1lGBKfb01b_^ zmD}#V1Fj(pn{vhyw#gSWl&MX@LYe#`_u5@!gN90}ga=ptU3CS=G||<$uVNz@o{ zHf?jRu5=eC&VC~jUPg!Xfl`IY>59bFq=hc0(9*tR+ijsS`Z+w?hoMTcaea@E@KY|6 zKRV9Fa*kp87Zln7TJn2tnC7!^b@J+zWNtxo{S-)Ck4rOOWz&D>WR^PoY+rBP(d9G> z(nS};g|aW*57+h4Vky*Yf&;qm8F$ z_qgF4w$%*IRm?drYf4G9erJ8S_CDK?QJP#J#obmiYY7ehutbDz@QlUy4A`CBqE8Co zn)slC(c{|)mGuu9ef29WE*wa%H9^2Y!$rdla9()-10UcKAe#)Z#) zW44Hi|A+qRHK+1=By+2s^!Z|7q$IL(cOLL9uA8 z^&0))gr!^KrIz~(gC+)+6G=Nk`B64{ zWg&GSuf{7n?5W*Vt|jKyy7nzSTkxBz+wBbOVYNuyw=U4XH3-IgyLb?|@M@xSDRx4&jj{ zM?yNyyQ>DDlI$fUU94@gMAdh9$q>#DqAv0(HB+JE67IrCBs9^!$Y0=uymDQ{Ld1$^rH1BbP&sE8^F&5H=%_Ib^S7?-S9Nul&c zygUfcN~Lsg&1jMHxuDcE z$t=Tg29lX@=qdP;5T%#m8Ohp`n)gaREY3~IfcM6n#R z1-1i8Wc$43BVQ-RLby)TANsf`2n4SXpbZMVCJ-d@3hT2A&}|TaKQxxD;>N?;yMY3+zea9+yb?jG{dgDvj{meH&dM~B1GG}%#Zq)jxO{WwNYijVwO4PIM-RW%ABL<9^{D*}PQ;a|Z(brlo|u_3 zZ!mcsZS0YM7bI$P!8yra`i6ih)KF+plO&u06Q5pZC-eiFEC1V-$IOPoK*Psb>&#Mp z#TRVsc*@p%o`0ueHT0di6p;<;Ikb;xIVpw%{9u`mT>qqRD5TisJOy(_J{ryKIWQu1 zeSfX^ruATgWG{Vvgj*vKQQw%`P?M$yaa=Ze^VyxxPV#pU=8v!< z1R%y$k-Icd0vo+sNc;orXg~qIsjO&P&6gxzu%r0lDZy@tit4J8_&4ws3BM&26Rhar z%lkz7{gU&q_Ijkb5cukrYZG4NK5i#MkCl2rgQYkH(ZLOn^W$) z@m`I1Gm=YV@~|?ps`Ht1j(zt%7i2k?TuGvS@_vC!iBZM1#<=#UUHJ*5`J|oGEVIL| zA@{p2k#OaKC@l@=!==vziTpY$Zq?~jLfIIw>|WQ?>S!>7rqi+iRvG*#0e=?8|BbKr zh(V|)Y=y#aqgMzLf7weCMOF)+zv!epW<^PR1b&15KS**gQT>#+y5|-z1$4M8lt#1M zhNqCvGN6MH8>Ottek{*EOt?i-ET)M5!int14S3f2660(ADD|D7M2;bzscU8*cEQ z1i?_!dbU=5&I&5TVQRDIS%xAn@lzGJAe|Z8Oe0n{=%BI%MW`50p`j}X@t2wPu;3f( zHDezWmi{smy-Z)n0m#Tau5B#iBmh6*om$=txj_5LmrcIvg^V^TAwFxp$$Ba21Ty~e z0!#QHREkseJ~k_VfnU+PS&KRJp|5uSCG89@KGQv)H$$*Xq9m=JUr)W<%}NH+E9LhoU<$vJ$bBR6EAz{iAz~mv~{hzsZv}t z4A~m?7_}zSXz{e^sP0+gSReZ0a_IYHNf_krrd9vL(qThcybQ7{q69A3LKZzFy{^z^ zb&kL-1Ah42XIbYB`ZkTAFgfae+A>rYm|wL8HbT39R?{WwAf;(=ApcK@mt3?zkE*T-7`>w_MHp9bkKDvR=X7@;OTS$Kc8c%`YtL2IqSb{$VGZ?7Jc1yrYs=BP4a6w$otFk8?01Gx`B73&g6H#y49pQjH}XFjJMbg<}T z$iL6e1Th9Q7Rs1G{oon!vJTf+%7Vu?6>Hk+$EME?AUpK}-48LWiSEuGz?Ta@gO8dU z^qGa@Ee-RidwQTY#FaQjk=#XQ`g?E#n!4`t4x@?q$r}v^h+>1D*Q3W0i!WHbBnmA^ zZSucwfby#VK5afgp&mQ47_`@KXPVVFj|F>?QUgy){OI^XKVrTDj}J;`V=F+-qdN1- z3JY&^StO4`wB*UNLL(45Hu15p%cnOQATKLLflBD_rzkS46gaa@@~ZlE?J~RMG~Klk zsoV*o4V}}i_;QzBe72-bMnwafW|4g>8gkOe`jF@NjT2X}Bm>o+6+*O3wC1+>2W~t< ze%D6n=BOB2@HXrdb!bQN_qm!5zlv3(tcqBka%AeSOZ=Z(vxd-JEm1!^A(EvN&80~S zgMfTBObq-)X!c(S&_1FF@yjca18b882lXxjX0bh8J@p%ntVZ|c;gi5?vk@ZBuKJOs z`^IpBx1_H)jA=tZ`UdCnRi^2l=ca66uy5`i+ma!TY*|cJ(i#6M?{VT|B=_%>750UY z^s?pvV@E84O!EcMb^$97Z#`eQg^ZrExI$SQWCbdYtwnG*AzO-Nw+OlbqVt z*yL3SzqjPF_{5F3-z6@H$=KYR?P%Ir%pt4Ak+lLd`8v^kSc57B%^k!XU3*xtK4EnEBw8~qmB#XT*dXUN3h^9{99m+>*tWig>fpP>RZGsI@R!U(%b`pcvvPoS~uZ_SM9UoBYEPe*_mpR*sYCC)+8G?^{H7opPy0WQ$= z_B_@A6$i;~%7MzLC|i?JzgeHxM|klBbrPhu1+)7rt(`s*nE9owULSb1&rgdwB6fE9 z?le5zj1es3u(0Pvc}xWARLgo;kXSQ5xZ5RY&3fUFzoL)}wuC%K}Lnt~n{DQH#{K3Pnl`18~aP5O!7}|LH$WR=p-e36!)=&6mCw*eW>w%l)t9zO) zuRp@D>D0l}a>0Y~C99Xu&74#Cl)+2fU;KA9C!P1k;a0zt|1M_tsk}}fLX+P5hg8|F zK!REFUma1bqq4^WfOXTDUDoZuaEOTT<(u`gWFBZ9G7X;*?YfW_stAIs)A zdaVvvP@UF0ZMJl=K6w%VK@|HX>INid27p%i^Cp!h&ARDRng3Yy7F?ub!Z_$XNb{jT zd*BXtO6O%|C(j5AQe8wVOw2JzZXm!G6y%$h%hxlW#ZYY;O(-dbxwWn%IxMzO3R= z_I<2r@bI@DZi zT|SaNz!mum3vt@jTI|llt5)XEb#TBu`KR)_XS>VT2x!t z(m{q@MouzDazrnRJ&8v7xAJIXKO#Vb!9;+q(-9RgPXZFfLt3(^avE+Ku`f^tymGYj zSebkPYy!}WK)I$1E3z0%RULBX({ocud$`ExL+q>qCjt>t;y-HDwveoe`7Imjw3#Z5 zWH~-QpANJ%YolV5m6UAdFSA3$uS`T`HJcqBT-)up&YQ2A-_dr1tSy8Sda!~;I0oHH zSRkU!7(%H*pEMVU6>VotGSid4VM=QwKbI)maO?G}RQLc(lFifxp?=$p=F<(Snid9W zsa`^#ceNKA|6hcj^5$BGOwwJPmif9)sCW>{-qpOk z5kExS+;@I=t8@>JYsan20tQ*Wyl&Q!csImO#rweKmY!;~AJ?NRYOTGz*=Vi!PJtu@ zhfBj7T`9heM4cUDd*7>t;udE%SlA*Hl6f1`nD?T(@3FSf5pQseDT6;{>0gp|jzWMJbxk@@z zS&v96+--gKZO32v*@uN1!csX7448wel|(}+NDn2%bEQ7@>TSSm#ddK76Y#8{d9&+l z!quSAeden38;8nr#0-(TG#AHlre2LK0uz%k=U1klqQsrN0{v~!#{ucsx;wsb%+vX6 zS+^_o7G@<>3;CaMrbiQAH+I&qX&!erNL|6NFFa9k$G%km@s6{gv-9R8#bhj8xGW7c ze?zpgYMwoB!rIp@gk39?9wMPliQG?sU~x$vt;dqVble)}9AX1sjREv=hL^rA!8u@x z+(YBzwvBx7?@IAK-qE+t%0#XM>9n?I<<7b?<4>TmPTv7?+n%%Y!|I zikA zvXc8)eJY^}GNDF)AieF=L^5_VA>Y($oe$OrX0lGp*+F{V;19~l-&k4SN!rPy6 z@xxV_4&Td2aB zD2X%cckB<%mp_U~k~rziWKp9^g!jIfcna2Naw*q7^$HoLY+>S=gG>5KT>x`QY23>_+qv@iZb7Aa60*E?uh+JA~DXn+ZK{g zM4u^94#*8g15ss9~vEC{e$TRWDUh zw~dSKfqJ%lW2;&?^J>#zr5k&J>(+VSeP0c4xPiI~EW0$*!hm+UZ|3lHMUMXSn%%u= zJSj#^O=)D6+K3`3!`b1`&4LgR!IFGucNS2mWC~BuQFDCGABzF2Z z{VXgD{}nGRZ;bJiPgynOPn9cTx+}{Y4N~SI;SvOXz;ZH8!m$ai_Em4C^()f+LAl>q zfv^>zDj37Xxp|7un*vm@(4xQ9=g52_M4DQgR`p)YqhrTkzK4X{ zKdZ8Lt&*M`PWI0+y9%e|^*MT+QGNSs{t_3YG>x*<0285&G`cQLh->=mg$@Y zYlGKiPY`Lr`&ObXyXO#?z929nzw*a}L^*S10kHd1;$PmSKT8)f0!zS8Eh&J=36W(` z2aY||Ijas=D}jUGv5-m^8mTh$Ile2dA?$7nCv3VRP^`F3UevsB_p!hg62km5SfiLc zSn+$t>@-KY!*aTlMyVgz=i1IR>Rv+FlkqKFYI57^f?h#_s+WjN^CQ(*ldoF74&^ts z7a9Yb%Pp$2Ql4+yGqd>;h%|4DSS)%o1GJr9x;l0bHmTxyP6G#@7$K3|I;k3k2X10$tJ9!TT&8>u0I|B zBC66nO;Nr1UcV&P5CrSoi6W+;IOTVw8?4p$|j^!1WMONwp0XlS34M6f-48h4iC^YCcRyVfzs-v zQ*HcIErm5@0^w)zh;CZyZi==+V9rUs$)iGDjA<=Ei6f{}Q2a#4ORhuHSEBYgc+G0X z=UkdYlFk&SpJd(wLcqi;%6^emiw`d&K+Wjzy^kWdiChV94qM$8AkVia8p%$&M?zi1T}1hACqV6l zMrg@o&*0opk%6?NAn0_ZC4P&YfP0$l9Wlzo;_MxO%NqwqC$H2Ok?{W^#A>M-%^A>9 z0iYR>;em7`7A{G8ewQ&4Y3EhTw>Uamkb+O0`PYfIj<^<6IPkRgHgzy`1uQnZKZj3773qUV&&lWzwp8?9hy>g-2Gm z<#U@F@3iaZdpy0N&Fn9ABEUQ!kSGA9z*{ujbb}5N&E`GK1T}^^I4q=1nq4LRtm|n&}|UCX#Y9TZzC8rdI-2)dIMw*YO6#mzeV&*3*z_oRe}iPx5`%KbFp_>oRu(81yODZ2 zI82vO6+?8epe|&qQf?{J;}u4-5Xu?L^z{qGs>c^iQdJ+*hPMyX%0EL(h8U>ihIYZS z7ud)4OI|jk472Tiiy505?(&VFUlL!#i4>(va_lJTX;vYe)`pZyslF!pB^7!-#5QI= zHoK+CkqiEVV&kMiL>euqYIyx6R5%sCh>hr7x}%yx=UD`qz%j{zht(^;8Q0J_*$=ol zApEN31gA!b)&5CpXhN%8S#nZCdh#016fi-@BV39T^bu0r#-X}twRM?x2R$MqIy}DJ zdPZ+N^}kk-Yx-Mg0G_hL^)v@q8sEm#5Ez z{KX1ZReD{_UMN}{2^G3_5*ba%D;e7~H?qImJ*m9i)2TA!PXHw!;EZo-n>Bc6#7(xq2e6jQ3el>~qQ{&SbQuFBGN;I61kCJ<0{&hc+ zDIT=wBE=DFVB;B>9IUr;Tiq|Tl*Vcod?Jub$fexGzE%rB4l98lqbFbn2Vk+I`(CPL zAXXywff$5L4T1Z~C0wHco;A`wE3er~KlW=p%F$Y~8}ozGQRp8>=dt4|3$&S4cc%;~+Jt=UrtE__ zY2r{0aA3N*stt352YW=gVU2v}Ak-h4?dk7nIcEi99;S$L^qk2*Bb5&MC}d9I=OP8iaIqA)}%y~$!1i>ln`^D;9C83&uT_nC$bcc8& zN{IbQu-(YaxeFy1!*;U}4qHv(P8wx6(kxy+Vh}bve&k_kXeX4Dkqs|DBh-<89*=~t z43M-BqfCxv=V*jcm5w?2aWfGO$p%N|)+|=c8sc`aVM-u!2v)4e2){9$`n+Z4{f3+5Hf_b&!ReZIuRZr-;p}N=f zi5oZqo7DCeZlB=jzfJWbS`O;o-1P`OUTV6&JEX_N=W9xB#pn{0yrawoG}M;!V827$ z-r0ug)Z1Lo=7#JtdSK7H|qw#-5-l zzZqQ8(g;2*I}+5@gFNo!EYhYE)r(3GUspg&b3dHFG(v$C>W`aTPBaJLu9;A4F=lNb z)@1;|AwQm#KQ0~hqS7%CGnzviH&PmYcKHCU7p-ovhnKk&oA@ZgzI1vw{#fa+hXN1~ zVF^WANram3Dz=6>Dv+!wDFvh^5L|)c7@-DlqJ;q9Y4FZ@z?h?zQ3L?v0+u5wL1$B# zV*fN*v^8WpWzC-XDCENn?sL??r_OEqwn(!piBtU1BeQAdSEhFJp z8nM^xX=hrQ%JR67Dyez3m5V3s>W|YLIti1lvHR@Ekk?hJODKtZF{84&rOi=Qqo>1|S>YG^Ix78ymDjtuo=v`(F6u((D;AE8fGGxzW1o?)Rs=|jN;4_&;-<;Lib}qcqLiCrw*smxcd^Fkw=`?Q z>TC1cN}>75Eb0UKQRFgO`MY;}0XItmw0OqgZ4{tTOUobpHU)IPAp^1A_DsjK`#_&u zE(KuzKmf#CTqb@nat*E%atZ7?Nc+SO`v)C;ir^THTpWuRgy$zRLINNf+)cZI{zB+_kYo z;Weo%(%9F5?gb$9;sy!0g6!!+4 z+qDz;ky>#ML~%mV(!zch+$= zI+;(;mOPI72oKH5TI6sR3888$T^ze1BVR;Socx_1sVmr=o1Q*jwctlCri_i129cd)?r@r z$ypxLOCvbVfzt(-jEeuxj^;xA*cE$_oXUeh%9iRl${q|>sU8PM0e0?OefGy7gAj{IvJhI9p=5u!Dl8d3={vS_XQc0-Lr%kmc( z()o1|!uP(W{QE_gf_z2NXqq~g+Afd4)yr#*9HR$B3c(tfmH63R_Jd^0(zt5Or0Xa6 zr$tSP6;>P?npicp;5O-5oFRBip`W#8YnHA`gzQ#|pZYyLiuKvEnWnYXh%R4^Xjq>o zI1Hc-oCsqt%5bJDG0u$rQ=>tx6~#q6*bmn%yUgb9+c*i~!*KAy7sHeGj$#_r@}^^~ z5WZj=`r>twB#8@o=wdmHoFekCGUz3Qe^!#5B1b3vit_>d)Pwo0*S~i00c(?G2e|Eq zlCRrhcSp|pR*-@63wDF)y>LExxXy0r%jWFG=IB-n3(sLhg@pk;a^QD1)uZfjM^aw{ zP(OR2=i!r)^QY0B8Y;_pyD*XVP_J~IXh9I*cx3qh@AO_Vc0R?o-?>?h)sH`dX&vo6 z3aTTSoSC2IS5SAu49Uki~fWN`$7p78C7=ua{ZXU+U!XN5IMq zaKr#fPq)?6-h!ZL;uKq)PFL4`M0vbMeH_l(q4BPhgvJ8S(&-k{Pry8{Dc2JTwx1Qg z$?V8p!99V=X^jw|lZ*v)gs-y9nz8lgIy1;mBNx(e(dD=u%UXr1>(OfP&rQCHywZF= z4t)2UTy0m|a_YKU{5Ja{i_*S7o1ULNIJZ}Ffe+AUJ_pJWj0HU5CQ>|?pdd;t@}x12 zQ$E|+-IUTnUrM2%8z4Q0l=sP;ZM79}u3+4vnJYog$eIR&0}dKtY*=W ztuZ8h&5jS1HXRPluG@1amAxGQmUYed2-iX}s^j<4^i~Ha>~dTfD)sXlWPu4Q^7qMG zH*ASoNtIwH8uo!hDp=GN_B8DBD)4o=H-yAXHF+V$!JXXCGj}EX3!3hxLZWMQX9&D< z6Y)CV?yEfek#4F+-G$0S)$M(mq2XcO0knbr*^Z!`fv~0(z{31JjJ&t#S5E|=oo-4U zsHf%h#dn6WfwG}G^7VRIzioj`Ko?Te5DMYzEB8!1 z1vzI3*odD@qAZzUx&@hZq*@@Ns=(z61FD*tl#6cqb*SOxWVTJG?-B$wcP7xZ&g7t?2!;x6X77q^zU5_JfMZX0)n);qcdjFAcoIqwN?|~0cY6$$rRUrlX?Dt%z;3?l-ydZ)PTT*7Q!Aj zz0seCTLd8)jzxWfvxHIIc$R^8h)OH%7WoQ=0gx;qgY=|ysK`nbjRkL zR?vTFjq5}+O^8(9idIlDCTj@a9DcXLrYme9zPq`|NEm0mq2J(4fPJFZnadx6 z#~CqQm_xvT6-zj2^VOs`H)Z&KRcQsba;H7P&i6)R zu@{0W0O*eURxk-G)!+W{R%{Rwi_?G0%YcJ9CV4WZCT@u5HHy7cY4@WpIQa0GFp4X= ztw!>X7t$e$uiVm7+6%R0DHOs&j5_U=Ya#RyIy$38){Zs$>T0dY%`#db7-x0j} z2$l@N7y4@W6z;M@TUhFcc7XCIB(V9W`NOi|CO9r077f&x(wm8Wx0}x?l}FW;t|j;O zhp9c_iftFq!aFGlhda@rA!x$FtnDWM9AU~Xx(afC#~bDx5UcsLe4CB^dw@=c{2~f* zC*C(Dnow6k*te-Y{*bSi6y$w0-CN!^_e-Hhdj|%(Gy{ESwLoi7MT+o+riH>UR$tUE z>kkNS>0AJWXM09)+CwZ1%>K_ce}iks%3ief_C{t+^HICHeG+*cWNs>1w-Z&lR-{JJ z3FV01Gn>&~&}dLAM0;YJLUPf5*lyXrb;8{C>Li@^R$ey&wZ6lprBL0vI|Yc{W=d$? zGJtAS^7G)w>Xjy$@tl8g4{_mZiW0bWJ9l1JS<~TB>s(a@{zxJHR#Nj_E_x>(Sbt{T;o!usM4VpJMx6Xb>!KocFZ{ zoR}PZmTh{L3O?ukNmat22z$VxCn=&RNj;TF@NKNBQF}h^>g1)w2wO)*y(W4nsAwzM zX+gCV5svl>gqb(-+wr9;iJmTz2odcLmQ}b5j+77HNe=wNn~)#B=vb(0hWh|JwFljb zx2X!DwLkvJ8Gj7cH*&vGDVArhcGqb{@-zbU-=b;$8Cpc{2cW=cs#MO;wz&v-4dQ)j z3`lg?(F-u)X>o;2nD_FAO5)jUFxC)|G_hmw!NPo{T!wpO z6mytZfbee@9uJw4ZoN(_=Vz641B^s`Y_ITkWKPUz#U$oKfV5BzQ~gMxyw_8BqPdQn zoHv*J$y!xS7qJ`fl_ZsQB-IZZz_mT6ZYGom2E4)9_GeqgW1VwrO48~mM`@a>9jXSx zXnToUfS~?jqH-wqC%%M7GZg=|ur^%4Gd^U*DE5%)z^@wv@Bqc0O(z38V*(t~?%mJTnGJ@r2Grb%_w9oaQFtka`QNCX>cyU)>yPp=t!n61t z(TEN@F=pj|=-t)b0#xcvDRiZrBbwpZY46nEg+E`q206|-?%&0Y7t_EP1JP*G4WA6^ zag?5-h4CcD=z-_5-RU(txyl0pu_?C(5KvOsON+nxdlO#};vb=q6jMp)*kzE(C_x-LK##yD{&~k#Bkj?qUUh|q0BpS9a?n@? zzO9Qi=W6JcB(*G1BQ99ohsobET;cHf{Q{=nLpBZ9wBO83CP?awed$~MC{Y_d0&-xbv87H1syAMq9#_8}jNM3n^px5wl229U zbcElWFx<%4qftv1QRbt{TGP3cXly7WLxOkTeBrL2It;Oku){zIkSUqkEs!ryWyGB9 zquAn$K|zK+W)5lrNRb146Hm4G>#+mN^Xhd#U@k%Ztt~*<_s=pgAlD}AHW1{1-v6J; zYDc6pl@Z8ytLkfjGK371U#f>`03@RfOHqPYG7CY*2$8_biZm+$05=1l-<#T6xt&Cw zT*Pr-@Avp?z7>&mgNOyP2)PIEX9Wu{0T9sNYf|lOJSP>spukC<&7v#4;Dt-n^YM=gIN7xr$EN8-86G7Ysq$(-HvY4=1=q)Mm2Pin{ z|9C3-ArHx_U=#oi-n#Ek1)vQHNIG(3B~UP>mob%X`y7KhhGn%#1d`8+2~|l2`<;}z zApEkhabENonW8zh8QT16n(=+@iDkaZB|w+Lr_o|x7zpwY4=yYLRFWM`@neSzyo8_9 z4NHr%BD$v(%Upu8sv?A125HH5N!IiX`A)mmE=MUeD0e_6Mmj9>cSbLB<}~U1R<>9i zaTUa{;9)Ax2vTLojv!LE0S~lUqDgQES5rs?<4;ywRs=*<47@S_LE%@_)m0`R%0Iy9 z!|B~yFJIi~Wf8E;w4ak=x~KjpG?89_&Tkk#QPg5lG~rlg^yj?_sqw6;ZkSaC&>Z=5 zItybhWcsO8gC2K6k>r=lDf6fX2rR4{Bf25#d9XBijEP14hPm)e^vd%ta=q~o$cNt> z2PsDaI;&2~z2Cq0g-dvoW2^el`?5<~1pIMBg8V2G2$8vgubNDfdY#+{M`T@JThtfS zq#Q8W0L;r=0rKsb7Kc*E;|(LC(7+0KoR*r$x(o6P$xTT$QPLBb(KjiS$m`%^<>Qin z9U&s?r=z1YBHQe`t2^NRgTxg$rv;|(&`?Ld<;K_eNlSFAopouX?jE36uFfq30RdJ} zU@U_#PT~?KzZ$lyC}I)xZas`Z3H*tx{>?(_K1wZcR03n$elm|rU?vwNsED*{L zQa3AL;RaGTXFcSSRh8eB`9bY&VvPj*eBElj$lZ}Bty%?tth@VBZH4{T zDt|gGcvkUd0ybUv9SMMa$-fmk_` zFDy>wt4{FljWSU96+xM6%k%((Oy*?b#Qvd%AAwyfP%BA}0f25)I8$eH;71WJH7V)g zb&l|~*-yxUbQ$2Dr47x7P4{7mu@nk^ZG`HA`jLKUhd4geQ}IzM02!b*LD3z+m%2*G zK0s`ECs^iIFe?lkEI8}v^PS6Cz^~x-YbI8$SKJ*5iKI0zKUgIZscin3^9{*npX#IQ z0E#Gg7$;37riRw>JMTk;FKPgXxML;G0o8)9;YE}!lmbCazTEnibBz`OG+BJ1V~3P% zMT;{{Ws5_-mSvIriQTp;pHz15x;hby(PQD2So}wo5cvszRKb8n8eYD}B#hKyqI)g) zPP`Mew8(1E2=uAiRI|#WhXP*rqbw~~P`frlk&Xc9fDaNj34utBl#G#2z20fB$PHX=R!0o8sQnJqp0M9Q+<@7B?s*$g1>ESpY-dyXTLlb;D~kIRi(Fh z{%8}!Yotji9Y;a!73;cq;Dn(NnF0-$;z|LZznuj?&sY~&F!_G)#J}AX&!R(SA zwBJHk#i~I0*>x0PSwB$3#clndkJqw&ETU+J5J2#A!1ou`lu8x6^`?yVu5v^@ zAt&&cyr=8{_O-ETz$vm%Ck$^UFd`a;5$xj0RsIHhZu$=Q*_($O)#+kr?A@Lp)zZ z)C_#Xu}*ySu?nq$g0D=~k0Eri;5NDnHh|ujqwUJOxBbYa>(hsB%o0)Dmwgc=yjFu$ zfjdz-DW|sgZh5!*@qYUee8V*B^|#n`*5gzNS|zTO^2)-K>qq`+2W#`Zxizb2w?~l9 zzJhY*^N@(;C;}f?e1`c5!xIBu-rs0Yz%``w{f^HuCcRbEB8nX$e$5Q};eL`KgVkqd zHStQ8Jp(afq;n0+&ELA>5Vfpj`2qJROQ>eF;6x06WOE{zg3FjI4AEf69zW^dRlI_B zds>*2JDhC4ToUVkM;>yHd$J}EEYl(ED3ai`w0FGf?AqCKC$ND~q10`D&2x*pS1HZX zya)##8*$Cn4dJ`ABVJ&LN{j=Ar)2_-bRdM_dyXZnrKp|xn z1-_NRFFAIh5}=P6r$=onS_7mBIK;>DTPKy;*Pr_>3LM0!#n`s`&fidYL{lUBDM#cV z`_KaMb`qEy*FagJPTK2pWMyZkmu|#gBF7%%2Qt}C?qZ7XivHHFHTcax=0{YDE+iFq zU(}$?LT2=+WWd?tKVW|}?r>`iKdH7Eo z%mfS1PjigO%$xu&kbfy2G6DQixlPbx%jmOlQV!koBLZJl5xym<`Bj7KNWn^&4|-r4 z`L{S);h}3GgU`gTiF6X-f{gc~(ebyv5jCET8?USvIhsS-$ZBiMuT;m8fTpFs)A$^6 zzn5|7i0{5tVhGX~d^K5b4;T0-wI|njzTr(v^Yw-BeTp4b7Ju)r=6X+l>Ij-E{^s^| zfqa{eTOC>H;jf;*z#0vqADnym7GT{VT*cj8C)~K(cnnDThCk)p?C%TvfVyJE@`v|h z&noY2AJQ8PQ`pQ#!84%mb3%NyhX6r*ez2nbc29&~Yr@>VSump1s88mQjwgoqvIU=1 zQp`>K;fAve4F<7Q?!8q~KQ9&C-?Y}|hFP!YLTi*Evk9D~pP_3pxG%KK#m1MaWSqi? z^fx3@>v=K=y4Dw0zIIt*{^t2_s`88brt0v4<3YgcTg@69D_R_ zmE0K7xVQ7N6xdI;!nRN-%jn$Ia6_4~&ov%+Fh8%50Ef)dGA1?ToM4RU z1~!fAFIkV_?J}+`v*&GgdTnR~CO$y8Vi_y~hlfmqH#iRk*gKAs=MM zIn}1fEjB9f!+u~sH-DeQi6c?i{n2@LphWm8R+(Xqx)2|OK<9rtd-DL4&28@UyvIC_ z)5#cWO)B|4+D{|XH2p)&NW)CWFX1c7fP6tMzi@7zu57LBcs_e>~*(4ZPItS-{AOZYCx`{K>XGD85?IeyTOHZ_NtK7bmF!obiMnc?A z9uw$ep;IbnUDx`yXpQr@#f*Z#o!mmXJin2}rc~lvq>W|}YY2wP1xu#(JEoIx9m^dc zuiX!Ni(;+#nH_w}ZO-`jXUk-*dGEBm;es<4&et=dxRIMDDB2O;wux4a^J1`prCg^wyM7Q#axc36=C+FgfWVj zx##At!Dw}YROYoYH)e)R0KF#WHi+%CmTuQ5(SBv6q3iIfTs2pPNu0;-9(Sot(>9+g zk?0wMDu)mF^L86Ol_uX?d@w^;`Oi_BZ%tyND00DW!OP*(Gr*Cf6kLIlcVW{rE$iZD zT@35DHNn30o1RX4)&!wKX#nCOf36r&zq(sQQN?`UY!I3_%}1|a?_4AcF804{O!j?j z6;70RY2tI^3#J~~DIiFBAiiosQSA)3E@w<9KYb~4(=flB}a}kQ0mUmw=)Y9=L!r8$VwA3)tb&QMPp_=U&L z3p)s$MZS|1g)t)v;$YR&0JVzN?V6Uw%XKZVn&7%6`T)8yxChp_=UJ$wDSc8jZa(@H z4)Ua{4#Vztz^i|$ZO>~EL`VCrLkB~;7UQR+_+c2i_Fe;oKl~{XJ72#Ds*B8k&yfG= z%qjkT35HXGXN&lQ06{>$zZrJRCVy}pk_Ns$pRf;dj+RfYe`|mGQYRUogJu-&!x@bk zf420a@2XE%)up$0_U-i<-&G-1T8eg`VPD5jxnO2v`j)Rg7kEzygY$EVggf$m#wNI= zZucLS6gQ_REdpc2E(jM$0rIXOYpY{xYhZYGAg-z4h+BVvr}*3{`F0QiOG>ZciqsO; zKK9&>_J(G;Y=}M@fpK(t(QBn8deXVhYzn^Zv5~}YCm~+FvY~*DRo{)ri>A!}7znK7 zDb#P)zzg$L(KJqp{r-)d-`iyv1`d=|JZ9_>1N3+JGpvc$F2?DO{zR_0hxxsAXP;** zi|Sf&Md@Uvxq)W2)Ux2qjECqG;#Ig-q-!DIArPWJ@Z+=`lvj_Kvy6k@rQ}snf3Q8z zL+PyQk(j4+-9%Mk4-5aoH3lTcee!54Y_{K*a46k&Kf%O=@tQ^~bg(3XF>+zDYt)FJ%)!F%qQUg7dblR)iCK-Ij zVT*`s7cMoQ2N+Fx{kcZH{?oSssx870j^ggOqH}lqLrK6&Ujx!N2YiyjLt|ty z;m#&2MzeheXLsgQs59f)nx<0X9q6IISU^dNcnWh?C-=WREjTjwCois8sp4CMa27x;|5wre*D&5D>Z7A4qaRpt{kF zUo%n3b7V%aQ*Y{Ny{5BilKmz0zYl*A(Vu#_A3qRlc|HlM5j*(>J07*qubXl}j@cqgDj!5`(2o@16%c|Q!7qs@Njl$P#ytk=s>f_G z_KzrNJ!u|KEZ0n|7RZ}AN_7Q^=_Mo?5ElibdVq+T;PKO6@lqDWm#cxvn0cWn#dgBf zzXH=qcKs$_N`JN~?Gao10k+5RHmkFJPJbCj1P!mLD(&MHM@n<7dO%qb0IYI1KB1^T zRdj4QHp+?bvMAVHDBsBF^UKM4?Z9L+uwG@!$4BHd^q>5ya3w7|oH?(K{oCSxXt__? z;bISW7M;Q9*;nml-$tnzv&Q9Hh~rPE_P?NOb-9Cvbel)u!a-lAd*1CTZo6tITX<^< zAP1{U)I4l2Wn;pEP20C(lulH>yZo#LVH3BAF4TT5mhQ%yI_&lgXh4z)JaG-&?_$-m z>f+_ZkEo+s!@plgiyB;v1q7r&mvEu?VWm-hJd+Bk77l(+E$S!wL4_giPI|_G$~m}l zZ&71tyS-$NLSW|L%UqAJ%f7rdpJq^k#P(B|BbEKDTs8>@iwSecbL`zka_99D$1_j* zBzrfIqtTbR6mt4Kvs!4?u4Qx5wl5*Sq&3K2yC2!O4s7jHUx?hk>VdFWU+mon?oB?_ zTDO|?UZ(|pq-}ASbGY2D28XOpSOTWeae29g>Q7z2IH8u zn9k6J(|)re0m|O9t!?jQu(4%9+~9liZ7`Lb7NheQIcY)B3}2ABQ}LK4#udwY!V|pIRRzd85X)`LpEwWiMAtxmTLh@z&h);lF)?BrzH zWDP};5p6%nzn%D$G4CKt6={~`lOd6sU185y^@3m=H+)iyr?pvps@ZlAEeqpo%UmaH zRpJ=hU_L5pxxdbU!7hf_%HiDwcE`|U5{S9R%CLOMJbAnoblyvr>V1rC3DM)| zcfIgT?3RKvYeQXv5%KjJlfI>~zp*2&pwGj%cdkeWe@XXP`?~$yfyTnROWcbrZ_hUm zjhjR(&|fu->qdaO2kb&9bcN1*T+)4IsYi#S1<_p5+*#<}4!8IKUTY)KSCTRXB%qkk z7FetGqk@r3_@zB>~ox)A2qU07O){*A;9=XFHNm#VYk5Km%RPu zaUV4(O44sLsoN%q;-@DbI1Eq}{VIdbKqxsntmnYl(CvxO-_b2DdT1QuyFDu+m+Whw zWB3>>#kpzeaf}5lFX9xZm)jBEV!rmwgK2}iXtMMWGzqRBCI8%4oGU@YI(KjRJrk?3t;r681k zt96yG@gGPze#GZ93t3Y^h)F>wLRddiJIjlk;ssE}CSTE1^NIq;s_OMeGV6BQCp!u{ z)Vg(iI9vmGXuOwqxhv}4tAaYYGIFwdK08m4kWtI=SgMe5PCvMU&Fv!9YF%pt!g8K<3ETH=kIc|KkS;YUS-_vH}{zyaiFA6ysX zIc6=)fiW9X(+6{NBgWM1XX3sVjQ&W(j0U}i_+}qdE|MjvJ)C^NFz;@UOfH3llO{W| zF29k-lVFs^&~)R@YWvs4w8!-(J#dwgmQQ7M6-=dchGs<>=jCbwIZQ5-?@1%?5$@e_pq5xl4i5|PH%%r@C!703?+5Sk`R$Japo7m zy{wt4vivh2rnV&j(KAJrX4?3fJn4y5E0|}=P&&9WJXq?R*F2z;K+&{3gp4z@sWvJ{ zDH@W$rdMwWlD8ilSL>PH=eRe)FO~ zW7mP~3Ocs{w7?-a)eZ5KSrwNiDil%q0bbvy`fVC&7oi+(H#xvW)F7ll?yVhA@fn_9 zuuCw9-C#j~4A9Mq?!~9Y0C|AjlVXz%Q-s_fZ%G$mMZajc_}u~#Dq27iW}(v2ULA0! zgEZRxGSckc-jNGiihSyZz#=bIEchF}mci4&m@s8QcaB?l_LUm$cW?T%UqtF0V05>M zwv!3N&AAgY@8U4$%Bt1~%O?prVnBbrQQ3D@)|*qcNkB#jED@(^Nt-hy#?y2>F$-vN z{2EE%T_?MTia?ciOKzW6i1r+9UvzWXvZYSKjG$Mf`1XZIwq@^^p+!4+t(92QMLVE* zYF$5NavVoOLKCtf>xK2W1D;Sax>}O%O8`UD7@0FV+~Vv-FbvUN(`hRd?mA=)?lT1f zk&**pjH?$=<34Ca*l4ipi|KT|l6Ej?BVaTGl^Y+i<$k<_KUO#li$v0T0qqj@oG58( zj$O3pA`;4cle_#Flhiy~NfB1nefIGQ?g)J{Fd&PY3Mm4+0l@xyMyKb7ugoU`(O|S| z*qi{-EJ}0LR>IW`VWr_Xy`z#J)_Wy+-k?I;jqvcy=bUkp#w=;0r3W9YI}swI#lMbU z0*ACz>}UThYB5)`u-;mZWI`AM+!G>()L|pSH zOZ0uzJQa@v7vG+d)&G9EG!&|M!)Ok#fS0O&9G%BXt04kT7F`*5SALRhMlDR^XuoGrcb69~}{NI)#N~)OQ)VITR#y#j|T1lEGtD7&TxkF8u*(%GqG-eW^}d zcU=O5o#l_t28qJxyAGc_4tnPx4kmJ~Vq5tvrE>zEna=L2ULxbZ4HhsTAg-=Rrr&DpF&S*=nretdLFrE;f4m!X_Vuazq<76O`a~i_0&!zt%%WE z=*`}X`$*3i;PbNV%knJBq7gA=ZxEn8r?8iwB^YJ|@OG^!YTkH*=!~WM9Ay;|Nn*E( z4=`t$2N@8xpo$mc&8UYH_AD4MXb^bDv(RFbLTjo?yq<`$0#lHLo562mB+MJ|>^uk~ z9CEwx^7N_P&1Y^84^iP6j2K#yjv%_&Ar!-)?|4g86F5+Xu}LP+0s=Ezf7a?-pMnv& zLwIqw@I(g!g2?aywjoI`_}e`@4dw~5z<9=Hgq|b4p3I3Wcdvccp&9oW-NO$+rqPRk zI9A`NPNSrSu!2Wm`Q;1Q`=p__L*9lRqMWav0)*X;FK=P;Ldv>z1)_pd9%=EblbdD8iJ?mCMHoG|g>A~m0Dih2($%MDIGFU;(7-MMe>!q}tSxh71>{ZV+&J4*Nj z9*@eTtIQd{X#rx5U5w96F(2Z=d}pg6!6rTN9)^$3XWaaB7`8T}K4?QFN(8t|0Nyn$ z6bGD0ZxEPCZ~#wxsJFt@S2?yJj(tg5-@C}^zPUoY>X{^dP|{)_xs11SGauCCWcPKe z&7ZuXNz%14j7Pf_NX^}bGa>c9r;YaBEqkPd7AgLwO(nAuj90NqZ+R?dVx+uiwQi78 zq1DTf<}$PSDKK>x4sx?UqO>%%V+rPDS}*JnmHv5MoILjDXJ@j9sucC**><|%sMoB< z_h8nrXFVX*iZI9EW8UaOiFh^&c+?FyQ^oR--pa#!+b1-JsC6m6srOHZWrq7UKNpbm z@-oGpjL-OQL6EZE7&sv7vs}eTOa@NF`I&o`HDv#`y|%5o&EAfL$s>KgsU)b8>tlL- zh5(9w2RRp^6YS4XGz$7U@)7#!I*H-gIRqE#R&4l!6fFSX? z%eUDoXc{zrY9$5yf$jMb3ileyim)*MuF+A5YB z>2ds=!U2u%nqMC@>rNdrg6do1xiQNavXCz<%WaXt7K-TaZ!~ptoM*rPG9Hd zoNR=J$cbb)e&o6-;Z1pNOQsgshMEfCpj73}$4E0r6Ct&#Yok3fLI>wc(sW4OadF75 z6wbW>{5K*fuFn}~4Oz;uP(Y++xX6+H+iAIYQ2Atb2S%_!K{=6gy;9&lI(eekfDjhd zKcXP0DA&PXB=oT=yrlCD<)2-n{{1xCi>V&;mi|u$F23zNlO(>btrpStV9}Tf{<~$Yyxc>u zJ6Xi8lM_ik=n={GSe1deQuoQAOPBkcVciR zdjY{3gvqiB;LW6d`o-AWHR?*M22v(`RHYQx??CiO9#0Uw`={}~{Kt=;l>AP!N_!O; zReX4MwUH;nd^n@IKlHFXKzrNsy7`&H8xpA7%jZ(Ig>Q*FnoE5oT0%2p`J{VQPF@`L zm{MQayIdRP<)vc;t*$a@sp)}8v@zrJvR?^yfz!R|M%Q_Z3GocCpP^9`+jW5o@0`GU zg~$NyJdVPfSCUBL5aawS0MaUuKoVWJDq5tCx(llI+*jf(l`4#R|6R2I zd;XRRUNGzCbtB};*Fc9^7Yw^^n%A_e8s0R-fuMX1?eV47DM-svC4YqUKr2mP_ARK1 zhYR4jgAV{{)}-a3KY4<58|=drgZ^va`@^fC$7-m}{qXV4xalW3KlM?TLq9r}z)>oa zP)WbhXi*|>E36?fO3fM^yomw_AHaiLB(8qjp*;da1Xx=hBz3!JD}!}o4`l-E>rkhhBVtRPSWdIo02KHVj+YIXgziOcmCnzZhre{c6F_JFJR(ZSaT7Eou$OCF8B zgtv|8+A2Tfpza7N`vK!n+x#ieS#jB}94$B#pnIh=<)oPD<*yQUFZb9uIJmGqysbL< z-KPNGO;Z44XZjeZgzN_t=cs4Wz4f5a+Pstdc@JbLM7bjx*841)!#?tvjGB(k;a)VV z42h>ef0+KAgrGlv_kmj;4DT(%Xqx6n(u$1A@miGnF#rfcDC0aj66aTyck#ax_kW4x z^{EnDQ7M(Gw0O4P(2Km={d|d@D3X+8-t~`}Tc-`udu)XW$`qAwyc%A)E0*9lW;^56 zl9KKQFXO=7m&+6!mgHmtIWQ@fYBg@OBSjh7x@(S$94SrgThIx;HRS<7=FMrkEw8d;fAf}WaqGi*knTdY?L)ECL5d>Xny?aB2qZg!d0A+N zahr}wz_p&^J+?l=^X+sCg8c>n)`qR~XVQcsD0>1z(SYqi@y5UBv zA71|kgcd%Mh?t{~qstz$&7s%Nx>3 zh8A|Xpg_B+>Nob;;$KP&*fBB@91z^i#gqBtw$DJ!?$7}2uY-@#htR&0G(k^EG=!4u z8;Cx$A6tLdy-iP}+RqCo*JLWt9uUpC=ZacYPB;6SQP6soMc$mak&Pn9R}9q|e$lqL zI>VQY^AW*p`89RUH<7y1^~%6@^5ew7g4HS3qu90>hM!H-Eg?#6izwjp7a>L~2ddZR zSnN_YfD|52XWQPg)!#vMJS=;@Dv>#t-I1i8mo%;9PsnM_iw29)>OSbT7~+U zwxtze_d<9~4}QyCo9j;}D^owqZ#W)JVifzI|g(NlCa|4m^7W)l|M3_~`dqC|Y#+M~5bzxGvF*!9lq(1@_h z0xN6T#n}(9PiwiJzb*{^buCMyq985K*G3~tEF(8We#rr-hG8($9pr6fU#r=2(ZEN> z(8a>>SQ+7ni#lNN@Qc>rZ=W8>#>Esu4F^%3;X}N=93ZI4_c(@cy~M{b!km#js51&e zNnpQ5#hMZ&g{5!UvQ&a3>B2ynWxxL`_9G~)a=I6~@*)R(;DI|})QG(glz6%A-tE4| zp-1fk0ba6SfCGYuVbsErgM@&pNb#F=#qK)Vf-$Uc;R>2sS6@+JlCN)-&C+L>CTQiL;KXv1XKct?pai z=1FT=Axo*4kPYeEcgp=}a!0BDmx$MVV&(Vhd*)Q9{z8rzOV+;&%)GSybSA=eGi7ru zC7?|heiu&+aXy#_IjAa~oROFgVCaFWyv^u= zF!9$Na;a+!00o$u>51#G99LL9;Z2=PnFPoOmM6LU5QC?9@sCQi5U-f}S#)!V4`;bJ zljO~XB@3`r|Mu6_aP4b@Jc|Q$hFxx=YZzR2`bi473gsisDFIoQuHir*W_0_n7Ejk2 zPFT%GL^i9k$DB>VUZO=H?N!?!xs_+)A^Yf?4N)LrZXfj@$0Ga&T;gvePb;e4hV!Y| zOT`v^_!!de&S8HYL4m*$mbVY@On{4LTB8o$`~Tkk{sO!A{IY>QM6S}c29O&noQ`fs zP(M0@bb`zs4fRK0xd3SpIuJA(lvki}X~OlunR z-ub_;k162XJ^>?QwxJ%%BgT{od(4=2MHA7(V)oRQ2R;6M7b|UfbtNM}BF~@iJ0RYUtRY*0`bqB7F3B&Ksj7WW& zSIDW5EVv^;!TIPc->x^MU=b4f7?|-2J~Po`K9Um)!bD-6AkU8_b^Yu#RSD+SGPA>5 zo`^3#6EDFVpG){yS9d;!dVPBsCStHwN6War2%5IO3RZgFUe`mff2WZ~!gb**`P=~9 zgK$W{lZ$=*pA2+YygKJfrFB`ojC{W3J3a&MSfY6GJQL@3Vx#_NgFZJqVt;o7KFC5S z>O+-Fl}yBv&CAgdJPMVO&v#6FVd+wHdIzzABUp1 zcbpMFb)H|UJ|9EyaO>A5NF2_MyrxZ?-o9Miw!9xtj=gx}v|PMAl79Lfelq0FIaPdW z+)WA9sqjh$gX?(Q5SZZ=ho%QX>A`_5;-w7}XD_xS49{oGV7L;h$oOUR71$V_D{Gw7 zd_@fk`@oMv3>LEGXA0FZ>Ah z`mFmw7Bu+4xY=eqD@xy@#vL3Wp@K!qGsgD>JCihfz?FOgNnzDB^Wo&{cqjV(S3H4U zfCv{1&I>X>DV^7zAiysq2r$MMeU^bh4yrK-Kt75b@*>HFtVe^a!j9>_g`B02@0oMi zR-b5&Imk~nab)r}utDP|bTU)nm?(YcTaEN#QZ$~(q~M1p!v?{&G)V*e+1IGqjNy{E z{l(9iz+mfWp_m|=s1hQcn?88)CGpX4snjf7x0+(`j%%_Os^@79bu(U z+@0s$%n?(A5MJ}TsH86lV9^e73NEGZ{77=wPW29qGlkvh5e1!nwG*B6L31C|uPJ1^ zY{-{+R?$+)3Avla9V1a;sB@Qd2Pe%i>@pg6l_)uD$*94BW}T3I!Ni&SawN}e~AT>mnO53BXiRJS%S z=Ie7gs038H9Cbs_nu52zfDY72V*$wP_Bp1-VZeFk^Yjy!O?13qAv#RT|4BT-Q9x**L#wusN zU6!ysXw*KD+`mR(Z~PFd*Hx7f9FAUqQ77s2wzpE(Gw4E^M$k2h6yXjno#?>Y#i6yw zTzBXVkf1EM$bE!(eoR#)R!7Jgo=vqZ0gf52Fj`Uy&T0C@{oEIF%%{>13-c~mJoQm} zPu1}dyUEPslX@S&{ASMHm*P&vv$*Qxae)gQl8gx>#ZxZAafV?bVi5!eq5FY7S>v~# zv4zxmES zaPxeWayoQ1{Md}n>G9hKU>W&YV+&B)dkAnd5(M^z3s1`P<1M72fQxpRix)7vuhmB` zlIP$py!ikhHIni0)Io3ekynjyH)R;g#{6z1EJE<02ukNc@w|4@c5hZH%c(9*K_n8Y zjP?=QtO2&r&MS~Drrz$Gtj2516fkS$WFd3oHs9Z@jIDG50BS`Oa0sB|Ha!SDU-oa4 zc8-`ujB-uqZHl!SU{y|_)C@`bsCG3w@!?vcBkV0s;IVTh`TX~$Zk*NjBt`oMT)%~p ztnCZP{Zq8IJ~U@fcrgc$0>poc?oi<*O7|~~nCa|{)P3*DM9maBrU4UStivFaoxBu* z7kp3Rd}Zong(b;s+@F?9m_tlifx*x(GR>x`lAmDb?Tu>>_WN}>lKIs^d(m$%_ng62 ziCW+dk%;Rjd)_diu7aP(eTpHC)VMmujq^!%i#BuvLGtMt`Ea^IM?c&wA-7U}X#Mc9J+d}o{h>FvwBtgf zzoyKf250xTx6vB zG{w31X5ti(^DT+zy~d)xd+UxzfcYb*vi6YAM;@k?WN@;Qo0y%D+9LxR{~Wtvy%U+l zOHL;ZQIad7ougk4l_pIMG9$6_es(+Ye1VqV&+H?f{D7CBiU(6j#5X)V>o3_v2au|r z!ikH6uu;2k{#$cbnN~lZCM(PEU{M!=R(L9tRP`2(ODCZPIz5>%VJ1L@&VsIUAF^uE z+&xKpFNlM`BgZBB*v&4;FN(K(7aF?Q6Oex?1Apjc==$;#0Hyo}Zuu3zXKVe+5jP_RK-*ax{*Ts#J za-`Nbt9QUTA+PF>$2PdJ%utGGC%^wxWi9SfE?+ZKceHMHI$9w^AbsuyXyaR8KTr3N zDPKFLY$;xbNOd$`g{#g>d}F9;V|ocxLg9Lg=@Bh9&r|H`>HA|Ik-wGvYr(9!9@e1x zSJ3gz2GqFqqOop9*Ky#mC{rp4R>7gQ@A%DUV|wW}p|l$rZVh`;MIXfDg>CDp zoC2Fx?~Qr<2D4^W=tVu9dp9vfakY zpr`_^QKr-e@>(nuwT2$uSQ^`(g+s%>znA<@2@z|yI0~sC+RxJJHYd6)P{+!fTM53c zFWa9GgSflt>?)&6Fh;s~0+^+>uMCb23ll6KiVdC5OCj{x1S&mh^x})(Hc9tYaYaqc zFL!tcW7{@t(_?&DALVhg=<_pzj)t$I^$FrmqhCi%E?T0AYYuK-s$mW zN^xCpK?BeI-*KDA4vundd06BN`>0t>o(=Gi(rzfl6fZ93e3ErMe?&NkOq|Kn=k0<& zCtS3A80Bb}%qc|DBOOe%8a&Vs>QoxO0OIb7%rNpk+fD;sZusRc&}j&BC3KcVD0{PR!&+a%bnE%= zDasJhk0b7byj$AIqpV{8m0QkaC#I->-Napd4e@X^vKMLG;mN5N^-Yc)SU*_O42)`H z8`-b9Ixy1ZJ@9GBnqgLhM4l;^u4l_?VHe@n4w$+n-V+W z4QRsRLo!Qj!o8_-NYrS3=$Tl_Anl-+>i5cv!0pJ_@E4LtDo=(F9$bM zLAj*FxKH{Xw$tGB(K}!Y(Vp`M??OC7h8YFXV$=4((BVw$9GqdW+2K6bu!3B^)%nm35nl-Afzm zkJROctwX0v3B<9e=t0<@V7>Tn@N(RKV~sW_czM(AOLbQkSft9K6`)ykekj|Z{z!{* zmwI%`L3)OEbxI{mcgGdfK@?#^VIXnZjeJYRbLwdlmCOxox!bkN%V4klLYD2Tj^FGf^vzr9VGZYft;^x? z1<`EFySR)xK65j`f(XvKgE_QvgP4N<{AM0`z|@}9>&dhNI>N3YBztk-3iAi(?b~* zd*Z?C3HjvF%R(41KdnA&El9lmLxaS7Tz8)aF2fit4sC2#{zhq}ndHM|Hrojbn;ZCr z5Lf>#fW-v9gb7k#1+Tw9kS-aJwszNrM2`bX5Kuc75)5Mhn+T;boVR%OGw?W z7g`Wv#1OPwHczS&@*AyCZlxE`s5c`8{DZm zt?rl^4TB)_!>8Z!n{)Ij?r&9lDs#Ow1mA|+b}M8dB*j_-`t2+>$qeX0E^Eki&QM7I zdi|UHy#ANXCB@_{tkAP!R;I0et<>kPDxPg}9op$_wcmwE1|EC;mlQE{U8m~NK2F-Y zR<^1gC$1SI6aovgfOXOckspDI*vh>d2@jiU=j>JUPu0+K^MY0@NF9wM|@W{iEY1*Z0MdQtX_gM(qonxRX?dc;rqw433f z7iyp4^qkvH7giW_L#b!_B<;e_)~JhwLba+8p8oKO!UZd`b{J1&XKlf!@7Jw{($R-^ zqA=10%Zk_80OaAN%Ly4r#qXh0(EWKW-G*d7#d5Pbek3S5woQWKml|!W?gD0(i&pWwEjwANq6dJBhYY^ZbNW7kbf0>^zCB zgpD_hmwex+I7Rv$`NqZ?1d2*MoK!a=8fShrDqbP9jxW{?lJ69c=wxlx-s+@FriGKK8)Za&+IVfh|Y2Z(=z;ZR&&izWUw`tLu z^`*>?>xm}#Ndb8DFy4%&0;HbvC1-Vxks!DsPBU&%aVIgW_z+(QIs2%j2I#;b$+;779os#uek@|x zTUK}<8Q7yP=PfecU3va;l!R&hTC!uuwWV-ls_n=@D3pfo3L}ObEZp9ed3reqsAQPi z{$_sdiMQ?4`>t501a&BxZm(U|ak+g10jBFaQHI)sN_HvFDIkd{>+Pd|OPrL|+2wj) z>bzn70G3MMmPaO_6MwYbz8~qsC{N@$mc;3PfI6~7bu+qvjwpKiiijIfeRuKdlvOHg zbea%XQ_=idFKaJ!zDC9b9@rKzcUeCZdjq?0^=3#sYiYAo44V-g0EaG$kO zarv@@6Kx%m%`m3RWVs>lqxGD4UY<)sti~;R^$jL5=%FeFEE=i4U=H+`2`Xmp>?0;| z;I-kX{I=J4lh-$xlR`!=wD(Y@I-BNTd_&{`8Joo&K#p61qrLZ+M+NftNoN?eBerA$ z_wyK)Lpqv}qwW%=w@vA2{-xx$3k=W>s!bleM?5S4M>H73(1H@QWLZ=`N#P~Klk!9! zh=j6>&x}ODdgjtlCK>EAQqf9pr)>c;4&{f?OqJfwrn8~SNW2iv_JbGUTTIMBZ#zgw z__drk8ilAVJ(EE&ax9cbHKM?&6l8@WtVh2V$;-`79Yjj863qd!J6?rGy@pik|_(Q(99Fg=G zilZei9#q#vu>#ntQpz+FLaGJl)zyJN)AHv?-riXS6@lLf?}jT{lB=Mz-I{Qyj8Tq} zrza_Mf+Qfo5Q`7ZBM(Z`AhO3|@_D``yeg0=K(9c=JaW3n3KTLRe~rzlnrqSVO^&sY zP_0%e(yuY?S zJyX+?ysRela>vvDk&P!o~d61`tQEmqN7 z?eA4EjOzlMy#wlP*{i6ToAE^Bx}K%I!lCnG3A9ppSr0YjQY-yC)VhMs-B&LiL+R0# zv~3-Qw|9~w{;o%Mbf37uF4}g6EXkLmk`^YoSaocZucS;L3A0BfTx&+fg@g8f%zg$- zTHHJl`44FQZ4Tluabthy8KmQiz)qW!zV`i<%~hQ}21Ja3xIq9P)%(+=*sq z8SZtx4@GU@17w-pSB&xVDEqE(9=?g-kBmF2jSZ+gj)c)UdFQHdNkN<<(#_?*K!ALe zvQ@D~@aPmg@>Bu?$O;DIonHP{uH4W7-(ZHLTpTs#1Si~}Mjla=4cj*#`H9ot{*s-x z0(r8z{7Q7zQAu9`yAgd&YB4>tNz=pF1zwA%yRT7BkEB zSQRtZo~m}&Sw;+igG-J~L6iqAo~eZEK3J(T-)~7|^HLK!pV|8Ti=|B6oI)Z#gn5o` zp~uVEK~zc+2Km?7zKwq;+2((fq%k-c*HE?O zrJt;&DkF(e4|lk!K0mf=0kbP@g9ZEP)84E_AYPzbQp#!_6WpD84ictX8pg1=q`t4p z8X*smhNJ>qz#*PDhF(pUf)v$4XD8yB1e_TN%)Ps->BB;}y{{;`lFZ9oPg0Sbk{f8Q zfXFEWlbPEy!xY?UXvIJQ-xzwQooXPXO2i4H*2>?H$GSW@N;G@)30BSuM~d#rm1NL8 z6s`Y8o&80nvink_K$v0|Lfj(APJvx#pREp2||5oOVSQAsL153{+GvG<+W%jh29 zPJ&!-HlrJ|jM7%6cU2yRJ zZ*QeiS?v1w5<9jBc2Q29+v6l&QNM`+YxzYv>d+&)E4;N&!Jn z^2{AM&VOr5Pl}FR=em+5KWTnc*4u9TfjC5QDf$Jc`c+ZoI^Esh4B|CvI4q>s{({x{ zegfU*2peW8OjQ+AiV6Og09?bfNom%8APJhRq^bJ@J-%~KvgfKR`q7kh>74c}3$F4i zg%#$e6mxt*yGB>dJqgF(E`(@WTJcU27K8u|o$msAbD|vcpQvzGQwQb0ZHKMzOrVRG zhA$Yj2;;MUOu}WTK2)v7#7i<;#PPcMV=kd+BV;_(2zlNBzJOcqU&%6DL!Iy>ko9a4 zf4f+=kS%G|Z4`g^4%+nJTd7w7N6L7b(MO7BKrQ?16ez_t*J929>S&7oZG37O=q%!G zy>hWD_ni0?%`&8@B{;4fs}2(2BryDz)Pk$M|xz!{E1_ zRryRP)vUkBr^capJor! zzCEB68ZnT0Y!1mRmt?U_gU!ZBphDp06lm_Yc4_1v$tr%7L`p`fjtpGZpj1PKs-f7j z+??9o1K`qR>1$+3npU?4{u)_m6f&^+rzaa?UGrC`Foi1K4WZn2!VP~x1lEKEs(wL zG04%P&2{4$Q3?yTJhZnTkH9>i)xJ71Gb`RKfVAR}^Uw#< zVjA63q?3HuNK>>8r}2zoe+*EMkEZLo)eW58OZ^cbI5T!Kr|Y0LTC=JpkXdig4S!tm zdN>IKBoRpLX}x;4YIFHQ)V5&gy*R(DVtnc!xvuo=tYApa;wc3>@Vp@$aG5V}{Mo$H z_`ArPuxhkc3|ns-gpd->O+Oh0@@F}3cm?^BREmN+csR>_$PY_-@1TmBk#an%!OV6J zhfz+@-%938;(em(ccoYS&OG#Ozk!5i#n$%wexUN6%k~ZUHueR~Atrz&f3Q9Rocasm zelpGuUhtOAz~ zNJv6U)YQp_L*4uEdCuH0TJeZAZ0E+Me@@GFB?$kvtB+_tLl&~TO5^FM6~yIK4b{GB3B5Vg;D~nN;`FRH z+s(8vlsLWxM>q~X6ksw4D8s}IGxZ;4sr-@KpV8zcVj3uFivB&@2v1i`>YIgt%q zbbd32%L5vf<}EfO$5Rh*XRL1k5DbeJz=qOQXxw^YErEgnjCyMU#3vnN=34N2a32%F z=l1kEI1@iX0|*2;u>GtXeCI!5K<(dgjNYCDRD!Qe0p=yBec_}23eETy>Tp#Vcp%p= z0v}Vr;U7h{q|Wg^0AMEE+PB!e^wF{GM0P0GJANXMo-<6ff9!H>$?gk~pDCW~_?JS? zho^NyaKvl7MT+Yn?-JNmm0M*0(&}K{j@@^$vcO-oP{7qlb61da2o1``yD~kn0u()+ zw2UZ{G$m_dU&4QXJf2eP&*D=*8rEbmJ??N~(y)dy19sJ(b!lTu}IM!YPQu>{& zLb!8h2d(Gm|8aB{S*k+;6kJdSabXxIF2rYXchBm7`p;+%G?Dl2t%As?LEWOFN?gJv zyj2zuJg>;ehK9+#7EQJ)%!jYkvUc@#$#rB1mJsWI#dT&k9TlpGM(ZLJzz- zAjEo>Ng!I{R=a{LgsrYWBE|3JtOdMu|W5uD4Xe!AHbiNyTAGe3tgmAhb(dth19#R0qwkjiyP`b-7ZKriN?Wovd6P29{pXcnf_&_ zBVS^TkzCqcYZY%2MD5zx_0ucXqWDOUCixj}<+S|kSCZ6wPThy#D-k za3v6Q%RQtpSzdK$pWxqS&wGKv|4up3u;_G%tV1m#{=1mq32%|;VWHND7%QPa`E|cW zPz;WGMu1a2u{p=oO8?I6TRY0l@T5^lkT?*TDg+#`kXv44KichnON$s|T#Kk*uS>o~ zlPMK z-)&40H7-|U2yNI1G;F5tL^0C#N*^}?+=J`Zu zpVirbuL9dTMno>Ey9gES+N=u^EOpgy`tFkfu-+QAKK{fFG@Kx??Zc|}kDcHRx4iH& z2^Py1=J3hk9L%#1!DxvrWY0!zTr2qaTR@2u0LueXA^1Sg+k+bQkfa%^v{@b*s|P&` zmiF@HYH$UM<)bNVQNP%zkU(g9K3kH6MCDM;|Om-_03P=+LUneuQ<5THE5rqD-<9X*}HFWdtQE2s+#J=<9~F zdbjEzL9NIABHtZrbNbL0s&&I~0Dkb>h>i6#d$c`!JjLt+ZzSfJHU9CrzHZg#YQosa z#>XxinZw$V84=?4LqyaxZ}VKa8}AkF;Gue#C=LiXT9@lB)njCJ!*O(EEMItug8a#9 zalyuKMCfIcFG0^QY9+n|IG%t8FYFm`MH@)pddlcZUNdD*>{3#!X`Z)W0eCL^Af4;V zTu~#(TuiIF9IPHAlky?LW#e|oX@j!WSY# z776ME3p7in->6mJh>b)_=A1g`BC#_UL00yE2L^m&C}w^?OD@qLTl*5Uw6uakVdYk5 z&}<}hKh}oNa5th)8ThNPq2!~Exo_5mPO=n~TpXn8?1)>aB?$=ZFS_p%jTp>!7Y~kN zG>+j@PsiTcuQ49DB|aUZ@`R8W@rnR%Hk7UzS-zZwaW>wf&se8-0~o{3g%nXz3#Uu!5r4lkzkjOdrTLYi|S_VLr7>~3Q(XW?)4`!YKCz9kJrIM= zdduS*&0Z~o6^qfYcAxx_f_~?ji&r;<)Eo%lxIR2rMdMmA)1tA2>mZ)L=~vZaZcgd- z9jB_~y2fnUdb1i|2fq$i6ea!*rxmzT0g_S;GQvxV;EdR384I7^I~b7i5=Thtr&5eY z`%W7C-63#Ky1$QEQCn3l>XQ_CCDW-5g7nBGxEv+5U&i;l#Xrj`reU;04xf8XCdEyW zkVn$|atL8!?@V8>e}o$rb<#ynz|noNJGD=z0RxILKvW+CliDph{p$QA9CXnTis#Eo z7vzX_e$T*g?cYhhkbzadW{~}+&XaRjDbn7t&T&HhZ1Llk#BSa?TXkRyw!VnHFtDu&rF{&?OKGU|l>6jj$O0Gy(`jKx; zInFY=)TdFziVBJVIF9u*t}dm5R^wO;3+igG^2ca`_4ch;!jiuI(YSTct}IbKY*kgi zS%jAA1^VKip{P?A+@f+$0jEyG8D0k}^AXmnjce3Egx$S}k_XJbld3vWb>@$W5K+KE zQ4wk93EkzCz6*F}Z>~*?J$nKrRq)Qc;$;=#eC~q^NT2-hg|wEMxR!&kXTRQ5%u>)s zn+boI5H<89(K1xrIL4{M>()9?*r$vo5SP*3>JJFqy7lMf+Nh^3DqC!HjQ0D>{4MmE7N1N!k?|k2<0zmEB+IdhrR|KMXSC z?{jh`KGB9s3vdjW_BjDndnF0uSui`^#FFqbk?r|w8{xoIfnc+9wUw#8fX7Mu|+o7ZI^3sN}tA?V0*^- zAO18L-C<2#H%p6{rV|yEeH-G3DH+RP_yG?f%F>kF=czN<%FJ{bd9!!%nhoGXx;At?_$E0nW?z#R4_P>{gsF&a^ai@C`no+Nx#~d(6Usu-j%4SrLI|XL6^( zIHB4n>FL`&6Gs(}pWH|$`Qc36#?^W?&XNuy0!Vu7Xyo<*=_=fV$i6>-_TnocyGtwL zfeFM^vqUo0e|mxK%em3+{qHp1&xunANonyl67}nMh4f(`BQQ__c%uyY21{^s>+kDP zeJG(fJYKBRq&cvD2!kq$3}DR<4nS5wsc6-R-2HT#8L?-6rIb$KI+RC7)MM6cef6|q zZ=dB0z6V+U+gIz~Fa7e{Qcd~U20LPeU6f0KG*^KMOh4|v2;GfU3;Cw+r(>f;L<$|w z&pR=bNszI11GgGahi1HQ2Ul4Psw^^WY4Dn-*-+AJUSpO1mYWJ0-e+u%z>`<(o$CQ6 z=kJ@d)+$E96c8+zzR<^=jbA+*^D&7JkDKS@JB_>g(*p7}@|sdgq(7x!2sbcAFh$) zANtp;sv`6mG<@8RvPD4t@r}gXF#mKrcK* zTNZQ0k=|dd^@PL}9%`6JXAUGEQ-_5&9jer#fb5+{QE#U_im%781|`|8(68g;`3GCW zw}dt)B(-}8;1K){;0ZvbUG}>ik2e4Egu8qLTeNY~UhUE)KiLoa!cN%xY_J&i-EH|# z>=i^HM%vd1tr-j057}fZ`9>6qpH4W?S&D`GTcEycb!Ac$Uq%vFcOpOb+GVOPh=ka? z>d;uM`siVoph)YO+>^zUF%fb~ece9jC?yE~(0zj|x>4R(A){FCC#a#-UBtT0`)jm!objD?(5P~e_2tk;QrTqC zBY9HF`#c^T({W%rD!Is z$IkbU@#)h`n~I}~iYoJpPQDxJczyvf6f&8Pvy+FiDO`a$q{h-}$&kyao3(!aYrRO! zy8gI4n>w`vryJ102KYg--9jJCz+)%RksSQiBi-kF7 zl^fr#dx%$_;P%B8gsgldMiE_rj#y6(8_C`&vwO`X8jE|?mZJ@Kc+llOY(DB)eOG1Pw)ZVVuW?&?o(ugaNBSpxi!G*&z z9E$TGseaS`4dNIV`p09_?WyiTxk5y74EDp(3rk&A#a}Xx7qrCVL9xs*pDj#i`Qb(w z*=MGmAFS=Us!*d9nfZk9JPUgfzO=%ciQeak7jV@HY)U%+nLE*9HgC=!>=IL;nW~f{ zerqp}sa1d_t1Y}1qNX$UoJgtEIXz*7t%U#U6Yh>9@S>=wp|Z-3NBzvqe?jX?LEb%=B~nMrZq#z;~Y|pSMc)vKP(pdVF_@yxH?T zj_p~=InNh*?9RxQmc-*A!^G8LJ==`!Lf#~Z1;rZ$2bO4{WMefTMOt+3 z)l49YBrp+NH&R8IPJW~$L#RnxH9TmZ^;u|Q`GynaPlkIQPyJoPLc~1C?7^`r_D_&v zW$&C^Io2p%nNp;SWH^E!nU&@^{nZ311YR8rJ&6-PWaTeF9FSta!U?+7cUX3jZ^-KO zODt3;*ceEUnh{O~;NcpZ?aiMZ<{jEkw4<@n7^6-3``gFSP-k0BX4Ob%Z)Bd;PpHyp0p2sZHVPIcd{<@E#&E*1;u!<0y$`9 zg^`p+b5Vo{QR#kK?*ON{2S=%j&T~T_0E1N@^hcq{nSQhlS)|1O;?5`}^WN0?8D(KxZqi6D`0v0`Mln$ulbo zVPT}$=oH9X@lkf6>U|!V5Ae!YU|&J|V-%nz#vnj}mVp!?m&_pOppc2`Af^}#2+3K4 z0%rD*ce!IA=oiEWP+Q_7A!v$8R#QcJ#Qk>INQTH9@Wk~81fU*lmS#gSFaxObbAI^Z zOPQxxjL9$@XA}$v;3N->4I~cSJ_Y9Ib(r7PN1M-;WEY_ZoM8rt81QRXu6(?4(9n3t zq$m2;T(!?)5J+;3sL$)k=v5}0G{RnD=VHnhbvk{__e;4n_l@wrafC@3M`tkX0XOWb&JABt4J3&tY5N3!AUDJ0Z`aaKI78ieFF+*E$@&cjkkwS3Nyea939Db% z$r2qNzN_SBycQ1c{Z}vFStPc2$we=i%~RxHqVYoMWRaQBIN}rUywAmoaR^l$i+Sm= zlK;d9&y#Ox&wlSZi}2m8e37B4UHF@h*|Nkw-m4X#xI9!RhUDCXk);jlyqp9Hx!Q6p zCz;lQv%~5~&JRu*kp%$ySF5b@wQJgbb5~SFv*sMBe(DPUNeufk_^`Xg93!g$3HDO> zk(W8|Vggea0`bS&qCx_eSJt`0WsAiz$pV!ef9gX>Z(M0tDsBZIJvcWtrG-5a?w^wFnUFC# z2^w!om2T!Cu46nkr)KK3V>kgxPP2j<^g*Oy-nm#tGu~P6Yk-0s6)4rq8#B~L^@H+y zzH@8!cqj)$rI#8(Y8MF-q#l-H?i#3od3PRx2b6iYC3E#YC8zG}q@W?O2wQxsj(N9Z zkbOzUmD0h?KQkiXIAEnk2wBi zqoFEkJr|jVUOyk~=};EH&&L>?o#7uiNYw?UTcR*RG5=jDY&9PuacNvVTj;^5Pkrw1 zOI4O|46HCjiZ-5S|2n`RKaLmpsUf976k%N{V09Xyi4hQu}YmWGy2;hcyk{cG)9{!gA*rUv&Oz zM0Q|jQ$b)EUH~Y3_E$U^8ocWtT>tuOGBBeVTl@o<$%7&x0iyw_BZ5z68*N^q^vOz5 zYiVX%d>@`N!S*l{#GnV{o)*pMK?);it*M&&?CnYTsJdA;=DmS9Qp zS>A}p2K~6X1_3Yh2OPyi+Nph-l$mtPs%&KNfXU13#a^6D0RS3!t;2JH-?>b63_OM* zEx1kp(9N*Dx~HCQ=Q{ij(AXe}4c&X5Z38-6<8DDr6`*@kK=btuWHv(OMM*SsZ4vhtjHu4PJ4i^OMPD_)Xf zD~U4QzS(iFrHdld$!TIp2jG!)Lslw%?Ov?l8~QUz5FL(?+R4Ili1;xP~zzdF8rVc$jAun#0rz(NP`2mOAMFIiND3F_XvU-kp6Y|}ha{w=#Hb{_KF zOzg}I6Z2OPVCI(r#=-bLl=dYt=mIOm&cL$I@`9e;_pR+Kszh20pawQqih&hd3~5VI zRB2P-$EksLNFKy>xtSeq@5^TlzU>pqpgo-yxsAX@ikx*h+w{(_S>l^%B!5hR-7_eG zz~ZaDMxRSQzUqah(e%sEH_h5;{+33vimoA8_!clPs3K}(&uTl*+;FD%wt~b1O9{~W zj%TY*g<%qB5XfDXzPTZbANM<8H`%aj+{ha##^;#@coVMf?#FNx_8>nC{5e2M%v11@)9oTsNag5~tmt;b*}b)XM=R6v2K z#?(kOWttZ{Jqo}(VZ=>k-mWFv7zG!~X>xdblk~Vgi{XsU!dNGw(=XJP>nUONVsT8` zEYoZcC*OZvXoMSaN=~9Y=2`EbaIZqdfjDuz{6*Y@M=1QUChht@;f0Ue#fp)EIbM!# z9FI+^WnPOJu3rf(^LBJ`IzZM2nRdcWe1iA)7}>;6Hdbkb}HGh4n{t9GE1$BX-k*x2v8pv**7*Cs#O>YRiO7EoWhjmVr75CV?9C|{i& zH4*YVXt&vD_tcoTxs+>4N>mEU`)g+j$&tOGfu?Kb4#`LIRID`o@=au4ov}NOl9hL} zbf8gmg_y%EUM$gTm~Yx21SA^fPXIGC-ml$%gv-~=BjG;)kNt|)vb^Qg;;;(WiJj9-jC7!uWPK5q| z<(TFGef@H)0I2>0l*$JrV4knX6<*wyg+cf@2(Kc8s~3wNV%#H=gF0JO?YH2%faSe5 zO@XE~-K#CybP7E3CE`XyT1VPt*uie;ZS`0X4d+t){J!c)l)eesB-pw-$XzhL?GSz(KH6CNhu4mtVX$)(io_0K zmKm58F}d>6Kdm=6eYD=hCSEHahQdHcy$7VHNSBRh`2r^vGR|*YHj9fxAaX{Tf))Jw znU)w14`nyqCQltOkADMqW>Z~#!H@n3;6uXU>#Urpl9OCNS#DALq64B%O`M_s2zGqK zXn2#-9!TQat~AyALD)&!%aKGYs;$OTbg{hdiMDI(cRi`k&^C;1$m#%fKhE$w>>f0| z5c0*0Xo6UODcJw`T`b_>RULwz)@v&CFY_|TBzI?KvND4~JIX1i;s#~uV_;`#5vEqA zNP({z1t$txBVf>lcXZ)qA5#ja(p@hh)9G_|lENv_z0pHfi}Kh!o zjgRWj@+7*abZb_47ZYDifOgwT4eQ6gNd$MUCdY0J6(Vq3sQ6lFFnt(IT)hip?=-&t z?wFMI%jMSuKmB?p@H~I3^78LSk)(O_lLM?2o^J|l>0I2giPqC^BBSk=h+If!-K*NK zPk4%mzyO(nR8@WzMtqP!?Q5d2Q_B}=J~@ben7I!u0yCk^zx8wE{itl8i|9Yor? zpEkwbIwU|<eqsF<`H;TA0X0 zMJL;>Fog2>>OA)&w&MI*!$nO{lT)uLv?b;^jf%M|(dIIwceNV;V=B)N05b+*nDGs{kClqHnC!TWng1uLZQWpm95ehVpCIr7h7C-pAdpx z)U-JwhI6*E6Nw@4XWNEZrTDr$Ud=Qrso+#{siiBGTQJcjkD66nd`B-5S1f!+TcEZu zFvNCj0OU3VAVH4XVp7ivq>T6a#P9?6A`$~g1p!_Vl>+H+*g<`UnW}4w(tq3zih{c1h2{9QE2I?({(eOV{zkrSNb4(5pQoKP%j7)d$+afaw$ZB=Jk&!Hpsl9eIy?1|6X* zc+qFs!1sOr)EI*%-njIzIAh$AH3RT>{KEDP{1FaTm(Nfml77by)aPPE^_sA zKNAAsYW%*M)Ei?F7ZXQ!mJu1>m7#s#-v&YJl=4S;pA;R{vl{!ZeWoD2SUJyu%^Nrz zcFfqzy*GJIjT2?P8SpX{02-<7mbnFuEfkG))=fEI)yAW{ztAssbKf)rx6iB~6VK;$ zVEaPfZ!_eQI?#p@0L4cB+PTpmucq)dS2Bx48)HIDtc4)k_nSKi9pf-KbmXJDH}j@z zynX!u!sB)6K3O;~0_l`21j7aE<-KnJ1rr3|rY-^BuR(h&C6ig^A$?dI_-OjUicDcG zVhSM$ik`SR@{Z=iN;)^rN-cdz3kr!y_k>t3MS)I%tsOgiowG* zm|F0TE?yve7DpdgF9XG8kl+U()i1#Pno*5^^6yb!r@7k#kh~9$lY4H6D4B2QN1){r z-9$?`4cnDWqB!O~b(`e#pd@&JamK{{T2rHYOX6!)>=k20yaPfX#lYamuZC-RQP?CI zpj4EhC}#FgyjMI30G;Zq+dTM$#ZbRRW!JZ`W|xXuTy_q)Dj?BJ>!0K#y9#QU1<}XhuNIRG*Q)4aBs|HeWM zO9`w95d~8xDnGN{;mHbHs{FHVyvgxb9e+bx#(?yE*Ng#0C&Ec~jP);NzQ%@fE6fO5 z&838bm|`buzjx(+Q_FO1MW2rp3TBA;om;n@tGja3AQF)Np4gy|KR77qTFZTQ_%7uSw#dSxZa z`Sc@_BbNZTt2@}9TdG@Y@fpU#ojMD`Lw=dB;{|awhQ8!-!sCdgNS@G!CPOf*rW?KC z?GgKyE04xb-L@c@Z=|dQ^XV_*5Je zB+BI2g9dZ`^NHIlU~~d@$)RM#hJVQCr~4(wVW+YVLIX!LJj>bhaz_yVF5IC&Z~n|w z_?w`f)c55LGcuV~x=CWO&YW+;iGP?B$X$`kt{A71X=L^~#fEv$y) z_c{@bsIdET@4=^rCNfOI5RJ(=j#iFbNHRMbsY%0|Yr?EHO+n}c@+xnWW~;lAV=VH} zFUnWgT2?rk(EXz{cQ=dFUS6FQs=PMzhe7MTeoDBEUMo6I?x_Z=Eq44Vr?iEYoB+n& zIY|wJLy;8>#_V(EoWj0ywAv2GYCjkuZEe^Nv409l9^Y&KH!V{Qfl2vn9UvL;^+p}$w^ z`xMBrs!K_tb|qmKT5KpSfZZ!TCXawrDA!_TSxZSiy9^MDt_FNE5=jX>q!@m-+5@H?G$fr8YNH8%Y6* z8rmx?i*1FpwdN#?G__NtzRU>Pe$vx;i~H{A3RHeWj&6OY9_Z30s0U@UxXtH2y<<(h zlg585W3$nZ(h@oA!ya0nd}^`ZqZF!R;$)ULYA!%$BqJLPKYI4$1dPFbpqo~3!76LWGHuW59c}YO>7*@ej z<9doUt_c+Cant~z{OSb@+S~RIJ0Aj(!*zO%%~~pue|o1!#+&7-Ya}!xQmwuZyOSh< zqA8Sd*`Z>a-3Hn+(iX64k;Wl#Zq4_w`Bz�FvwP^_+Xwzofesi8^|umkXq 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

em+ZLt7M8csuN0p1 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 diff --git a/Barotrauma/BarotraumaShared/Submarines/Muikku.sub b/Barotrauma/BarotraumaShared/Submarines/Muikku.sub deleted file mode 100644 index 386de54c9e2716769b92ca691b0632a923db5347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57750 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

UZ=VQNZ29NZcIqiL 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 z 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

P}(frp*9kGtxFCu!}l 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ν1Y@w$!P;dT z<;YFLL^&-1inTi{{H;&c`C#<7u@CwIBjz=Dh#FR$JVMKM(u%WFtKl)m$MYbok1tAI zX)AvgMHr%nYq zcdO;6F>$}K-Bo!G98C^=gG`*mBhf2$VdZ*tKe;MfFRqp&6agP&{nErceT}NZPF}&QY=1N7^zkGPH=N-gY zaiYMMPCpWb-PR_KZ@Ll_?(3VHVk3sz68WN;)R@Zxg7kDN+x2&|=P%)%QLr+I?WwW>f+nS#D^YzV$rZajDcxsuBS zl;QCyuN;Obkmfk6YN?az!bwfc%g}X>2wBhZ#zgZ&u@wM#Y(Z|^I*Ff28oe4PL?PUe z)1YqQO7k>Zuy&bI%(n=$IT87YDb1s$SoErz#!CW7Of_h?^i`OA_PGyxuR~O(sg$r{ zO^t#~i@pQ}(h%5%-*4^(I9u(J3{mH4%BRz9!1?}%rHGH{X6BXOZZfkRy2$Ty>>vIp z;k6I-_ZWh%?PdytZRoh0ek^;+Mlyit=rPSqY4@xEi)ovcvBq4nNDuN{Lyh|Cje|d+ z?nggWF^9< zZX&si+jr@$pOvBttPbLs(hA;1uyGOx!^#L29Mvs2VqU+r3!?b~G!K`5FqGIH#CfbH86t+qnbJPZBZ|77s_puK0l&c`o$Q>8Qx*bgepO9a=P zRZe9CmTG%X)NmS{!RR-+dKmuJnL7MAU%;&m#yU>hXC&J>oa>!qz<{0Saming*#J{l zfD{FsF|Cou!gmSV_zhAC_0}%XXje7sca#h&Zbz|GjaJZMDAjX(OE#t7lGe%Nk^(*@ z1f!;1EZ3NW{5K#xJfQ}taQ)XS#c14BWL&2~nzT=3@Z+ceRvMd&DPZZoE*F1a;9bv*Z>-JqDy=0 zO?u7<@3s1yv?(KSus>Nm>yPMEfbFurO-ZtiXzM8NdM?hK$O#H?Y%~{>r!%uBkJ6;P z<-t@CNUU=iTpx#bGk>@?r8f$|No*cYk?BFu_PR+c(e_e}cxC!qZygRz?ZpfZAjWiW zRYa(bt0x7&;0U^_1oE8a%^?Y%{i8r3@Bd)z;gS<#LlIyb0o>&48t!dLv3Qu4ccSpBb7gH7>Q0y4txopD z%`Xj8n$MhYN9-2@nVSxGXn<+$T>oVv8`j^VbF`=Ec20ztVpOHSvwt7g>WHPbgEi}K zqlMCOIK~L$8u;HW*_#-eH#mqt)wX@YvH3hZ=H;2u6Lc*FBg%@w{L_0rEBUYoEN3@? z8M5fl>n%dxnD3V3oo}y)Od&d0ai8`$K3W4oP=seY0TD=xDb>^1-`$1-BjnHXo`1PO zzniOhL2rIWQ!vU#fGK1ov8a&$W}UMnetnQ!B)~$xn}*8o!<0J(w2r8EBF+2+ptL1z zH~WPt$w)2vJ`xIwb3sqCcUuSE5pC&M2A~Dx!qg&sRAg};nuar zrrHSKfrRU%HVvkxxiXp#*x4Tl)?e4OX!uHh!u+g9ylA8I9lM>l`R||p>P0(SK=2*l zma^uLuU1mRPi)j~&s!b7zh4egC6i2x4xINel7Y4z1n$Pl`Nk0u{x0+7_KNRD2e3&4 zFsA_-nVXBJLA9Uvs3eE+-Ehj3zkom}!ni|-$~xjR3iyGJ%0X1}K6U26-)&$AiIC5Wc|4)9pWS1?G8 z7h|7_o3LZHr^aC+59LqNjOG@(iKR)+p1}|wALaX1pylK@fmv1Cy;@QZ5DpL)GEjb& ze@JjBXXkf_bln`t_csl;qL*iGk)qtd|DZP9tO(&doG!J3?;1c@-yF&SN`Go z7Xmq?ETC*1DAmbD9e}qmqM6ok@LN)!)AHc%eU?7Qp>*@oBg;v4Pm#XA7|8eQ={CN0 zO9D%Ty*_129-|6)Aa-zXe9{DV^O1&qm3}r_jF}iL058`hY)=3<0C)&wX0|0Ru*i%s zq#rm9E#4_Apx?)r?oHlccvoy-)i?bO&n>((apylD9Ub`tpq*r0bK>{>Wk4rR3;*{- z1}EqtE8bJ_1?a@j8S6Ycbf&4A3~R1jGR6DnC-c>j#w^UrBTPn>u?nJ-6o5aceTLnR zu@tNQre%ihUc~^5NiS<;!cFj-A_lz47cuiOIre8|i2^D-`nay5Z=K&u|FhfvuB-3% z5u5J)ql*D}+@zjTHzNlS&sa$+3gEIhVUAF&FaLN=;PXTV0IWhcA8?J3*Uq;j@kp!6 zPinIU-G+4Nd!M<_*A$Z<@aVhA9@7+Q4ftL?>0^9B2I_(|ksC5~L zUJ|S|w$_?@Qj&#j(Px2o;qQe%jDrea>GU6WE%h`lZ1y~wFKOn*w?p{;gQ7Y>0}0IJ zk3^P;9U76P%97zXOt)sD9|wdlab?mY7jin=2?9sFrsq4g^zWwuPNL+aZIe^F#)I<( zgl$H>xt0Hk^Y4t84*jtMHMecC}M<} zs~d?$vnMa(?*-$ORiV=ycI`TJmCPx*7h~ek9?8q!7)Xq*pWPAN*F|iPp(AA4Rab@< zRvjZaVdq~D#Gpk?b3Znn{p14#a?kbznw=un%EnoWCG9mtsdvc1nR5pe`72xKgcb)~ zQeR<%QnJ=}8`{e-`QQgCYNkF}frh{PI|*Nf>9^xIETFJ~Py&9jWu(}@WU;ONTRZgt zd*PawHvI!tJ$%RngBRpNU!fgo2;ZJeY=Y8d`}=dC`ToY^nTX1xL_~#khzxtL-iYIf z(VB&wxP2fi16}OC16I%;#orY(gimevrCQ$YEAlx+SXyN^FbCyxo)1a# zAV^eF3W|y)YRAfe3ISzoUIfx4CXVgIZVbM97-p6(asY%46BP`X5&#rvw_qEX@w}qM z*KHgR>RVnA``ISI5{5Vml&s;l19B=V@GJeX_@Dr~B3iA78+MSK8W>eh06F{Mpb<&_ zo>;sL1OM_vkFu@>fXlXO)0Qi@RE*PUS3wpKQ&42lfeowbIi=!W6q*874@JO;W%sPZ&kSp>?hS%DhFTvN?8 z8t47vsZZjDz*cH*Nh(j>{5j*9x||6Xx4f6>idl?p&^Qn-6$tzdW4{(~bsvI&z7%Cq zSMIY=T>sd&CxJro`lzDd%8Xk6zTrxK^nh4D*ed{wOMpArp;Z=vjlCy8D!S`0G9JPL zke38(Y===6Sf9NI`mbHd_7YYLHQ#I$1oz@mA!V0_s~)&}c4_&oy(+^DzwhfL){cBh zqP85LZ~9pxYZbzJ3=2q6{0&cQhV(SEm$w(C5IqsZYQqK`qF4Sp3h7kpzmz(qNcfE#ifr~G}SkJ8mXk>;b}3%Bwg(u(bQS99zR~7?8pSA^PbA7W1_> zd~kejHAmd=ru`L(Z-&kt0Qu;ZBj(}j-1i0qMxjk~mxLVwR-Z;DU ztwV4psr`KkeG1MwGF4jXLAdNyYSR$3Z zzxP38`+Fb>W}kalD@5bLU@?6Gg!{9dCHR~3-+#a(P`v{?oRXS#Qa(~5HC>_A0jQp` zqnU~%va48LgeIb zp6fr^rvemLAFXi2qGIX6ey4caiAfM`rH68!>`Mc%qJ8O*S zxKgAS^jCld{S)GR0#u)9iskCdAOH2^YR!{mek0vwZkt-lE!gg^TLZD8DQ2B_n3|!e74mR zt$B~g4osE!*IwY@?~Cp6QGh9 z>gB6(m+g_XHt0=+Gy$WKl1@B|3OeW|YkGH{-l_XhF{y1cjb4Rs-!Uqqe&|9|h40H) zfRq=TEHI*LgJ6br@hrFPjjLjk9$zN(_slfJ0$sM@uTVPsf!CiO7LVYcQ6!+NjEc}B z0b~^&bZI*QC|Ff7JOvP}wiD^x7M>z8Tc6V;+KA_s1_I?2rlTLDAN7hhW%A9MM zj<4Zj@5@kRnACn>)rSa)NrT6V?8XJn8I8x9Vp$$K^7x&GI;_#?g;t`UrkjKi<#V{q zBm}9>^np*I9);25$Jft%QCj$dTLEwbC`n>SWa5dt2|j^wkg_$&%&l&!(mMp7DrE(y+ zfn~Vez5rK#UfgCHX0wZfV<{Q+v9Ht50a)?y8uGae3UWHy_G}nudy-`UITdK4gm|;0ruuuA@4K$JDutK}aEP=&S4@wB zT0|9d+rw}B_b6#7riFgc!6pH?gh&DEh7Dp)>mccRp(CUzCkSePAXX4S!@Ic7`n-dv z-NT9eP`3;YF$X_9G>`6cV+{x@Cy4W%m7OlSaAK)LrFWHBmQ+pp13o5A9|#)E+s_gl z-}EsMg01wXx)_2ZR93vB%zGe8S^V59+U4ye-a{IbBEDR1Uje*VY-4-aA48~4^Yg{| zBKq+W6c@fc*vSkOOI}9CZB6~L&+10o(X~i$GnET2RyDQ zB)L5rAtHQ6z!w`Z%Q-hU*sZ{Gl$6(#bKG3fkNHoCajK=3mtDKS>O*B#m9RutvzxxN*evrQh@ik0h)`@y#hfF|T z{BWx8RHB-!lrUfj=AWX&eb{NY)0ie1GwAdEt=6OjMHa&sT5IJ18LU;LU6-!qX$Gz{ zbsI$)7kzW@u^3eFS(U)_k%4J>0D69Ei+I>g0q9%E-E>DE!HCk6W<$d`ia zgBKagk{P?Q<-uOVrGvevNx7euR=IK1ER@%O3cNs=I)I@6b<#Hhj-m=!02CZ!$fPf; zuFzOs7#9KeKK|Y8B>zOvDh%GdnjEJI@{a_VpUa9oihF(~R%DHrldd=I?ABTmTMwyj zQ!B!W1$>Dd+`|_%BZEW#rX%>RLDl`-`s>d1d##_IpcdjeyUG40eySiCB5n~ZzJs!{ zyo$INxXRKIh*laU6vyG#z3^MvSH8UR=@Rb+z@BWL60Ic`iCMpICX48jQT(50zYLL5 zp>_HNhgmQjNKxIot?qs%STPHl5D0yt^A+S0j0*T%Yx6$#I`YWtZ3Hc0zrM@6`Bv(i zjME-ct^v0-Htt6$YK1ix_UlV}eK)IV61abFCvW#!QqnO&*xL(acm3t3u+fm~XiX7| zvkrkw8%2QneOX503B{^{W*TAbXqH6=;jgw@Q$U-&&Tgz(Z*6j2&tz*tB%_z(pM)@e z#Y$aIVak<@X>6sZC>rCTAk z8P)3Ix=b|nNrmQLQZ*p{TAP;Fp1HQi&#r!rd9+`!a~l97vbP1W)r|`2I=MPi5mqW_ z3T)Gt(}wOUcrTVphAKTgb*^+h+^Y$=fjj&$JdF0s*J>w&1nkK*e%_$NqM2njRL>iE zYJlyxJhB+2MOb(~()m6tlFX^!n|xt({BSpdSy#s9imiGfXbS3dxMoRWd-u-6+k3nA z+u2jyqx>XHIS2_}O`X)0Ka6xo_Y2so)0-b{kLK4EzENQ0mQJKdhk)LLxPRtd2=#1?}4 z^|rm=uG9|S2(N=IrUDo#??!%h7`YJ{^vF!R>83lKnad{Z$*jX4?RfgjKXZzORS5xYp0! z$Z@dmc_U-|S2Ep+*N z7M8WHNZtZiI4QZRQy&sl8tm7g7!#hJ&&H{!>D+g@H~Q)8%JPmBu);NfriNq~ru33_ z`^mz~Gqdo!tF*1en${$O$$urRz5spt+xnE{XtatmrLT`=g1&2yX_(v-9p`wQ)?@S! zsGXkzc$bf|A8);xlTU3v9$05ezh-N``s@yn-77Xb)TZ+4JP6clmaR&1`{K z*1X@Aieod#{R~8G3JJwv&j@i4?Aw@)(ku;7HwLz_dGWRWa_`uxX1q{$AQBm!v%Y4y zev{bqn4evtGv#&>h*HM6hz8rT!M=?XkpuK19bs(aoY2pM_gIs72IJ>tqH;|UnsYVf zl{pJ&i4@A`Pg|@wTi#jfC$x9R>|8oQB>0r#_>hgn=v5qJURkXOT%Lfq)tanE^VF>t zNovJ09VXks0^7`dC?gA$f4vj?8TQ@?eCIwaW_!N`&ZCQ5MQGuRR$8*710yLQH$4Z1 zcXDeHK9QsHvFr+yK=-1!c53{Ld^U>Cy-@5M=p5_rx9;>a0r*M)BnYKuUJuB6`SJr7 zj~wy@%i#D+EDsHmN>vvAZaFZZcO(Bj1|!S>m{CMql2Cwd_?1o)o<^)25g0sSnSqEq z#`T9L7=>wI*=o9ludio1@9%tnL94xtafJkU8(F~paZp^*Mt&ze|K$r5DW^peEJ=PW zP~JAg$4JuM6Iw72WJ8oVk}JG4xGDSZITUa=_ri(rY$XPAS-upn{gcoz>pMRyp~xlM z1A@YB82pcwi@9+IH5{1M^#syT3K8ZBM=^=Sg! zVneFBNmWYpz3!c>Nv{iBCC*sWnj>P_*^{!@N`&V2@n~8Awvl(De8hV=)LNkTw!t1=SA&b zLpjXqov@&BHibNK)0hTj#aqyVS67WIktAvzP#m=KAek~!h1@O#e#x_a++D24TvfU} zomlU^T~f&uhqDjgyZgz4U7mk2R40&6uW0|I4oG}t5d+-j0kJf$s-BwGSuTxJG2I9} zPTJ=!@?hjgD}}sA^JFE>iYguG@b$qmq*Rz?`viR!wbo z0r0f!a4{jl>L$LH?f{|Q?-$6Owx$hqS~TImx&DQ;)1+Jtw|*lMmTYcOI2Wt=sxn37 zi)@t2Jk1$^LKo!%$L?q!koqHl+w|3UcPP{et~D(j*z8NlTs_D6b=x3`;R7$vzef#2 zZgi$RM_=z4s(R(ireao1vT-K%C20u&VnneT%P(K%s&v{Y)~uimDGTPOqy(84Z$mRH=#-b^)sT|iiv5jo@U<|ns%z@@5IZ3*lV zNw5!F7!5Y*wpY@Oyzp2FYY0aesu_XFMHF5qtb1P~_2+KnMFV z<~E8QF5v{X^Xj4@*Kee~$M2Ix;>XdFkLpN^cQFPF=*yP?sv28TQNC(~Cs^7$i_+^m zW!~ft3e~6bdVvmT6Z2k}n2`fzgrUj<_l^f#(0w#C2C08RU(p>|&VK`Y_aUrve95j% zBg1Dd8fK2!ey1+Rp-6dog_%28PN#G!OShjHN+bcdZwUmV>85xw?YJDZS5OVejqTMe zKx6l5=@A1EfeZq(QgDPNp%vVS3={@FC>LnP@xhgscDVOusp3!KI0pA!k7+b@*&{MxzT1%C$q|xci0U_@n@|x!Ed_F8ZMw$wK@Q z)d!G=n-~zeyOD{{3ndy@(^^M~wBbDgR@?Fc)RGoU)%SX>*~H`yrZJ0hgYdQp-1Gz~ z9Fp9ohR^$oOK1fq-ZW%#E(oiZ%C#fr2Dy?p2~0HILOeLoeni_4$6Jzd?M=E{%+d)d z+|NCM-5%|{Zu+qqLl0 zFcj|5cSG>BU#i;l@c|IQWncbgFgObPAiBX?9mN-``;i#jZ)DV!ZB2cXHeVYfP-{pW4{3KHCwpI|9XY#!+Tjjp;R&mh2Qe1` zo6F8t^S|c=#I1%9eztD~ms=REML1cm~`Cga6d2by!WW5^vuhSqO&9{P21VI<54CKODazjJzY)ORj zT!5AyS}JBdla4$qKx~vCfx~bWXd}xBIRw}O8NedVb)p1{N6fLaDc@O{6=P*(S7N$)TC$jo0K&CmVGeJ1k8&>zCDBS399{|!f(K5f*JP; z6X#duA;EW*3zmw;Z)K%NuNth>NhuKYH+k}E!Y{DMP_0WhP7y|^pD{8i~oQ~Kx>at9A)%ygOoYWc-v)5{fb2PdpyB0{$ zQD$-B`|h##*n;lQB0A%otuc~LBB3ELz9iI&k$)-zDnCXox1HTnBj)e{sFSEwPT zDWPMMx?3{Z`?wzpT5bU-s9Q>}(kFr7QWMD+R8~PIzNoM54@SG%H0`B&3$o{>8T>p& z{pa|8Jm<0ZUF~`<6E^J)tHWjQfkpzn$Rvwo0LlNClyz-uKZSFCX86HnQsf&{Z?2>j zFgwMzrOmH!#!V0u#58HnX$}$R2E!QXm2cDgo_Bx;(8RXw`wOCzL>3P6@7>@j8Q!os zS?-ZN1*|1j+Pcq&CzS;PRA0^rd=dV%`lksV}DZ2DX=#^G$&uRwX99rt*^ zEcSde;uwp(THdn_;DeAI3Z;Lyj96K%fPR*ps{$kjrE762Ls5U}!fiz-8dbDi!XF^j z+U4uU>;7g`tUKA&GFeyqooA%huf8I+DPc{Ti$EfPeA8l8_-h_(t^ZN8%9J8#Uxe?R zx}pRkl0<~MGk-HRbn#d#W})Az%=BLZ_jkSbRopL-pSR~udFoLV9$9WX`2-`nO* zX!g3EI7ZQxgic&_?0XdTVKw#?8Ko0r99kw*x~YPZ>*7VK4?7s!4J z1t*Nb&S{MC$?}$lsiES+D|_#9nGq^`my0dNG00A`o&v%nqV!T7J_=XqCZ`_Y!>mKd zk3ZpFn@K3RS@z^@(HMQT4RKULGPLdKy$o5Ry4>wE1XM!iId- z!mHPt=ZFlxPo)qp5Pw?=Sl1fDW+a8Ag0BS-nDC)MA9L>HbY?FH&cq*r$***L$7dyB zj9_gSj*j}*x_^KJj2M`$ucEa27%K58AqY*F^t5#htLNRMa#P#FNOiUuE;TRL0Dy_S zFM87Rg_DT-1D1mp?yO?ocbzfCX-5`Ep9~Hp|ML)h6Hc_nxN^ONoG(@+u>SC11vT`o zm~WNs)5Coc0k_HFnK5P`j+niYT-RCR%1v(RAovfPJOF)rt;QrHpd=zqA}}u-z7EnY zE!~-1i^zI{?!X%zSHAD)3OI((t=QWR77&=Pt{38C`jS&&XGZ=8NYfZ5?q|VT<`mx4 zK8w#}ZMlALj&b@5ss7*`(g7D0sto;_RD?@Y_FyV*K6=+fVlO+>n@h!Y?B9OQx&mNg zRH=MxMIuS-7*&X&=C?#x-7;uI_5s0aUWLTXh!frMzp~lhlyGpJTE%hD)PkpMp5rBYq1Hh35RVjY9-i5WVE)j zQqQ`hse$l6^M-xAVOcsuDp;yG76L|qiW&{213*VtlmXY{;{rdJN6g)5tmUo9ulxC3 z#+;u;ce$Z}n9{^F6O_AJqU_tp@2S^siW1{Liq2!XRV<34AH)D5@{lN^$Zg9y@ZqQ78+9qfuSzo+=)Rm3|A zODWR>C5q3rRJVHdGOAx;+(lnP^ZC86)g^gsPg zf|tdV1pms?fC-au05x=#$Kw71w?M=p0mf4e=%VbD z`_x@Ql>gI8US3`xnhT1A)qS#iD3ih$md z>#F6Au?r1IRAFM@Srv~r(1C;}d-x?WLnJ?#P`AGW4dxA?z$n;jO~AsDAQAnRj8DdS z{3f-%SAFWyb#@+oFa|Z}>c*U{G9{gIC(3coL;&9;hggj?JSLLr&M# zA}^=TYc}V{=+q=K{9%rMrLWnaDpR$erD-h@e6PL5<_8$T>nbJc8)}xDB5b@6B}rC4 z`ImZO0a`+pj5Ho%Oe+bhIR3(k;MuI8?x-X0&QcQGl&xwwH$m%Tg=CWf?hjfNiZe4U zt>cpp0g0OW7}4FJ#Q0gZ6?(|!GX^~%G$r>whxACA)r6PFH!>RA4gpxng{uE0IVIq zP)$9DJiKwmcY<)r;DosCJ})|&!(`rag_`kZN)kj7L1^25(cLLN2o-E;j#5kdo11-q zt6D;s0(EvEV=rP$lZGX!8u9@}-W40tJ6^{T_>$+e#-~LwuV|KHOn@tzb^Vr7us|T|D`mpuPBwP3&{v)EQ#}Yo9Kz0;M1L zwZAd9y}$$svDf)byy41>EU7o9ARuTe8B6-FP5geGRa1NW3t6e{_-6K{R0uP-PL34r zgy~8_a%Cn!DvNVYW@he#*O3B+qbNXN@B2kI0!{SVNTFmvzw&HgcH4jk20D8~x%N+* zZn=fO1nlzCdmlx~`AJBXD{Qj&bF^)?Wn}c_adQR=EXiX#{7QIUz(E3UY86j@{~rX1 zg=APKirJNRNWgy(8RvJAbXKVCN;4RHiE$W zO(w50U~Av)P6RPyL%Dn*Rm6N{aA#`3KigaC5KlIKYEwa}Vf>Y}io%xjPO|w2pB?-YUpcG;eo&}X55G_dIG>zhY3Y% zk1YJ^Yi1dKteQLja>5=GeTrT79?q0CxO z&skK_E4hJFO6kAyoEtR1R0?)kI*Bce)BJ=e*#=Q(?cd9IN4mVyLs!jk=-yRzX|FCV zi|jKt!p;9^8N_+vh>xQf+zflV8ykRL5EF&@IElu=9x5}o4=;*D`VW$@4RD1WVb(H) zahUt=Z2QDZ+1U>mSNk3TwOAe4`Jh)XzMp>Ib?lTnAL?lS+`H4#7{#H)Tl3HtE@%o+ zt)A3ff{CBRZZY+F+g{~7z~R&dfJ92l!SMsh z3&HnguIP2o=8O7#%~v6nB_4dRH&t2WO~r>u71PM#SUbqL`yME*#tCNsjvP!EFNrWS zV5jCErFD_Mqsgxl*y4rHgBuX3om#w;sk*5%_{BjDHa7(W!08hAha?zau+0w9K3ea0 z5txT0PYebbJOTnU&)J=7q@ZH~W{=RJHvhxE+Q4MG#$`tL8n4ez|B^Rv8s3@!=F+Ej z^EiNxPaegD7=xYu4J8^resy4(Je0Xv!hlsDn(y@Q`C-D&J8J1bt1MEa{AeC>ik= zW1&zlKyB;|QJYLw4Z;-tK5OB;dxy?J^hFC^WDG;5q&iQvkn|g1Uwq`?=PZ@4MEkra zpu1R6`mTT71G5?KibzO(Dmy?OFd!t-(H0N5f$a-+Fen9=J^f}KTvi;U)r@yyiHaP2 z1Vq0osDyDH#u;}W%5lY>+Qu~AY928wd8|$XyWfZX6W|ru!H@! z(f1HodFT=tckw_}*9Q5)0r>zoXt-^HqDxNzvz9wE1{&`|LhG5|T^tqF#;7&zmj?*c zeN#Eb<0AQR_OeDlX_N>N1RBpn!;gNqTI9?d%+LW%w@e>jx#c2nF_#LZiS_|Y#Ti<` zUHv1$I2Q2hx3LP~B2z*S^v<(U7g)nk`~k-g1lJIpPCks;J^SX*`M@g96pIun0aG4g<{o;{`xHJNQU5|RzBLEQ zF7V7^;S}5+59U@8K8&p#2%O31&r?6WmC4WZEw)v|I_bxq2S^a>r>TI8$?{&3RM2TL zlgz$Hcb76_!bS-GZU`~f$rdb~J&ehzlW6|Sxf{`UzSuu^Uo(kqo!cQom@l>9A^`tP z!|d~nf*p4Ai%q7e`5g1=d;`O=Q5$7;9?0BZ_oO2s2q92xxg*ZTR))Pl;2wRLEgKhR zQ5=!27;(4Pj7M5vr$NCevT+?g+{wrlz`8&~O4pgmf=&NuTw50mgyf`igYYI(c((cR z1zCAm2ni#D(P|n61q<3mo!H5Z+^dM_eA{QNDB#$>o7XZKv#UVEV3NDmH@6(qqcDBV zeFk`A`L$c4YQi8jK@+|2xB{44|5S~-ZoQsW;#OP)3a|nU>TfF|g4eYUjnuK6R_+OR zdP1MW-4(`n)?ZoZnlVH<^eoMT-7PfRfW`y+PV*+Ry6xgyxF!Y|)fSu2MujaLqe(Pc zp)u#KyE$igQ>u&tnr8yk=DZ1z@HiqW!|_2~vCRDXEodRI7e9Ui6~GDSY9TlC1Te)5 zjKsm5K8hc40zwH{co45QQLEsk16sG9xPXzti7>i7=5OG^zV&!c;K6A4ODZi3D^myN zqVNm5T)Z65!_d_Ju+xY76gG?XtCdSUxZ*;uS!StV?_3WhP8KO1f^a_G-pz11J_p>M zl>V(>yX=)mn++S=cO#HWd(2TNc4tucM1BzfeJb%0MYi`q3Y{CT>ONjvU{rdjC&YxD zzG(s-i7TPXIsgBC?8uGC^N8NDY)syFj!qtti1dq?QJ~XN5{`ocrZLv8q=>d61r3#0ywis zQY#(BMW0VG&`@L(^uFf^HJeT2`7fr%$3g|o!F9~=vB8!=QLxp3`CoLXhGfZeRz=AB zZgS=$TlFJ}aREyb4Cim~x@PLs-Nrbm1@%=+I3Gq(E+Tp>w_$th2Jri&N`>esN^QT0 z@2q{9YXZ6~HFN0jPyn zJS9)D7y&Wt{26i41rZ*Z^^^upbD=QkeFgm&D-y0mlpI6C#@^11B%DJw%<90{$VkB@KTZB#P?%tL24 zkQM-ewU95{saW9cI1~|{oG2_cb8I>nuU83y*J0HyJ8ga&x%(nK>HWWFAxO6UM!u=< zybF2k&`IbeL+D1f&CQPeG&Ha<)f4zv0)4gtHGe7=aZBIHN#;C;Rn=R9%7H&du2^+i zRYfGtLJo0xaP&wkFbo4LNvNA&0cHgC)1fMTKN=VLG0l1uNTbcKv(wbZ>m9NW_(}mP z9JgBVqKVPKxNM&BB?n4u009@H`QM>cg;JpqTog_{3V#!XS4aD1h>6tH{q3CNDDF><;*$Vl`;= z*4JO?ilrR_N@m=$tV`&c?g*RmUq) zy1%Fv>N0tF}# zpk%4HY1VM+3i8?n(LXBcXQX`TM^t*v(c#at^PdrXpaGVS^8)q8tKz3b>&3-#MnE#C zVC`~@JEb7*>$|_a;025BMLe9GpXpWAE35T24RUhIpW}_xHQY*Il^{rS_)9a*mGohb z9uL1VfVi)X4BWY+<{ri#5q6#n#y?3g#Mm$7u;jn37d+MdTF;J#!Vqfx%fjwzo$<3V zfky^bK$9mb(`b%_!P~klL(P&T%%SUh$RP!rp=@9+hNnD9K4FqMiVu)qE66%d;Iv4o zs5t7ac}Hqw(o8!vFUdI2fPe_sdyjhXo`su=8iKUh&M(q6+Gq#%iwH&$dX+}VQa}6_ zamg)W?^W2;`);|lx{y`ZAr=U_{agJ}_H;xZ^FuuwGeO-Q4gz}%_~i*H^gc?@eM1oK zXr%-kV@X1(zBy*}*dgZ#zleL85Ha)#HmMmkW2gl@Bvnyv?L^mgu$h3dk23s7P&)#E zAb@{w+vsgHPELbhwxY03XrRvN^#?5XcdCL0ghF0$1%J$Tja_?5ay<($att66=-}}{GsqGLkp0vI^rmwsJwccbZHK8hIcsya@qSgCqa$2bG3ILYlCS#;i@1Be1+ucx6kG zYAjMLYh_d^`UxL!44xD`e<_OUHU*q3zzJsWI~=}DWU*h0VZcV@%%4dNUtg-+u`sE6 zLhN29f>H)9k#Zia>FABu@mfI2zypIv#2UN2{tC1iBQG3B(XJINmj%*CMH8Crh%SC& z@iF!X!gV`w^e5myQlWM>E!$t3la)4d% z;wSkA`@&=d_lS|MeNll6>AL!_s&@#)6VE`r8C|12NQBeMQ zg&H;LJc2YpnFmk8Z$TR2--g79!r!6V^f*0smfjj32Tp8FWvB3Whsh7N?$IL&!?nxg z(fw{EwR2qA2`D8I(>YyuUENy&S6L>DRgFpKgGv=!n|ju4V{ub7V0~)ENO_>FC~?n6 z(^~@5nkt6-eZF=Tk(Uw0kuuAT3!iE|+EG+-;gP`!w^I8uODx5t>b^40Htvgl>^cU> zN|WIO6z*3s+;4?$#xj)uj_;~6AI0rTEnD9bAovL2g{HJANh(o0Nk9z{--3n(xR6=a z{WRV_n8$Hb;>B>SV1x#BpS1u3m0XBDtopd}AmILedC{@hpV|8*(lMWteHXfDsWHji zwOXr_o1|+?M2MSufNK8Z~L=s<&jw4R4vG!yc zm5c1=lrb-nWcwG5AYfg-ac-CgOL_ZUG66Sj1mkD}Fmzk|Dvn7n40E&&9JTIki(fmg zVjltA5wk@GIO4ATV<`4Fcit-rh`nXbInK6EiQc4*k-@4wvD*RrSiou}CK#`sKQnoO zOgT{o-_<&(QrwQ9l(ff}2IR7P_xY_2iamjTR>ZVtMajma1b9l^Ij47{QgphgyfbTf z=`FK>0&w_{XHZSrr@w+}jA>oe%np3D>_!0iGinDT_!E|3ZS)wR_A;=UqVZeY-X{hQ zCvq4E+C>c$F+5QR)fUfAv(PE1n}DeFGd4?N5RSOFo(CpsPODvzwrM`@=;FE{ z=b$i^lJ@UytIL|;jvT)&*V((b{eYmBXYLKrut5Y6P?1ad202>9iG+8aGE>#+1SM7F zk!U1095su3AcQ*dX15?V#TW$_ENTM5mb@$ai<_Ui_ZD`?knb$^D_ydfl&wgf`%SH> zz_=2e;KU9RJ!~uNm}&JH;H(nnb3ZW9a~~8YS^ZWJ8L)}rYng^n8U(We9@WjIWV&+W zw7?1Z!Zi=~b1VZt6Qb!tg3nT}4e66H`$t05{cZCxJ5yG`+j^sYoaRkE*sL|Lz6R(&!t`OYLsW5HrF*pLH&&*Grxs1+&=FfIEeyxjsuc z04YSbGSdV>=cchCw7Gvz*o_Vw*C=ZAsaiw>WV~5mP8LOO4PX$$l8Fagsz4JMXfD4s zp+V1hDvSj@>FQ$^LF_0^(8vDkZSP|H&5woJkmBW3=ejmTnG{vj3h{r+E9-c>YUS#%W5y07miDyhlb@;Mo<->Y+9R*ryJ zE#{w_YJhqoHc-*abx(r9w~TOATbjD#rk@H5VVoEIrHzoEuiBO`%7E%1jd~;L7A=`q zSjMHw@FJOI3`KjeD%939IE{)>`V`07VL*xS6UnDv<{!u@r{2l;h+ zqP`?k0^T$`^|~lB&4%Z1d2x$s=R{fNIViHQg1owH`lh)B0&M>Cx|dFLKOJ|FijZsB z!P)+Mvk_GY698~>dp7pazJ9sKDiL(@(hNbPKXTMyzDn>M8vwJx6ikG+qgy0cui^(S zQMy->!mi)cY4JrVl0IX(e)FlG?}Jg`7{K4rDu@HVWy!u?Khjx#{RubB)w7gU06gA! zy~9|$*a1n?I(44()PeJ$Iaqm>n!D_iB)LHly+`Cm0GM6G%@q&n1!pXjrR_fadG^oy zvmq0{6Z@~6Hsy5;^f>LQp5bf_WanIsPn9)Q&_*kBI!pnH**p#@Rmw6=Gn>O(ie_tK zMYd(V(DxTGd{~DH5Of zy?n7(-^Muuub*U;+k|V*PKEwI*>vdM(ZPouCj{7P%=!|x1CE_s8FBlEDJ?pCR|o8! z0c;x!D4`v@W9RZ zYHIUQUHz!vTHaJARwwAI;}Kb~YH+a6n(IwIQP&g-&J2I&1ufhluYD9DQ9K3h4D6^2 z0qJB2^+Wb#{5yF+s`o4Ii*C!S_S^db!d(?@rZ{%O{sD$YA}k7cQrf19H@M4D64|@& z!Y6twDv!y1=n59{W5`WbK#1I`z88lXeh!r4TPlv1N6o)Vy4J?BAjA~FRIdeo5>*Kg z-BtjoWFzS6+GjDGgO-W|^N-qqI}CSH@?Fl$913v*{Dc!oIEv44=N5pu8wt>>dHvq} zihlq^C%>zMHY#xbCK+d2uzv`^hcG^)#Im|#bH?0*znRi)3IL2cwhA3ee!mTqWvXt)-V4x~A_5`BD$9Q_>ZQx&Ur`(}1pX07{67D#SX3k*t?e#lk zrM+HCiBR%$fs?N&J2Nl@B@Qeq3f5;0%z!SGV(`}u{grDpRg{ULXHer2nnxU@+BJfNK&sDE*`f0OW&%~QmIEtqd&o%B(`!=8$Yi-->U_nvBrkR} z3~KHxFW0p-F5Zy#5=$AaD}aa7iz-*&7~QZB3VM?xoy0?fmZ^9pX9vo(1^>1kkgh;tBRg@B>!;mFDvtrB!nO#4%3zoP5-V zLc|g)5<}c#KA&(C5zMxm91?k0#^iOr1w16+&sP3(5m6Vv;(?96ygEg`-sRSBrK!c~ zg2nMzqK~qUJmCkQ*$mWpr@n%=6(){fK1%@cQndet0f_JF)I?OltKKUIP>bp;nXE#j zAeFCV_F~g}f6uo1L4$g6C*b{TxH$hoEtB@~`C!_}0tb#^vFUX%vn6}OQ-6O?qHiH% zt&Gg=gINhlmc75N@UuG8NalS@eqN=Jy!Gg)Hs?f?Fq*U(hW~L|qkl5v(xIRRilNIQLSa6cLPx4Qe9koW;fb zpaS;lyjGQtQHJEc1_U&S-&dF@QTB;^*s|>A@H|>$P;_f(s3Tz#tHF)cn`Cf<{ZoMx zdOPv>4SLbOlSV2>0ib0}7_yca_Y!cQC3yhn0EL9ads!9{r=V!=$;)#ENZn2j z4-uKa6?jfQ6et7Uq0M8P5&=r=?fcq#DW}$$SZkUY~ zIzge6`RyA%_vHat3dZ^ah0gKH8X0REEed=bL&NZ80I_?2HyKkEmLYhpyxWwGkGK!K zHLffos2dX`+vYbD$+{3C{0BGEE*Kb35}AqU>JgK305?_J`+zu)U!S-XX6jf9&|cqd zk#=}BSZ51Y`!zg{agVw2V_lU;iXt_^XplM^2=(7`r5%D&D~+MVVukxAJ7?Jwu8I#o z>`(NR-UJ(Ln}4AC*+rdssD$ivhbrD`#kOb-{yYyqj+9UJUr#d>``F z99+N~3p=$~%mF;C#c|1pq7845Q1rcA_F&Jy;8Y>yHN4PaB~+;0fOgKc{Wpju-AZ6& zBYitbLOrN~O>jSNl>urlXR0|3Zev4J_qq8py;(66@XlL*8AI+Hw!b%v)rB4rHxL^q zSemnNG(^CM9Ro`&wRXYOVAY@Nh~)o|>YW6iQ$_`&z8}`=V-VJhWx#<|+z$=uBVWx( zK&4;-t(+mA8UR7Z&OQyNV%?5eyRSgwzRrmQM+~E@3^O*L95w5z^1Z+hdei#?i`za( zs5$B3r2wTDMD-abkDFtfp6gP^E$`^iv8{Q5mSKeaFdT*21xL$Es1J?;L>Xa+vQ3d~ z1pjsQ(mI*cNg4q7laKV2{7oU6!Ivy&;fSvssrcn9Dp_s!6WhfLB2jK*3hByL^Gv0> z#&+Kuxd;AI8oIxa@B@LW33TpM3M44XVu3k0Cl6+WwnDc4qIAA9%n&?T@g zR58;}f_@s%`m3Pt4})%Fu0<1Y_3i>i1rz7+)3eVg$zM*wWAlGYng7(=U$a7;Lpvi^Bo9?k4thhesH505Gi|N223h za3k12pIr_GSSASWE{%{jln5A)W1mq#orqhM+OzLL6Oa2KLJOSPFOO1iM%(ajHUoIH z^SCthipzTTNRb9I+118hHM5oxw+y>-LCD8& zFlxPK!+d>7NvhpYKjv;8;^76?%!r>_luR>`0)lLs(Hy|d{Pmd7y>_WBd^|2r>hsiK zbGSTEG{uG3TsH(Y&Cr#q!0@lL3&y+t%r)oM6F($2+O)t|K{~7Es$Ro(r)%|TY*4_L zLSLP(_!6d3k6s}>Rk8`JT2ExEMMF-!x`5KVu3+8L5ad7|lZ!%^dPfi;i~OdWK+ypvP`VW6*%c_Q z<$;>CK|2(*6n0if(2Bm}aIBveIm;q3CU=g`UQ7~feZ3@4!)mdH5xX>j$+^$DcI(rm zSIqaS0PY$Gf}|&TmSyibRUK$34e{${Oti)3@iuMFW^MD;O}#ARv)-Y|x)aTaK4f8L za6tz!07iFXKihnZz%dPj=i~`>oGp8uM%-y?G3*<_|5So{fk_Tio{H~6urH&P{#?ce z;veZnE?)^PCYY}UMFOunA_7}6R%E2Wdan1sKFTw^c3UZX0jUj094=^gP(J3rCB_$a zCr?H#WHkDQ=vgx+_^a~uPIZ7?xi4f~o)dA-27g`pbF)w~D?~E0#CHPuJ~8oj3Y2CQw+p&A$4fyi z&&bUS8e)NJB$s|3QJnyX`$l!m7KJ~=-jDq_vO`IH1J0HRC<7BS=GEYjseR6wPPTQ*Ot!LMCwN|KZdiVHvS1Vggt(`Et585I@ zUj&onR>rQO{CUt)M!gl z{a7Liv*0`woD$AlkQ$WDFw6;4pM-V-XFh$ns#s-CJoo|W=jb%|Pk1@!pp zwMTOV&`0058G=TgEMukr@3vn*iB>2tHC*&t5A*8~EnX(v=$!+XV}HQDl-5u)Mg_9fgBY;~L2#-IO`uQ4CZlYFsc?Tm#|1MJe|FmrqhUpQu zHkiCVq)lHK0`6=^C+?%W9557!6ScnxkhaFz36>w2*P~scV1@LN?`AFXVDo{)m zF=*{dGN!({&amSEP1U**K8Wmgn19ce^X+1L6(vI-`e{)z73hG%51f>S+u`z?-Oor9 zk$QTevKsnVu+j|TNYSV9&Ek4*^J4BrMKSpM=U?1j*^UFt8r3;vJH5btlaoB==n3pBSn*F%^VZw5j8u`QE8Wcc=PG`wYuKtbJg8 zX^wuU_XGBgs8P}tM>PsqxmB9rQfywakLAk7m!mEy{_**x2nc1&`L#;yHu+Wpb|GV! zL`F7a0#fVh3qxv{pvC?P_1C%jmz0g_LwuaG2MzCQ0C}ph8aso2ePwQGQK`dQQ&g6m z8hOICO#6_B#`r)EWNvZ`3p>H`Gk)W{ULa6GK-4ylt-VHXVe1+nd%uK05v}(A)vF1% zJWG${9!evMIc5JdIG;6urUbE#*kZ6oE6ZqwV<%B}rR{Y+b#MDGIN2+7Xjac|L zo{qg>%k|-ovkKsID^o0BXw3DiE6uonT_O#b&Rs0ftu9wHo1K0EgA>bjE(bUW0BB*C znk6OL*0q68_@k^8Z`O6g8rV*x`c?Ec7?qP&&W*9oxHcn2QpH2Ev8%o;tEMvREi zA9-gl()Cj0y`46Cm*;bSUiQSiN2jjE5}Qsf33L$%c0m?{aorX3a*N*tz|OVoVlipW z8|Z}?#u-Ki=v5EP5U6BMf)Sja9kK~20P_J2iF#IE8+^mc_KHx@PZh_I`gRcva&Mkr z!SC;70xVKI)X5e_KO)estU#UMgHl-z!S?FK`?Zds(0)D_IPa}BZ}o1r#hL=liFOhn zT(7F2SP8*Ut_Q+Ib2~*X#g!pL;=_FTsKsTz5t-|Ay}$iUC@js@3+)|9e>Vm~7Ph~| zdkMF`Un=xD-`U`nAK)C0Ai1ODZk>(#GJsG}_Ah-E7WGFo0dE<<(Ejlh*3Ew4qc7M) zUyxyf>-OT3mf5~ShmvNwzQNwu3*Y;``=Sx&`pCCvau3ZVJ~YW`U28tT)O(F8yiM>z zu*aJ9z?t6d(ak?L%=!mma&XKuahwF@XQuf%BflF9P7K*DE61;+V`7#B=n#F|HYmy{H-4jUON{g@{GI6`QA9jc35inaZ6IYlhD&SCE?3zN9M&5E zusPcodv;A!`I&~ACog~bcQebcMLO7`u#LTBh19MH}-LlhNxKcb>eA>${vV1?|ueXn?@Xr8t3qZT4o$7 z`;4#iv_jCl1M?Dwq4fRAb#HLUY{vl+{T)%WrLyjM$d26Oz*eXnM69pC*U~{32s&gBbrs{l+-X(9 zSGB&ahX37#c)HJxvLEFmXbICp^^g4c`k_9enU(hq`a3|w<7)h>lT6vrE4P_RrH+ec z63Y9&$R~RR=h%G(+~f-6fj#qBDvZ#9p^{yUe5SiSG=|5zr*>`CW<|6DtP+*zu#=L4BCd4nEQs=lm83qXRQUi%EpID_;FLS3UoG zjc195KmzU$R)?MPA%1VeOThpB1?tN!;^rDP|Ky$JJb^_}<}7O)9VMeR4JM9gv{s?o ze=+*F0=JAct->`E(HAo;Y6j-;}I zISzO-npN|20C0y+=YwA`S%lT#&uTF`ZE!BbUCgtmqY}TxI1Fn!^1ey*28rco`I$%mLTf^c5An5I%u?1g5X_Yo@po&ll+`+IC)VT2m%_>lDWk zr14CeLAdlEnHp1xkk9tTu$kANoe`e_H}52phueOaRmy-oB`lYk z`Jm&mi<`|$+FZTTk7=!)CTbs-_LPBR7>$5q;qMg>g>)hpGw>!*cF}Ov-IyV z$@p|s{9INpkX=lk*YH6xx^xA`>m-AN>b-~{-=P&Y2mY}RjKcHb^syJRmi-)#IS}{( zoenD9Z6wVFoo#JlM?N|S$hHW5e( zkYH%p^*{wW`N=*~3aPlS-g@R46PzE}_(|meNXM7fu!HD(U*UWFvBWTE(oA%%!%3hulMpv#XZSh_=sr`y$z9L*+A_X_y zU+;&qfU(`q4Nc~b5Jx)xI0cRgZAFIEfr}a3>ck~Z*P-Ls+sR*Lk`zDx^YRUYcYs2v zfa!I&-`HsBG*DOKFvr%O#xh?b%0|Ip&}hMp?`MJ@0?G`fui)*v4tTy~eRcX}ev?lu zh2X5d6BFHXTJ9bsB(V?y`h-xZ8+iVUEw`TGU?g&SPM2Q9+u<<`LOq35G&NKBh41X? z|84BdFK}10$l*W8^-&+q42d42B}>;`DX4vRd@gpzf4$z?=^MYANbzyWZNs7l0Pz(@L3j&A zoJb73(SvgfMktb4&&RL=bugkjxCNc@rTgwb;yk` zeZs23R(G5FJ`xl0%Jw-Q4A#*A;J*b1rwI|din5#DOV&uQs!l7=Oz;I8-ge;C=9$UP zPvXorx>LhbIkQsK2D^Nt?&7ztfVp;GlO1+1%r?OxGymc^(Doi1xukX-W{~nkNpflD zUx0={p4xv>iv4gGA2=>gbD{#cr)}YJ(1haeqh;~ENq5yj#b<0VNa^!48o-qM9cd=N z?+6SMZ;qxT%ZnM5w05_>3he?v!Htm^B%`fyKY-CcU>2FtCS&>L&Q#!a^MsIljUW#AorF?05xNvXTI#Wx zo7s4hPG(<1pJOJMtq1!0SZ;U3ZkKRPMg1|tbHP=G8KpAuboA}lMn=UYJLg8t2HgRWCm$54 zw*_qk29M}7@;SQQ$!&rtb#w}#AIc)AiTI>3eE{-pr@js-=H0;6WVOR;k1M>yyB!|* ztQQF{-`n3oY^S?v5w#{U3aq6E+}G}_!oyL(Xu!Ypq?J^@;Zo#;^gin^9&OPG5*Tr# zg-ntmIzdmf1#|3TCjAuIwp2g7dOaL7}&ICl*yO!OMl>|u7KIygG>tz|<&MKq}`D6w%z%FnS^&k`y z%?BQqueRm6OMNX8W)HLJ&mrjQ03af~L;z>+{}#M2&sQU2suXX|6wVVs@`mSLd0TU` zs-n%dSerrulRejO{Mtb?2`y$dXC#R%MEW@BC~(o=_Gd_NEsveO1sUYrh$*gRzO7(} z0V(8gjKyR+HM${N2$U`*khq6D$@q!o^59IwD z&1C_G6;MyJfPb2Ps8?mcTpJR}fPHT)V(+IzWz`Yn6(aWfJ|H)x08q0Y&E>IP=ZAHs zk9f}&IvQr!&vEYL!rG>IS#;roqeAtQmbnMLuLG6l-68;sH%%?kCkUm!zmI7-1fpp^y)TS97Pcu!SV6N-743yY67-oM`#dBUrX#e67&b8 z$<6!AIDx0wLBX*(3~?+5s2xdCV0GAFF57t~*A(4G)vBQYN|{F}vUpjFl(UlQ4n#{W%^UqyKT$hcq4Z}ktszNqZ5Xp0HTJ?4K1%UgZL!b=JiveD{y*tIs z)#uyxK)vBXQouSe-upu)w}bm-;wSZvIhSxEF6-EXO1yr{-FJO4eWrm(#(S#;EH1y@ zVcAAIACcZM11`6r9Q|AA(Z&DpHZ9Zi!Kx$qXF2-wAiIBd!rl10Ge$F!|*erPfT(I{K1P2*gaQ!zE8HvzQ z4dw-OfN6lZwUWg-%F%ek=G03%K9>d@l*Sugd^7)k$==$gYj(^mCl%AhRy(&7SSSVo zPhO~?Q!cvv-y3RQW<8TV#!s>Bk{!=NcR%%ftjKpi!8{hSa{wB|G+ccn{ zeV=NmDn+89!tyMlF?HkK=yXtiDnM;DPHX4t|0q^b*&2~bLAAeKR;m;-wO(#6#plub zrVU4lHnsdf?qqlFMJua#Da7QK1*{~uvV^C`vAWzoOXmXNBWyD=QD)VHTG%Cw zvWkFu?2@fDHEFGYbis}nvo~s_7w^UOy1?tfwicIt@Uut4O5G$7+c1RIxdxF%>|c*0 zyK-I^MSFq~gps0ynZuW4j}2Yg0)_W3b$Q-r3E$_qFk(7Fo-+eC4=5HV0Cc8`0`^$Y z-WmmB-C3Dqe3Of$l#6GitRu^i+`6EZczy-mHE^Y;Qj^O-hz_7Da}x-&??Y!oRqM{{ zC%=^$!>?dus7e{vJ87eEOnrx3@G6_TH`rc_5roq+I4HD;vcEz4I1bfeJ!`Yt%PG;` z07Gb#Dzj-Ll}NJ2(kD0y5;W9AlGzv&dVOkd#tg-C$H&zjW+Z2!8?DL+4P+iRy72rj zNDMVv1_<5MeR-W^VZOAA!(!JU7VpQnWm49~NpP`x-J+xQ-`BEe2WFlU@jU^XUHaz& z=&>j6_bEMXRG3WjhIs?iM%Qn=t*R+*nsZF>weai9b$*&JW5J&t5F6@}Sm2JiQ`FP^ zr%#;Kec%`NL{UVyg44IVS{(v|8p|;xV4M;|4U|Ypid5of#c`}=a+5?q=e0}H2E0W= z)|qL0H6n+Wr)ad|M;F{NU{#VDdc}EojdVqYV|TnUcpfRDcp_(D+?KTSV~4c);U)bH zoPawt6w!r@r0`lyaga1tJvu~OVxIeM09!6#w^)I%6MY-!k^Hx;#t!Io4IWu1 zA;X|PzlZnG%?pS8Y)^9puuK@S=ALh(Q1gV1YYCm*+9NirXTU+H zpVFRIXY(oZ-+Ne*UGt)EJBul}c7iEHfv=UlCiK$>-m)J^mcD5U2dnYQncS#@xdWP} zsD|1=nREer9SDGJfFs^?dcbLOb0Yf#BDIOFzPVkgJM5lWRw$C`wv@*M%F68pzw*5u zd|YSa5wT69NuVo~LvX30$)T|k-O#iL26%%Lbslx>-?PV3jANL>3g2)=yKepJXP=VL zgvsu(m1>3F=uK#Ev3l1049m={Oa(ZP_b_4z5Rnf`o-F0N=rL1i-Vu$flDA8$w4(0Y z(Erc+#hYN>xuqB~%n&tDIll-UF8R!TIR?Tqf_NPV7$!b5WOP-ubfz5&gHj6l0RSE| zOjOr?>jAwbCJh31rw^K_L1?Xh<2`CE2AtjSR7q!*p!Wfdzx>U&7isW7ZGC55D6f6+ zY-x5YnRkAImGxaL(txb*$$gzkVu~bKV4fv#z-i&Y-1O3|n-8?9 z2X0=NPWvXm=9qq^A_v^VB7%X`OOsDnaYSMYmq~*yi~b#U3KXY3qrnwqfJP~OZ0qz12H?S{fJGWieqMrI*y-XVj$a_e%ulZE};-Q+| z$hQI!^*p|@Wisp>|9o42J*hs$rFA5 zkbH@}Iv*!WXZIEt-ov&imgHTs9oY&5mazfI;($Y17xfslgjXuj0}a1l)ObxF^uVlX z?Mdj&<-Hj&$*&Ri#eZivcFZ(Dx+m6JfMK7~ZIA&iL=NOe@=%?xb-U2Szf|sv_0O0n z<3eYoePg(YPJp&Htm%G;HjBF?P_(1vIB%e-L(rJu`0z3Jf$J}C{`hBIsau`X(JclK zPa`d$kQbV%ip)~;mm~NeA(otyWC3#xzOE6!?K6(wSJPbIkCUnjD|V@*kR0D&nPFd- z;Y~*EoL}(zq^xn+J+`n6_J~Gzd1Ta$r|&--{Zd+h8#A*WOz3+=^g_LDisS3wcXvRa z_`pfGmM^3A=YHfDPOO)YS^&j_lz!s%TFCt;f=~IKA;Bk(=**4DRl<$`3qTk3KkmuZM)i@I<=LURbVtHr5{BsM-Hnk+o2{jR349ABunc6F_y7FVHJ6Fdzscuq z@$+C*fr|(uasa)U&v=GlPpJgLIbhzz6B5LhP@M*QR(Mu=_!#0ml1>%wOlPVkIQc2R zqn)x$q6PEkTm6Xq9_7ce_9iyY`S`X#kS^3(7TvBhuB%=kC zJf`~@+|^q3Ta#p?{3TDYK{35{tPMcmiGw}*ux9$BOTRbB!>)H2f7Yl%bX+=1x?eyH z<*Kpl@s)+`)-@5hg7bi~McFZeb_O!p!0#DBmcJp}uJEw>oeZ%t(!;;oS3k-r6HhT| zlY=;*knK;hN(;XeiIAOVXR8Au2LiuKgZa_W+=s#zpt209{Y<*tMgi^Oi+(5IqGPIJ zM;ZRf%o&~tSHl>9VO##aX-1mnRbjlD)DJbV`6*BYPO)xJH>EGHNv^Jv&{&6l^ka zLo`R+E^~%_NOx@&{%k}2Aw^3y+KOh5%kZ=6l@&$6%J)ydUSGrX^Jq7LFj*o%Pzo7E z3DGsvLbU5|>np!;j8ZW2_^xFANJo5}Kv7D`0|izkX-UV>B+i_JO-X-Y`^znkf#^#S zq|a^($iQdTG^QmbgJnUma@rCQcAjL;@Pa2NF0Qzpfc`)jz?t-p)yN3Jnjd-};*P4pIzoCk*nz`eR$ z>u8$K(BooA-_T^QQZs7fENpz1&vdVN+!gzg#IJZdI}JF=nY@5UNDHqeS5HaZGhf5) zfWD6|*4eP=V;nbMMeg`^JosB0rwuN%M2cr&4CtK4+*stZ0EL{jk<#cv!8 z(mo$>;QI&qAoo^%;!1oS&nLdGMtrC872xk?Ou8?thpyMBJ6WLrl^^m(K%oQl!*}JD zM3!vxAV_#3@!Rb5Ewj#rNV{zG36eUcEr|jPzdQ?%oq3xvL2fRE(?}_e>y)gS|A&*D z1<%`MQK89nYg<4}$v$ zB66QdE!$1^f1g)0vxB`{B|0@DZ^rFQa#JjFGXT)eB^_QQBQ&`*{YI_Kb9Bu=uxsZ? z7Z-qnFZ9O^`*qJdHFmiMYxmV3T!pkM4T;w}jewse@)XO00dMh#&n6J&l=W7{jhLI_ z{KRJEQ>EL}zg&iv8305;yT2Twf6!KD<*%*9Q)e%oA9k0?fyR3J4~Mo3E#4F6wnI#@ zRMVvfbNy_-|4d^vdkLmpt2)T-7YkkwVvcV2Ha?HJ=Rw=2VaF>w;oE(7;x7jO#kBI8 z!d0~tPrQJ@+LmN(m}3{bnR|?bE%-`lr*r9*4e$Ov17>tox1KgFlw%zruN3}y2_h=$E7&}9Z1MxS=$)sY{)@K}FCLhZhxYA+z(DtGNwUCJ`8gJ7 zR@ACZ7?-{Az5|}0U^Ryx$R+X-25_kM&Y+T<&uo2ddeyLH3bk#!o2J{I>3H4Mqel-8 zL+R}IE%!dO+w_BiU9q}s-~c|$wgcMbiNG1B8GwPNmb%9?5P9|q5QO2qfw)%1!Rw52 z*WqX3Ona?gdV2i4Oen*)rT}=gSRo4BntXE#>3_lRx$!oA=X`*1G}|HaKpWs2L7EvG2QovE-Ee?jECbB*!g`MGgWE4 znVEXO+XINi`Wr`*uJNv#t^2DA{Cnbak{CVreOu#(d9a5KqwkBLPx6;b7Slq<&c#^6 zlKHA-5@tn$&z5ro1b~ZgzJtHVBS_!T;-1RUd%*4(?o&FMCb)VAM=Ba6!&&{~AvEYz zaGo?iowXR|(5VptFQ@m&w#H^mg#11^6SlEn+vH%gLDkn#8dW90%rK`530Bo`Sx#Cz); z3#9ll#W)e-VYtD&_ZD0;qRL|oz$L_c;&Q0WXVrxEqTIekD8jI=4(vHc{3D8O=j+;j zzhBdT3KiD=2iYS&Q+s6HU+{Fl$PYm1+v|&-HX2Xq+i2-d2l?`(S-*vA#k?`TB=)px zf_yz~tf=TSW<)-4=T9{ifiZxLaqQ%y(fjL{Zv7OyMK90S=3R0j2Sy5hJNwp8e<;bs zX!{UVachhZ6=L4a@5+e*qEa~|^Mm5(wrUXTtJGac1QaK}ohWDzlud8_Kwb}GUT-V` z#12plgi4AgQ8!jXP_fq_)AcAtd#|PT_ELqq$-F*gxqqvxa+xJ1`fKd<0dOn$_&lBQ zaZEAtpriXq{^^zWW1D%S0Hcl-HI^7DHxUJ*AsUWmK6lekrtyg+Hwb|}awpCIBQCMm z3-b?58jN0D8Z<|p*>6L-AQ4`u3W0jEibD_;=2R6Z&{Yv7En5997;IVmYe0KQd{ID? zf}AX4vTdsfAdZlX_{{}@PI&a{Y899*Acr=j?)5y{8ZkvgnU^NX1%C`nisFN7XP0z-|7wxA?+nzB80Gxl7 z-9hvconBK2t*E@Gjb##oVU_m(2Q8f9=TdBjwhF0TO_duLZ-a;&zre0`?$Hy2%QtHU0gVD0}7_e z*jSAjnxGU#nN9`UEXchVIY<Y5)up!1)Z>rkht2o>OJn#m@ebYWtx*5QfLS4ZAeU0n`MYuhhM90X7h~f67lJ-3xY z8?xWPEp}BQE2)y-Y#3l>^TjgSr94!5HYztMy)xiYo>doXQ9V zFcn@PfZ^bef?0I^*dSVoTNmWzRJc}C{Pk)YVe{kB=mw(8!lmQGcleV{VeYQG%33lA_xQSX|o&vPq-d2jESB z%cVxR5U9YfUq5PH;deGrP=J^B42c+65FU%5J3p<8izzU|A`gDoRwgzX(h?w}00A0z zD<~&wO`$aHd3r!kWq*x-OxW{y6(S)&cM8CXhF2w+1J-fz_t|W0Z(`T~&&ML&RSyXE zbSVMh&G@MG06cGfP~E2G6p8H&41$h5I(|hTatuLmKs`p(Lo|EaK97ydg4xV{<4 zbmkHrMkdkhkNqgJ)*(H9WIrHtkJ{O;y$kz z@m=(cjkJVd3n;>#8=b#$q*Rj(aiDJK@5zv5>uZ_NN6`EZA3>-N_7@8H(iucc%`yLU z)#X1N=)ny)eD=bv_^!=XR=9=#C$#Auy4e7bvca)}O*EJ@&TE<`!APzA zCTxa$O%MOU1Av@WoiC6~&=v~B#jxS{?f-5|NOvY{BGYj-t++2QxeBf&1}J1%7bqDd z37M0RaR*KAim!x#>N+f)t8{yf*fN%r0HGS~+3#eKa_ZIIJ^{hvrh(p}En|-Ry6buV zx{4-n9Y!46z;vRy2@6&x+j}_@7t-h3ts@!q1Q+nIdr&rE7$sl-@fdxXkmU4BFcO@; zz!js*1m+u@)jpOezWB7sU|k}>1X65hB-eY)aRwU|{N!SQYv7ym0aLjM4Go=q0MST* zgH}4uvU^i)cKd(p@ltS#JAcBcE zZik|aLf?5Eh&;NVw-ciu|BM;*uQ$gp#MUX(!v6x!Y5hrXXs~^!U)tHNK&IXwu*t~9 zR*8u5k~*0*&F_XLbF>4D9K9i zS0woG)v}zUPPEols?2h8Bhkb!tMGl&{Q{G1U{-Dd6u8l^Yg(`#E!_qqpESBomhy?O z#-VQ`x*U)X#b1g$g5N|@SiF7C1~>S3U6d~oDsyunuhY6=>ZF-o2Y@X z#@_7Haw-uM6xgLnFdpAkL_VH$UcQ+$FF@7q^Y6S?l@6oKjObhd1}z?Vl%IgksRf#f zu1a1vn^qOz)jMFx;!9%&oX7uv#-1itX~NZ@aG)Lp1gM*Uc_=`f+TiH`=BE#*r{~Rm zoVSI%pd~;;ZisHP+YUolSJrlWH#4+w44m`}m79ixb{CARS3sMvvQ0dvfu z{+eLKGflL~XKdQQx{E3O$YwoW`k=om;Yfx z?>{n~K;YX511@Xv$oJ6>((Eu48w$VmpD!&&mL$CVK8nU}tDp+Cc^w9DJX+^h-?>^9 zm=AcuvB%#if*K&SzI(^s3SCj$nPD*O|B-}0Fkp(6g%>tH14C&-R2LiHOTGZG+E^jv zc6yoUV6y#w=5PKglOAyi(1;1 zVYu}t%lVo+PTI}8G$<|5et)HJdG^~uO|%Lx#(>zD=r+v4t2HB6u_>gHa9%*FdgYBAnP0y_pf}`M^z^+u!;?Nx3;@O1 zO{=6 zZq8Vlv%lzrwj;$Qr`S&%iNOCzWhb6|^d&%>-5F8$q~3X%1AbTadjSL6I~RMxEy~`{ z1ndZ23MFCyjwCL~iG$!xsK^F!Z$tkNSw1xwEE}fWYlB)lsIC?N$M6Yh3#`z60C2a$ zK@)8CRAqi|?69^pp)Q&5T{7HR!)aOUQzA~*w2C?)x`}QZ66Ef{!3*k!c_yGMHK`d# zlb=hU=2feUxPu_$Mo=K!k@Et)*g8)pGMn-)$sYDvu0n&mMyNE*g#cg?J z#LvzT-!0JW=%%}tNm*dlIURM@tXGPqVH(Z5yOaVnkDW-&)xwgX4Yuz2IgrMFi(Bx2 z|8rB1nr1dM-DDIuJ(TWHn&gdu-MM`g?76Ajutd&JhwJLtcE)!9Ez50tzw5dlPO>b| z6XDSOzTyYYvz3JW_5i&wPI4@UVK~>W8g6SC0m4)5F<{)HKfm<#-nCYF(O&oiDYi8F zz_Q3+0DDgw$3INl)zt=~Ml8Pa_>Oan@H3sUk_WqIj%Nkg|GgBx>JpmW0&C#29j-mu z+ytqVntOKYFZ^zj#EmWP@KOr03z^-2)C96{c#{#W0_u*)ifT=K*WY_Hp?oVzB=PJW z`yR@7C+~rX3pW2?ElLnWmVXRV9fw#!Rtl!99>Xxfj0(Zw@BOwbfb$hSw---L-f-ER zAB*mzybw(G^?TW}0$E?DzgAliFB6O`b^xpZX4aeOD!syLBx!{!Kqr_Q$i&MYdlSZ} zkw%XouBk?^@BvBO@QKQD4ui{TCzO|1 zAgp$4D*P5>=##KG{ryz~2O_B?O@PO&H#5cpwFBn&O{;h*`pPTQ=pT^f`($o^iKyfl z_j_ge;hV1_;%(G+9r@h@9vbe|q}#RM^$BDLSN=Wd!2n6?ZN~PV6AZnIAEp3f(Oypi%u$nM~Uw|`-4^~1_`G_@BzrDIpU@QqURE2unJCQ{UNn} zdCg0UOHNTsJPo)CSz)CHb)eJ$U{Tw8<{!c^*AVq#mTc8hTZlmVx-Z$g`TlzzxSxq7 z$=HA-CXnVMqFT`0m-Vj^(aAx@w9;-F*Vl!_@15Zb+7g*tu`%O4<*-B)r@>jN9Izjk zK;X<=cAWv22ukv_id9Co2Ala^v#=m&fE6TrG=F;c6L4+~|EK6b@GA4Oo~si@kWdPd zC+@jO41#NL)Z8^_GdgmbP20RcS1=XR`2WM~%6=)8~d&Xz$Ms-85S0Zb)RU8(gZe$rcG zjdX@tjNNCm{fwBX=;j-{=^PN*%>itk6-{v5rZ=b82C!O)67>lsL?EC>r2?C<(a|nn z77$L_B8b|N%S{dnR|g`|19yj`tn<_z%PZw2<4xP;i%uH^eFNs_G`L(yCct@LNei^_ z6`WBawgfZWkady~geaiI2Y2vx*K&z~?i_^aE7{=$ZXmJY66-^^F1-HV;G9;Nl5CI9 z%f{Ewu%_;fFIQYS0@Nf=+P>ocX+qe2ci4trI(OAtvp-j3N6^EF`>s@CGWy%>3Rh9T2K%U#nxPiM@%3qw;+yr3HiCIVnEtYX~#!1An8>eF&Sh<3sy z3_AqOz#8oD$Jo-1_oHqQ<}E6Aig76=gcsOZb?+B$7ER@d>(9I`o`r>*D%g_!S zBHMGD?u&W6Q51V&s1Qou z=sCi1NfV{POd)lPDkODA3q<5cKo@KxI8+cs9$3GZWApIzLfbSueO>{ybYD*OTV4%b zK^9yiV~Ey)nTW-(%XdO5CshqWt98NDy=BnGI?FxYz#pBEOJNk9h-2pBN09$)EA7M8Tlt zWhApNkK7JG9|!?@oE;5VNdW2KPgZ^!V8?9MO&Ab`{_?m!~6YsptHhK~tNAc7H94vw@5^37(m7#}RYg=u@f*oXB~xbc+M< z4+XKm*$dQ^cS6Ie>HOb)n^z9bb^ro9g$s{=J&xiW{ZdWdh|CY9`}5d9+o^zkFLh1H zAfR?w%+yOI55@{O-8h_%DcE9r2QzITG0Iwm0wZ9UE9s6uP{o7T@RtD<(v=|puR51N_$CVc0~g#H}M5*ok^DN|LK2nyJn$A?Aq0y@XcVdshQ!BC6RD5aj9KgN?sOPLBs+v+h zZ;%Y1ubo<%IxDd+0EN43x~u(6M@>^qba=JKK=BL4h59Vvm;d&UzQRDPOZ+ zER)&2b~XxnNsJ5@yjiah{eY1U4RF^5D>W%YvuA#XmkW%}pUBANyTXoBdIVs8uGLTdVT#$fsX65|`Eo^ur!l*qH-K zf2z-6y+!)>p{%(Uo{y+1m4gAOS-(qa-rI-DU+*P8KiS3kll4&7a2y(*x|s%aNG>?+YePyr&|DX7Spo$p?dn+yl70Lt1ozx4?YHWtWfwB_ z)%xHaC_^GArNcmsoZ(ec#7CiMeb;={hE$CVb4`5E`pL1mN0YomfcSy-WOVc<_0Rkc zp@lPIuT_TUkoa%<%ZKV40#3n>jvN)S22<-%En_M$kGMR3snF;*$f6rU0MTyA7APos z)vh1^)c0UV--S)JQ!2A^{!;tEW8EuPG~s9q*a-Qw<8S(%gmmIYp^GU$|L3{{Er}x-mqZj#ZTqrm~xS^}QY(4A)67Yoa!Q$jEFJQv)gw;%P+{$ zjFN==_Euw&zlud3z#5EcfMvGRAzg+CYK7T)%G`BeE_9^-2hoRxawzCmNbs66{p|;? z?fUgElD;2Agg;#{Jen!{af4^%Ce7~?Q*ty~Z%F+XWD_-;4eC{bg4&%4ps{2qK;Gea z5%1V#dAvH(?>b=7z4>s3-ymU9lVAslEIG2FlF0qUgDmE$@`nqHi$<;&kXr{lct7(` zHbGqVA%NPT#I^?+`&m~f^-Q^Szaip?1`m*{8-R)7P_&))-^Y4u)_|T1NGu%Wjm0gw znk4$tpneOeLT_t?8$(Dwry3#fDYxv_Dupn?9%l zE6nuJ5RC3(Zg_bl{I9`*jLWiQQ`pL8eB-mwYdiIUR%t6d`eyomC#wl?HSlt33OAJN zbDm9Eiy(=w`5&WX`#?Y`V-mE4SW=LA!2D||1aJp(o0@k_{ZJ1UTo|A#sEf!KT%Rj? z{en~JfhPSrFZxM3EZ;vJ=P9)9!$w9}>c_6;sXqPGZPrj~^RX>R zlPFatv6o2rxC;W)A_$qH-fa$MXkVY%s%cZ(EJVTxI0v;AWDhjq496R@M6qEcB|N=63Z@L-6#q}aZJ;| zK)D#~to!qTD~_TK3*Za4PtZ3G4^0hhIqNb$FAxlTSBOKyVy&Kgv?uy72wwYjwf=w+ z-U-7OmuY_ZVWq%j^?CJnKSu~R2v}+tSTh>M@J`b=mjB80rQ8_SDVYtY}EK?IRYF|fhk0DW0EcuF?PTHRa?=cg(v%U@R z6IS1SQ4u9YAB}smpTY;X_^Ai_E?Wu!j9318IY0W>66`K~wA+#ctsROu1eLq6;~~Ic z%z9I?N~Yi%GuimWSQz?5=gveCzUAL?`9>cHx4q693w7|AZ8D4uYQ8K;&C$2Nc;AdT zXRzI)3;!&72DU$w1I1RjGrc}mZYfWS1`x8^FZj4vkhd#LeWb5Rzqc#K;s=A^uL(X^ zhJkDhe@(CYqA3FiKcw?{?_-#VE23za#1d};9i3DX2*mt)TkL2gJ3{>FS+V-{WVlMG>x-@x2k<2pEarELwXmMQc z*Mc2NR2^1IRiGmq!ppf}=>MOGT!JQd>~zJS`C3QZn>kGxtX@Yu_#D5Vd`Q{ZVR{j> zNh~NVdye}XVVX+eRAy3P`&3#V0ycRlzm3%qJ0Vu<{a47qE_GS%g_lmEOkYHM81F27`5we&Lr2D+(1yWmQ9*=VykeMmk3zDc%=_4jVbb)VsV z6v`ucTa{OXXx`f^}Re4r^kCBOfKM(LtJu{6|y8Dlph zcAobq5)9A>R1N-T+ms^s9YL`PyiPpSgUNt^F@@j-RabfD-$l-wXvN6gni9Y-2oK8e zKC~AgM>i(9;62$DH3YN72V1mAmI0(1?ycD@LjiQ#1}6z)X%(iWKiXLn9W3Y zf&IoHquqKZ+~%H4UH}-ByzBZqxj)ML3$KS4E)k7;-`ooRs@#(TZ3RB$^5{Sb; z=e=W$_#xXLnh3u{A&4sE$yF>N2O{oVcXlJ6`(ywflVxiR4lh*PTrm9x2oW2(Dr2R< zNX7#k(JFF6`8A^$v|NM(vj&AD(7_k*Z`eW9QCf~asW_0H5$XGzzj{L`2C&VKD9p&M zn$x%YH*nvfgv4u)xS=Q3=ut!jV;YiZdefJ;vzJ{RNGj^1UvRM8z2isRtyf?hvf=_= z{ESWT_6;O^(kPHA$R6QAZpVUZItZs_KplaZi!MC!FsiR==1ql!ih=a!d!V6X^TOb{ zml3Mn@|GAdU$)BX24+R$G(0UH}gq;0=(h8Pj zj*29Y$9PVk4oLTLr@}`Y_9T~JnDwUu7Rn1=Lz>&UoViw#jj&-l=oTIjdz564jl?FX zk0z|VpL~BEE7>D?LAo{1`%}Y(L~^ulSPsN6qZAs|jK}ko;(RHMT-+N-F)=tA{Xu?DaAoOrPxz ztdhMO7bl`Z>EHRuD(^jC#T9UxfiyUEbZ`#xA zv{=M{P@6gbHeBvode}2vxWgcA)I8rj$0nD(YBp$|QTc_P-LeC3WJPaiCW?V;*|vmv zb{tlGZ0c;CYhC~{Q>QQaUFxAp(30|wtDtO>3xBh9so`?1L1*$vqk|(Q?pc|Q*mqF~ z6aIJesmll6-7J@lM}+Ppl)!(*tOg{p3^gs~SsPWTHQ-K>{tIQ2H|FRn*tG3*rC)o* z0u3fHUcZZ6G_JH}!u+8!x$jY+I#8(AtkfdvXmgtBK`iCE{0@a*fLDp+j61_(5JOc3&+jH)+HShai(rs52?2nOQU%9@#2N&R{+5k!SH8c<@{B}@q zJwa2VV@Iy|Y&k&kjN$L&qSG&7M=_eFn7D*$Zw1%A_ThQm@1kSevneOlUjqcypBos` z#8pq4!x9 zT)jzvA(Ob@sIu@13*_(vV-9FviDE|bFGsrXJ+qW6@7%9_oC-fl-+~CYbv&SWh6;2| zY~OuIOk99k36Z4ON3nUh#$jG|* zY@xX3mSTV!Z4ePsjIS(DWzM{6`DYuGtq7J-6xq_ttJ{dQ#AzIpNywSTnkRwII$F2G z3ca~XOq$a_j3C|F2{6A2yx-bCRyFo#QzHZoPabc1dC`e7!#Q5nh)SZU$)F zxD;yggA+l>xhUa{u-w9ooSFbVdK2z(8`vEeVw`^1qyYosah5np&UL)4C2+JtmQiRp zIlegbU9|@xXK;`ox%3ribP(2yZy8o*6kFoV(R+Gyaj>u*g8NgJc@u3X z$hMkDrj`oS$rG;b_aNlf6HPFO2lSW>Kv@R*R*kce0D&G~(rL^=VbP>v6r6sj3>OuF z!;D2YM*`7&^uTBZ*N#9V5e_$b2e}dG)=Yqs&)T*}LpuFck)koMV|WbLOmdg{YUKxO z%>Qm_=JNE4r|<8VafcyJk-obIs^kFKpTJSAwhNh4Pkd-Zfye7cesb}1ImHM)P zwG|CPg%j+)Yc4k({*FFTEjB0Jy&$FQ2a|eDbe6N~A?7x2nFq5OkV4@IRfOhz%&f z<=T(&-k-Ppd*8nIEm#Gxcx;IHvyDXN^D!M2(sOR&UgFB_vS2 zf|^LiYqO8I-=n5CvQ16U{#v-L5|X^Q*tbQ}sx2MAE6TW&Pb=Acc08|&?@MXOaPPHL z!Ig0Dvd6^XVbF$JtY~zk)HJNG2q4x4c4=*IOKY zv*GCZBym^G+H8>vfD|lH;w5`XddEd6d@1>rcR4tZp3(w?pZ3W%x|i;_RfG%RlDDkg zMVZiVSRqEDu(4-fwcovjD@dU~AR-3asW7nO#4H#D8Zll8Po+91Cw8PUgyslexDWJ2~@dthgj!I)`elyfAgIV29P~YsqZS~Ym+ozp7y(TM&zNv z`PVm8*c0A%_n^x#J6yA#4hqqrEtClMQY4b!kGp<&9eZU1Iri6w4#(SIKzW26Z5wx(<;f7>8sNVjLpDQ4+r zP{fp}@Vf{4^lYon;p4DN-(ty|2Tt!`S{-`r)z`1wjEk+Le(wG}D{wVY>x`fe?@*t& zAG>Av%I!7nU{$o{>jJN1y?s7W_DQ_ZS-1)G;IpzDKOCsAyLWj_3$%872I&`b@JoCU zZc|5AMjYgM~Y!VP&CQ2NYh2qmI9v?ZAA0&fsD>QpD^ z8)c3g-?wt-e^_aGz59v)D>CYsRrx9!7IbeD<5S#y_qNJubK7z9-`DwKTd6b1ynG*L z>)gpu7im6fTKUQs;35rKg`dOEIUxc|?NglEle&og`nlg#hldQ9j-W-4g6~OTUmctb zcXIiEcWqTu1-TR{`L?M)=*U|UxOa@VC_uA)H057u`uc;^BffL4oOS51|6L2s`}RpQ zt+-YIr4a?sCVH75fCXSo?x6^kQkTe9*CU*K2WbQ$H-OM!>T40LT2>z#dWi@y1w*=k zdJK&=*hNPRKVWq0-`IzWbol2owl;me{^)kN8ilffVPN% zhi<+OT{Zzuf-t-RigYGSA*y5a6LTkJ-~vMRvSM@&zW_)ep?8R8jz5Ba>X+ih`$M+M z?!4yAQr}T}=JNEqBUria+_Wh_@^++7|X1@8J?6m0uiVH4P!031O<@Gc>oFgXn5iy#v%kSy5Q^OJxACo=biz z?xuJZsKJGBuZZqw1coVRiP|`th#kWtdgEc;`)xI$o`bJ?OI{Vw5251Cq;RvF^4Ijv$|je6(9dNbqY`ncW*?{bvPu4?xJsmRX3a(g6-t}>;pyClP?o73>h`Wy{@t~w9d)vHvhi$*b zIdG*x$Jl0x#XLmg&HnToBR-Ncxrt{qvu5*ME1@ycam8t6L1_exE*AMa6$DmkOuxDd zVcm4X4;IZ${ot#q`=|I}Etw#gRnePD~3 zjCvGl=2D79s%z&Ty#c-fg_mphQLssopI9EhU6t&eMwktG8QtKghBT9O$ubvr%zT)) zqgG5DFi5Sh&em9Uy{_ov&PNicJE+b`Nh;JcdVN$;mzbmsz$9)iX&XP-eoqGJ19#cQ zX7%bV-B-_JjOAW3@AfG#N(sJu6)zWl-xRx4{{W9nAkpw$(X*6;cT3UfG(&2|gVdRJxMZ=WGZ0%Cd4 zVS>MPM=3Yw7Q;6-)EU_{m@A8>*M0x7g4d|Lnl8j!J5<8t_BNl=6$CN8Z=?3yJAhBr9o`H zzhep#9}2|F%8xhNo)x_lx{Swg!uleI1aBq6ti+OhHM&gc?K=mVR8WA?Y(iBB45jT) zZx^i8$q;mtINhNyBmsgba0@^4+;5;m3xf;!Dw4j0Rnnz4hPau-DK>7zspdWaSI7#U zWqscXwMfN$D-YKPOJT^M}nu$%B>1xchUvKX7fp zLUS-eW#f<Bn%9&j7J@_O# zDptx%(5ZN~ZN65m3?Bqknej(?`nUHUw3$AydA$8msJtc%#60;TUOeL2F6YUWQVilKK+D4~c!s zzi#7}a9^tM^+Py%U{uK<{oO@1`~E_r25iPlTOi+T9fb!!t+0cu^FfbO(}0ho*py{b zk^wc*0bJo-eZoyf0{ozR6MAh2j?i+oC5#~e$?8M&KRG=F-V)(A6b&zVXkQ6@@B+=G zG|UzW18lEC=pZO}xbM`UZaca%*_h4>k1YNmt!rW4N%2*BU>z(EO;LZR1g-ye%DFaW=wwLQC;yqz1A zXmV5)jopA5_O(-obtz4%3BQY2!O{d`H_&Qz}) zMgYky%_r@rq$1={OzARfA2PhQ4%GBMbB6ftTI3s39sm4VP270Di?%jFOvr7og=(P; z5jtm<_hcc%(yzl7wPf{eII_Yg#k~gMgH+tp5+f^VB+Qdu&`#uA(BGc_b)AxyN6fi_ z*#T6(O`)|}7P@w#mUtF^h-_GeWV-TqX}+hh?A|2yG5XLPsPfca0*iTjkwF}0QwN4I zHa+;DL@piS1;cy&W`qO<7Ed?xKn~@l5L7Oy(b?V`$R;Y#IWi{xJ}m0_%KCm+{D@y* zwwZek6vUg)C?Wn?|0xpKqBGK zpSB$>riwN3OGP5qJEU30Loz2Is-mrO*4h$5MLnwxk>-xd3y<{KP)Fdl8JG*nBIJCd zyiJ?tYw_K$n-e`$D_%v+J>YK=p#k5FLJY@S^Y`C(7B2hRfep^Yr7*>8r}%O3>bucF zvdxpKnFS9;SGudc+^(Mr`)0}KM-KrFGD+$e{D>A;JwuocWhxDptJk{4 z^{M0g&dKIeY1bR>uxUEelDc&z`4gFCRUWgiei(Xa;MkHZDNq?RpH`;kJ?m%}ICAs>ru#?3nc@@V zOI*LZ+Bia8W>Br53l}r)kDH+LJ}jrOrdzMWZ-%U4E;<}aCdS|p42kBX^=#5a0$$y% zeK3{;om7Eg$n$|GCVG=VAV;zo*q%}NqwcSnAu$*_L$_WIRcx!3A$8|lDBw!%iS#u# zjO%x$Ebx1jCLP@&xOGnp7c#>8WVLg9#BW~UAygrEA;~>ZbNGCwsL2kxo_nTH-at-N zrSGolJSn@_wj^(zxoeN}h_#!-23U1~cxZa=Dvu!Io|%p^&xncU8ZA~kxY%*Q+NR$_ zNJf z^L=6>{8bqdAlD}p-%p%G29R=kLNbN0OZpgj40@t4U_IZTn4sDaYUf?bim#E&F{;cu z5PvCNzv?(!Pf(6*Ctu-cX!=ZWX*R6^CIU^=dMX<9V(#Z-R1TtM+oCb=iqI9Ip!Q6 zCMKRYlkaB55jz99^-QgOO%MtJ9I1U}(0cioIwHEz%#Y(S^Ipo$X)!Y{4dvRF4fut{ zhj^gb(j$_`Fik2aD{rTb8`@m)@$ENeyl`_5CxHmxgxGSJ_jLg}!v;a16^->fng@^~ zc1Tf_&8l}Je_ljhT>5t;_KpyQ05Fz1l3U9L7~W@ldd(qC$v-rhDj$$^49KtHM?qb^ zkb%vtlZ_}17+yJ*2;5mq2+?H)l7-PDxpv&$)R{E;vlp}pBv;9C^ET8U?`7HGpx<86 z){qfF!F=^!fVYo10y9h;Q|@cY41dcBqy39|OiAT70el~23pb6_>x+JfE`B*LmVyo&?Z#ob zCdBLlm5ssgDT*J?Ro<{#BhIZXH~Gv5?wGi{?Iw>A?byT^r@{@~RP zsBX(uCxk>j`u@x}1X#u;JR#+U*G%)uPtXhTQT!%u#)Q0Ac@lV~T!B#L7>e4$a3iG- z`0Am7>Y(^~U8F^0tO9fiUOvt<>Ss%SE^u>pu|;mW@jUUX==H4yu%Hj*Pt|AW8_n#i zCh;F?n_>-P3dj1ef3qnPx@ z&gsT3W1Tp8pR+sc2T(<;R|tfPF~XSnUZwjHIPa!m_h!Lk34fTZwqEdE1#GMEjgrf$ zg*G?jFxZAD+9@ycY0)nKmV*NW@&lA2FLB3P@?3BF)&5L+t}XGMcZ2#to}oCtKuY4R zxzPRd6;!j@k8UhbRr1Ss&xB_^)7VS=U6@Zk(J?vQ_o_x}VC~uOU9Kj9HxaMkYPc6E zQ3JKqTCKPD@z4#nIfh#3x0<@nj)Z`7hut1leK{=1_Dm41cs6bwFkZ0v#arGpJ#`l@gNc!)yUnz@XYe%9>`**8V7cqgx_nJINKMOb;Zf#qm zj2&ylT?UnF0(5vUF+67-5Oo+`xWDpRe>x{X$72mdEuz%imBFS3F@UQqC8wt1?36OM zQfec7Fb7=e&8?UrH-^_VB13DyRb+0;(d}{qMnSPNofd`)2EgwNmKOcgNYL?oa-8_Q zU{sj5%Ws#DYPH@}=NzzDf!1Pon~o0B|Rqh(_dbt{qFo|+^?36S5Q;`c{OFD;Ydv;>c%_R6oaINh#v zp*HMH0kHTgS)lKkoW-f4DNy!LJ#obon<^+-!{;2K_S_%8^@B#mm$84R1sRaw5<79g z^z?*AAN^OuIZzUD8OzRhKxe%XKqUN4MWAzQEcheczzkpNZj>{Wh?CdudZX9*(S&RU zVZ{UfRiVs@->Zhh$=!=K5Sjz}5;+jo`4}p!8stA&y8kX4a(u<+$7G8p0w2}!RGGVvl0vmKaNFGloA2F-N^t<%fE0T|kL zNfyW#{NxtS1S||^_?5oYYU^F7%kpen+-QVU=yg;NM$6#wKr{epK$gFx%M?T_VgC6X zM2+;Hgh#3mu?nv$)RapAXm~VLy{6(0M8J`aMOk*94$a(gmLogn-HOa;^g3L~YI$*j=PGw2d=h<`C4W#=r8)<)4Y7AJr+57-$L z$i4)_vR9SlibP$&x?KwV*PWq~CSlAoGK3_RgxNTCZ+Vl^5Car-jFuV<^=8GT-w~-z z_V3f)*K3V5JZCFhg1 zwSL@lUrs*2Sm`O^B{bdH{gxi@Ibo)_!J-t;>(YmBjS9uXy>AcT9A~J5CZy5Lgv;4Y zhc0Tj{CzW(&KH1yr+oQ&JzD98Rb-~tZ5sq?IVvBJDbmipInI`f z705uJnw4jDc=6vcwv`5zakQe6AZ*$QAr=-4I-WE#B%85|AL;c3&XVSr6H|-;oB|$L z9)wx{wgh0S-o2W=Vb{9BRpjuLMtB-HyZqyGz7E9^;sf=ZXO}KnWJclF#)%sN7{tS( z^A#PBY`y+{O77p+#`@_z#tNur8~gr|>V2+D*z?Y7eQBY@l=z7Ka_DZwx&r8W2q6z8 zaUptoB%~c?;s#rO$)j6*P4FXnaGBf;w2lGj#FzE_1|lf0TBFm#_N`&4EdKPuhEr$e z*Mfn7*qSSP>A$n(UQXZ#xc)>$C|A$#dIZ;0<8c_-zTt?+MyIkDJ`c&c!tWU9y1^)J zudk`dhbakwB9)`)D#g|;gR=JYkXXjM*01%?*~I+#mew}z_H3!wg`${bLWooZufMq3 zmcq#|uV$$d0}StLBXIyC{qRo7up|I^(W=6a-W?CNfDpN~>n-N4G>a>B;qJOD7wOBP z)miGKpVLI&O<*v&vF^G5I5Kvj*tzU2d646#rGc^`mLG(_??r=7E-u{?>znUc=S zOx{P(;MO{X1rSk-i<2~;sX5&-La3u88gfp0pQLNQ62VefkOl6722nyCVWYg1qaw8k>FxI z6%e2yi!59QblRo~KVn)XFQ#~aQyqo&S=IyY8`(X|#5^nz3_Di~@_5hM z_l$wHAdJdawx@Qdx~NL-K~2wM{@qBXB1k5;ijVe)op3?$3FjQa9HXdd-qK->S{|WN zozlm0zV{m`yvERF&@-g*-3KTlk)JUCA>F;4;F2%|raVEP5i}M!IJ5eAiq=Z}*VogX zrg-06VDpCK3fV!epd4oF0T6V=lmRznwI)lq?NI}{9F0-;P^;#FEf7jzNO;9->1tqL zp(CT!j6B}cREF3Q!_~X_I0tu!AK0niKagLOB%uL_V_W_(qXLHAfKe&@Kv6E#dYIQg zm+fKV2Y&44@$kw{#vZ5X4gWO~zim}vN}PdWA9U}Iu1ej}yB?^31P-E@8@?cjB~6F| z{_ozOYgfth_DmiO-y1B`CE`Iw@L{2kOwq@=2Rl&6FgjWF$zVWOuavbAHt3=-91r>8 zQ}F7QPJ88D#yK`!lh}dV5mL=SneCyhc99Gt%Uf?H54Qdg_Q2yy^8>FFk}$A+)Lb%e zE8$+=4VLjQQj~d*U&b5H@~Bi^nlREk8DM1C4uF-p`h9`0haV@T3_|7aIRl!RyeyPd zX=$zj2UpY`PTb5iqFe}*okWDntdJqI`HKB%cUQ4^eTRVD=p|Vd;R9N?t51ECXSx=l z>$<{&QHI-1jgb7qh_d|~J$dXeKJrOJy6Pzz(w9l-H!Z;ni$3hIsqr4{5u@ zI}$PV8?yD2^RZi+UGt&*`XEm}O8Z0>VkN-hsrEkVl~4`?BB2Rf)2kDx84ldxJ7T z{N4X%L!}YhNQRKAmievFLs|eK>cItin{~rBpjI1EjcsQAEu!V$4r*br;nMgqDUhBP zMTK1u$mGZ3q`<793B8U-ZbaU|SJ|bWcfEH8tP0Ar@)%KE44fhRo%=0Wp1;AMKl)bduwY;8BZwU2AeMBl$-0o6I;q)flc9jj5H_|nyK3~QhMDOhhA&(T2UfEV^tP@5o6Pidd(fB) zDzr%7ckRm7VyVurO8FQm|K?ubwc0I;-j`KFGc@(#@5GR6d~U&(2G)f#PpN-QpH+b?e+9Y)xy3XIIg6ac0t=nmhD?N=!I^bkV3%Z-cZ}TdMttn~ z`;3YlXTWO#Stpu7IB|(P1aDoA7lL!U%pe3_0%E-j`9#`3RFN)s`}%NOg7-pV z5~0!G{-OUwviQ}4^!`fp{CPp8|BAZ8E+flHCv06UB{4^JFRoTpAyZ)FYgIL@v5!iu zWkh_lfkyJAv_9_}%pJVGu)boq(zm9f2t1`H)W09ShHDm_B>WApz{rhpQD$K%zvH!i zyq$Pj&axb>uRh(X-*+whKpDz}p8y)|?`FUFo7H`q1l^L5Vj8(VuCL+8&l_oKG9PN2t!iyKdKKks3MRq&eyZV{k} z&zJCCFM#Iv228of#Hlfq)4uQJ=y*q@EXC(i}}^Zz*FWMv@zXdh`a&^xR%9 z;?li#)j2MaigjWtsBDBs^^tUz17fgJm=Io0$w^lbfX1J#fFh(~H$4IOq4P9>pp4nh zZGKeq@$dWZ_X%grJGkNM^Q6r3)ik^h!L#@(1BcJoF(ZnQ1*p$yOK1DU9oQNJD#Ks5 z*jOhk6G;>ES0GE6S6hvp65~fbHI14jWH#IaLQ~*Op#QRC1W?A-{_S4pdY1Pl=FM!N zH`1Ny=b?aN#*6S5VJExMJP_97i|Y{QB_G0Wr`1mf&wc5OMI~NAl-!`){N$H4GJN7+ zi1UUswkK^u8Cr{l*<~my@`35C8sFTz1CFQ#{xcfQ@vOR;um@D(sd?0hF^~F8cz~}K z10yWU?q=w}Pn(QjdCPJ}92uCgt;`1byt|U&)<0Qpe9YY9D-IWu26zW!nifXrrgHRo z>~w{CW=KBOOHUye%|L%2CaHa}tc!+_^~e){oQNp+U*ue%_2Jp($869K$e3mtDHHuA zz7Ce$$(LuWphMF)n}(=-eYx_%h+NSu2=73-y@U=X52+kN>~S#J1SK{%z6^uT9!a*_>^^78rj@xWwQ6kbWjtrx!nigcUfQ_M?Bo z6;AuY(wgF4miXIA&dh|_VNqrq$y4Kq@L?7owJzXYD*zzI&+m8BOJ&7KEp(USjJV%ls{Fu?t>@4zKo}u zrOVf~w$GsQgDyXDsA>Q*#`+fC_}23+9yn|hG-n%TCx#$6fr{7GUYB(2BY*OSjw#Dj zk}fE{H1}u9=y0XaVfgi)jIVq-=-*)|A7CTa*}5s(Iga%9TtdHAyNdgMKbP5jml6Z-J;=+T?%)@R05e$n4if`` zH=~$=%OSV#{aw$e#dbi>xcz=n+ao_1%&x_`u(U)U6)kA zlKHADn~u_1MMxcq08ZGis>x&t$csfOQOYEwufaf(8eF|01Et?ZBVV%z9tZM-(i(K^ z>Dn6T?c9cuCnmF#NrXMn!iu01=N}FsdU!ty2u2mW&Ttwo;z(HyOSDoN6{wZYDgDr; zL>fCb4bqs$k6z zO8I;8f+7ZtHgBK` zc4}^TnzYh`69D6k@$}6MN;JUBghS$m(>GvvNS zS!E}*EGQ?=FI&bzq<*cJL@N*mBSG1$I=37z6r@pOL3-ZSS2p;87QJ?s z8}J{lA&CdY9fZh_lVEo`et)^u|CnMT@4pa>otWJ>JZ@YoB0V#I4P_aShC*&~6lCr91I7%ad0=c(XeBS@lzq=@&55^p8P5`9 zD?C-kUsa}m)a+R!+p83h`RTyPn^Fa(!f2MI7v`D$CGff&0;Bjr8c1nN-~&?6N%;8f zy{0^*-v#KPnKA!$^wZ6)XP2?kiClu{h&|l*+=wxVPMDH!-vGrL$v+(Tvg*@JDujet z^E1la!aXU$gf=!H!nwZ!>6S*McC&_mEjZ2&u$*T!o76YHL&gjfYjG5$(QjY|C0hte zdA5Hu`GqO0bv#U3_ccVup((?{!(9xbbaybuNi~LKUm-|BZr^i0T|j|;__7#WNmx$* zW)lN=Oq9E;-G%kt4L`e*teE-+Mm6!>*o)%6L}Ar_30PA_*!@CNX{S*@MAHZzuRcIl zPwxXmdFhQ`P@lL61t!s`QSa>K@wn5v)IJ~bb!=8!#3v|mT9Ph2om@wQ$02lBiPg?_ zI@ODU_ze$?!-Pc8y1#(I%Q^`tL*A_`v^$2oS#TUNj_@wNDxuM;d;%DZ1zZ{^Kj)RM zzvpOuJ|TCis>aMfwP3=Q-gw=ki@z_kPxDJy_v7!g_@8f~W=ar{JolaoJvUk;ly6Ra zn^+W27ahoz*t7fMx^*(Ed`dNk(L|@X&RSWZ-gJ_i;Yuq&@lk zOP~~6829f3nu7q!rjs&0{_owu)vZgEMXq-1MOI3sO2VsEXYgIWYEm+{$o^vTtoeXg zxi453x(UK2phF}!39B~_y38&;dSL|4$al70wBS6+OO7i!KHMfRSmHp>NLrHd{QKTq zFvG%lN_d}e$8zVkfG;yHRj#>VE5cjB%yUzds{tY=5PX0oyhXbA{9Wc*3LlFuqnWlQ z^e2EBKX_0qEzZ;44kRa5+DA9YEQbS#QYqLlqSuWF3bO#O0M5kuti|lboFSOgm`3?X zO{Q z=7k_y1*?(#cIeus!rP+PZoRyC9?o&`2cgeC!|Icn1kZ}Sc>r&> zph$y(`WAq}2u~Vqc#F18*QoS6PCCVWulu@J1XziAcR*e*DW^xBmw*`!9B>r;0dghC ztsj*BX}j>N8=euCxO(L!e5>7AnTFEb!mhl*97!czcW(#NHe>gDI|rKd())ml*Zzc5 zY2SFXS+T6QJGz3_vDkNZAb0yv%f{J5rx&h}ewBZ>6whCSiwkf^Lz0W7JHdf= zwuXuRW?2ymx+q!RzSO)1(2M@~n2brv<%Qa!5Val)O~w(ZvjHcW!1!%Y)fTAvJT&+? ze2rz%?JWuOgJU3Y?|LSk^*Q%Ps5{h5zXE zDpzXzHlU3PO63IGq$NZ1q`;5k!+etD@Hc))sdne*S&iY2;ga?g8f>eB=_)d$i9hG#oGsTb2AH4mTpL zi89m$Z=@MkoZz{Q#M^dT=Mg22!REV)1l|-73ke0hXdbKp%#6GWxT!vj3j*p5{{87c ze;=uZ8DK4wxIz+s41Cc7)L*o_r=LPqKS$58kh&=F+QP@Z=hv&CrO#nYU8nuV`8Rlb zSPsI##4VK0vtcZq^cxo`^nCsGDo0B!s)~<7G>qBWaD}>pd&Kf=iSnGYg@I~%%;z~h zw$%kLEfgM!mbQF)?oR-fayWP}kR|H%)zq>9W1PBlyQ{H@HqLhYO_Kc-bQr0%W_+*= zj~8)Hho}d?1RP{EBkdX}wuho7W0sE@iMS-=v@G2-5dV>cw*v;gJ^T;}^MxMt zuKA@Y$X?{e^!x8)fUw0(iwcFi7DJ^}>y5RM@6&>?&(_dM`X(6ar8IU^X{@x$9CyiI zy9Q$vl`FF6Yfz32_N#uTL-+`w@a+2)I0W7|d|8NL7Q@RV!i%!Ob{s3x_zaVBJO)lX5Wh| zX$UsI_vo|m>y~6_#y)zL&(CiuP+5icWXUlSNtBBg?QS&U3eGKMkU`Sw@%vpXU4Mmjlk6mTlEui{nRI=(Zmj7_<%oxWz4P1!63O zCD%kA-nco3U=E0_8l4ud?SmG+^*RFi>9c{_8)jnLEd6VsSX%i19x+}lEIc(#$P7c2 z+4_yfCD$zr2t%R&ch^jxjB4gC>`Rg0e$K4Jc?L2nbjIh_Iw$~t)ch0dG^`@|dl+95 z&7=SAffI)3fDaS?0qhXkIDybKJ>^C@bV@BvIX$xG`s_kne1GISca__Kt>%%WI)DBIM5HaH=j{~5lHU*((X%NoKhCu#zFPj)096BBcx%dN4f10E%0x$PEx# zbZc7x7k1%aSigSZ_xBMsWO;v|`eCPMK6mlqt!4NE9XI8PLJ`w2c1`c5-hMs(1Qxqyqn>!l!(h(sR*&bK6<7s_M{j1kr{w$@~gUjx&R!D6fP$HXm z4tk~Zk|U{3!a=fY>1~Ihw01$%a|~Omd&R~93A1Dodge)0DNWz8=$1c`XPjbOa08Z4y`~R8Xkln`&X@0iGXr)*6{Gg?QbbzO(!19IG>{MQ=g0&^mrbk!rCweTbHSBznUTfnWD;W48#yGu$IHz( zWc`2lCa=y8@;pWQ zIaK)nOCshgwhCZyj%EP+R7{JA5Rc!(&fkL_raJ_XNH2?)s0-G&o+)9*mme^))KVzX z#9K0;6(fQ4!_1ck_8dHQl(B|8MjX9=Jsv`_=`JdrH1CdGx*qdsvdT;uG;{gFGn_~s zW_-|`c&CcJX5oYRO$2ySb?V*~Y_tk!wnrM=WGXzJD!y^#vVj;JnhXFK4?!lG&!rt& zOaQOF=3*|++!LX)L5jh=*HrSzHCc1u8=Dg+MalLo$WE0^Hj-@QUx!q;4IG=NNW7k6 z8lf-0@ksiXA9dDJ(VUwl#M(X8*K-utCL?U;+s5ckHhH`O2~rMlann$j4IApKywL`P?SizYW;?FF6#Vy*kUq%s$+kK9NM z7^{jHCn+$TG_9#$-CI&q-4>!#S0dsy-J%!EIw0z7v@*6}SG{mvhEB1Y)__|>Rstf1 z2ZjPHI2&{nl!-@@A;ADH_)vd_YYMu1)%TuW9v1WE}JVU9xL%x7M8-;;!j@VvZ3 zRr}@qmmCQJz$%>qsJiKr;IdoGBBx}jEF;I6tWNFkw0uZ)ptEfN5A6P`sy~3pi^1LeYL0@O#o9 z_CcH3{Hoy`&J{E0vJPXcHTu|gJT3B)j}oM`kRq0*TS^|3%^6~*idkbH#cP<&0qtWV zn=y~m$W7VmEnNmXvr-=afbJGh-E9exxSQ%_Rg!$%p>-!w^rPjCz{( zYnelX?ar~CC-orDG@g>lEj;}Sy#t}|$6@rw>2e0W*XC+dgVmZez9qo7FDe$t3^&`n zrqs??+gHqnv-S(0c}l5#+?)^S!`ttvI^OEtohQFnC0Xx}044&c3HBT?b3j+Urij*# zG@q?nLA2yad?}-E zav}NwP}^Q1*!1_C^SG^JaQQMlUN|+tYCd7QfQV0|Z!qQ|)2sdPtMD0)+^NJs+UZ9{7tmwNYW{h5oPt z=u9dMNM49gCF#x1x>XuXlvaKwsH?=xwH}64{X3uCce>j?ACPngMADCU18vJ#Iu*r| z-=1)>Z`W5_CVrqK{d6~^yI?0tO;-h+&#ex@0?}#ywxTGUN5d)n2UBrLOn$wbi_}v6 zkoG29DNmUZgt7A;<|tUwK<`++nTgql2gQ~F6MOTYmrtWtlOa54sNBl-5TM@r3@VSAC?Ie{yD_Og zdBdtwr{p33tMd;ua)UXi?-?vK95{u?U|It-3S6)p%kWVcggNA@*q6M|fnb9>6gE){ z^$L{kW$Ti5TZ(Q>b677d-vBy`KAr5^FKF#k^QOV5Y?qV%Td-a#4SymMRo0VGw#C`Y zgn7@*__jUH1YPu-e}C~o+Si-#tC^C%(&S{~d$Sz;8rI1B(QS^sWW@n3?iJgb!j0hM z?@J1FL{M?gAXk{NdV#_QB91J1ZK1~*;J9&-Tn=6!otcjrE2QaEtMju?lk+Xt(UhT~ zfK*W={qJYih?A##G+WC>=UlxEnL#*;Vp+!b#@`IIx)dOb{cSAZ_pz8&V~A7&^LAOa z;_znb4|~h8InKcA9Y7rIwYE5<%j;Qobf}p~)$VhL_XAME+`VU1ELWhCjqF>`q<1qY zC)3j@l3+U~y-Yt#ZR=FRpM6$J13p9`q-Vzui0UdKHVA8<3^;Vj)+XVE5CY8Jy2@Av zpz*}&VV4z6GjNYJOOc^5Q~>jOu%P&HKaCMioMwN>k}1IWp}Il^4dE9ZLHAeACYG-a z=#XdQXe~Qo)cM+{2GRhQKp$TSLP9D58@~oNyc$c#;{zi!xq?qOnk3MeFr?vQJ?#ZZ zUc7-HRK{?>8$IiQh-{;%@#`(YphYoux?iAzUG;i9&26d!o}WeB1cYRc->jPRmQ~yD z&CMi}e1kYd{3}Oc^0nm$t`5wLLxy=Feq_#Xu{&6!0Eqlq(lNCv$j1Ve8Fl62e1oVK zR9zr4z>4M>O0Dzg_4%Yu7-p@@duE3Bd^MMRWxWs`0EK|ntf?=_GH^ry0WzcX;}yTK z45;gxWxNZ%0Jo^xKZQK7B~C>d!F*@6v~F6tQ{%`q`uqGgoFHXI={c@o`@V-{NkZuQ z{Qsi8v7rGQ3O`~Cxg8w0GZqt+s8qM2AL1;O*G}y?Xx{y**?|+nMafu0uYQi7Iq}A_ z;(%Y^57W1fwiob>2CdL+C7cv|1yU{_s8b%}tNO-a8rzU4d9h6*|02U8e)a)_j#5L? zOYQwH+rq41E<#8_V~)%ZHNK|(W1v|N=6abV$Ecv)BSOsM1$I`l{DMf$zC3@q%<_qX zX!tNAtevm?3efMHNeBDQeN)yO+>0W{o3?wn7XGT4*9XGfuq&H_f7Mqs(c%pe*m2Z2ST>g02=DWQV@svI=kyc7 zG|%Lyouc#WN5eRnU*kX)<9DynnxZE-bjcKwEuZ3p!yn>l ze{9YHJI9_=Hl6UfkRmFZ-N78tgMU}yD&;mUSC#HoJnVG=#t ztAWQp(i-z_UMz6=tnCFXNK3fTE%_c=E23r>WWdtefQ{L2IOE~)Fh2L3jA9j$_FEgc zxW_ke7!1dCMGTyEJP$5^6kRJr|MJ*VbJLMZswPD+YBbcs8CsFIM8UJ;?$S&VCna zC@do;RSUQj=q663lJGB<06b`qCfLLcK3XD{yJE7t5@P^3y{=6yfQ%;TFXLA`u3Vp^ z_k-ER9Zj*oW>K;?HMe~C6BPzI(<}d`7qP-_BjOy(0Em>Rk7g>EF=(=JBnEx=7=M_}Y@=Mu*4@A_2-HI(=5$ z-#)}yAkJZIJ9Sj$W$P0wn5X$_ZPl7LKO&r>z##oh@qo!x0`0tOWw+yF%$7&+teu z7|#kfg8GvN%^R+aO?4${ir^lRLH-~GSH1NXNYt`~S{S2s=^?!2M< z>uK*hZ<4(WPf+5Clw5vaM&e9d-iIgLAMp=$z@FR2V09x&PY3aJJiZN|t<;wuWnGgS zmMhQ9y%Bz55-c$o2AW9z41mHYy8GBl+1M$`Lazbe)^q~iL+Q6$j+L`3W{_m0yX-y% zC*noy1<(ak(% z8+CF)-M}-|SHW?`IM|*;7JxQZ)iNAvl_*`j~a{)7nNbm$t+aN}GAwT(2pfDh}SpOAqrF)|Su8(0#pz zSY(do$bQ5pC+r25(phfFZjm7!^p2pAj@aCPGgy97?FNb9V^oUwKZ~86(fHh-0L-Ca zk|?x|VH05W{&LhhGS?lEQqTRmdByMIoZ44E=`NS>n|%VRZN3e4^hRgn>*b z={8ULWT4bnekppr$PM4gN!TPHu4apvbEzL6NcWLUfV)8@{LHfs>eU+y5i?hvk(il} z=6{6Q@>GJEqGr*N7!fjf6<-vRR-9F^k@nVjF#%*L-cE4YxvxHpd)fiGg18bjK=dG7 zmV0vpH+?l>OX{rk6vhhSW$1s;&3|3rV$_Ta2nNj1&mAFl$CP$O+J=Cpfn681Mthqc z7{k4~AsF^k^McCS6kxEino~0sVgAJPveb`m+X*Lgr((~+7F~P`2nDcqYDWfHqKFE= z#s>CHBYx730|}Gy*6uh)Mpkmh?|CPt8 zR5`poXP?B+&P5Ng=m0`-@uJz4O99zzfR%#c6RwCQ^DV6D?RGDbqX2}R{LTZf6Fmf{&cw`fxd_f(@#)OI~4bAtEnVu3^mP^FU@wvV6wt6QW z)?~p7vTWVvx-Vee5Wg0I-lSkdtL8>?Ez|5R$|I$ zr{>PIWDW+8uQQ28lPTK=`X*zbz3pk)ZpG?-pjLyL25y@k^y~j#78XIlR0nk{Qc?%x zfy|Nv)<4{J_;*Nt&=a|FXr|z4{3eTff93&ckTlv)YA(%Q(oL8IIQZgJJm zSl(q~t8%1>;NKtJi0SY)6DFMl>Dt@S97(-(tbRFq*g^|B{RF1q+AuwuLlDOKq=554 z(cC?%ytO&^nRSz6nSMZ+wf%c=8P@f}bpV^8J#?z)etMGToARE$=kE5xr>@J5^52g( zhjR+5;n$PM3H(iFF~D`m$gnLDo{w?1Nkd!vJ5^&sbZtXFk@)&Vj5f+zomqq+QdkMJ z7Qjfs0PDX~HD5R~fFMWWHs%eHF!Q^!A^>WXa1mo#!Ix#V_`^JS;J=B{vy=^Tm7$jQ zT>fc%?gkI%VWYexKicp;d0A3S(+k;**ro)l5yTQoXG!Yge(hGQzR4>@P96V2xZPTc$nx|XjFWi&fKbx6qdz*T85Vzz{mlWgzSeCS)S8B z$%gT{y@K!C`4UVxmBwD1n#p{@@*A|f3Js>m$@=*eKO-D8Dh=NP3WK@99%+QQ7|q~L zHM7IEXczehx)#j;@()ljf&cslFzXBdzx43@jQKn5DE}#bcLe(Asu4+b?a+k}^Ma3$cPyoezgH|MDuO_-$t%yigC~*CayN;rFLPhV-8$72RLZ=^3GNTIYKLCz^N2C5? zbmeVH5KT^IB`u#QjO2pECA)8dGKxWQ99JuEMlCl8Y_5xbeH@vqtVAC`)3{oo6?k%O z03KOgNc`wPIbb~kdnbh*6M(w0G)IyY)QykH94lDr4U5LGaBW29$sGJ!I{k7d4{{5p zIlW7X_6z~ZT=16#F(hIai<8L7Too}Fct1eJ3{y<%Q{ld*VRzgR{8L79E`j}#fAEdr zjv*J9FNwt@$Isa0=Zhyk1eG+W1GC;@*}-K==d;E7wF?90T=0`*b0D^eE4b zI~E%nYh_=gfSeSFB?ThdHGyA9jYn;b zEr;z-MXRetogq}jcN6U$;z+3kb|b`+wT$sffsiL6NV^Es{5+;dB<8OaahQnqsz+dW_PHqW_W-V(EoSrlfq~K^6V&6_D6!d8 zpG+NbBumJnulV6P-n8&~km`O4{7hf60 zlt8)n0;48UR$IcfJHV`v^(bA-BJ7(ifP*FcKV8R!y=g`=up*5rk9C`Y8&-T6 zz}Ed&Fo6=ZV|fRB!p7+Hv+Yj$+i}nM#dYM+a$cLYvcdp+&yHnK&MS-c-T5yV@6FHK zl`VuZ@$;u&*6K9h3tv0nyBZshl5q*dU!c&XR<`!YLw6+x?JiAZF^9nJxklOkylVUH zOu)1eniWXqpa8hX>?@PS7W(l%vN?*I3CNeEi!^=iOgpiyn`$ZvTs8ea$3c6#O% zRQEq)-Lpr{oOb%mz34h4DJJsBG+OjPrsjv~)6j$-^jJ8$gxx%>=;UQ0N+#I4m|^(8 zHHMtu22_jdjs47M>%zP7Us(gJ3%^6}vERPaR_T@y^4dLJlHz{B+~7pR)p5*h_kb}# zN7qLZ9Ds$T9v9FC)NaST8=PM@!_Jdq|8gQmI#=W(JpOix$nil;NQBUNY-5$pp?#bj zJDyv)K(7Y@*2EGNR}+xKeupV|UeLaD@(c^Isg+|*DGqku{&G-Q1g5;6c(#^H%W_!~ z_cIiq!JV{x)4FeIzE~`oe>G=nd+&R{r7ViGmOHXp<}< z;gnuo-Z<@XkcHrWU>UCq)UyNj8TEUQ{)Jo88008-k%om3Gz65)y4h`X=TJqv)?25s z-X1O8)GPptI1`>hYKOf@`DeKVrLcT3teM?`^%t;W1pYt3reef1tySVQFGeJ!L{#EB zT4B~daVM@s~Pc=dBN)L@v#l#KBl*d<*REDvTQVgT&MbRp7tR-@n zd+yeL-M2r6u8-A>0$tr<@T_O)@ASRrrjR%4jSWG5Xev8ol6SoZaG8FXfERcQHJ23# zIUgY=OohpL*dg<7zrHZfJZGPfWc)g0muL|YF^Jn1^)W?|q<06%{k=)VVHAnWG|z;( zo7|5KkbkJj=K4|h=kh@f8^0D1f@po!NA=iQjOOocsk!xVom7-MXK;m71WX&8im6zF zQr!i9$=rFEYosFDp4I}VCRFpILi`gl>YcW=Jl{MXsp!dRo$d6numg?Zl=1YD=EL^* zE~1#d-1aXJ+D(M*)lt&Gf#oDrkLM7DT^L(NDg6OZt@6iF=_vapVm5@5QU6n1crfmW zoD+iI3;o^B^@32hq?UqAz5D80IqWZ zqhzR@KQ z%1#0)9~JPjI?MVUzwYWKf`OAh5n?JyoTm%hHciN$XBv7HSY@k*pfM&3(<|J3;i{a^ z*(OAm61klnKQJ(?V#A-Yv0LS@B>~fgg&7IhdN7DOmOhx!+`Y;Lzij#eKI-nGAk`RZ zd_Zggx6E*f`9sz?;T(8-9PwRmzOJ+xT9%_)XcaF z!z5Ypz) z;#ry%-h)JvpzDer*)CWdq})z7APYWxu%yx}TFYso72>!9aD=Jq94>~nqoI#jQo~Pp z7sKFSbZmnu=BGnzwko}U4#Fj0xy#c7wJCh?2kii% zf?Hp)JIg`F&MKSv=2|z<@irCL$b~VOy8j>N0%moIO^lbq+73^yWPkCS=a*9kP4mF= zUqVs)IvG^e2CYZJT*bGA)uTsreG-WOst8AfbHH9kI2po|5! zu+d&nEhBXp9G9w}6yag-|rIx5;r2V!R1_du3I`vqtGrveJ^XWR#Mhk@tp0ClN?H9FEID{VxTdpJLE)l zz>s8BKq`h5&(%Irz0CxXKwZLZo^k>pIN=;Wq6^EaH*Wm^!Ls&Hk_%TGVDj#01s)w9 zX8Qgh4=7Ge!4SZ&vZ^}B&$B>-K4u!@YKhE_^MJC|NdQhbE=>k(&B93E_D7|L!+Ii( zc=X;xeEx)hum}HukjvjNxd%Xf({Hfw0=X?+`51XfUa2z(G)q$BA5bmtEWwXujHuEG;D$F(}p5PAAhztzw6xu$nTKK5@|FB}e07F2$ zzbyTkS_N?#V9GYTFZX5GD+ss+uMRqyz`v~8ahw-Ny5B+V^7S{j*3g2I@%5XH$s!gH zi^48R!HH{Spo2NYC$yL?;VSneDz|5=gCO(PX)F?KqL^_ADW`YD=I}1$#OI-5#mHnA z<;w+{P_F-+oqM(P$p46+k>>F_sM~w4>I;TP$p8oQ@zCsRVt#vC{D|)Bh0OGp!9lNs zcJEjoaT*C=TK8$(;$Jqe;bCFT;T;0lG54D8=k*w`W_mp7UKw%cG5M}s79K>QQt}e` zFH?M&y|Rb-WWL=*H7Kvr!ph`78YD13&~IJDGipb4Uo8i}dOv(Dy?ptk@N#d8j*@r3 zLBatHxR-YnP_9eBne8tmUm~Y1V%}Us6R4J?TIoJFbKhfOe(P@ImIJrG025V}9 zq@WxomLTMHCy+D?b~oAy9z}&i+^orvIoU zPQ6lSEbY!U7s}i^{5pwT)1TtSiPrEjjUla^8mNb6?q+3&^68^^^y16$LUnCE2l0GQc_9c|HQ(+LSvt*I#^ z8~&;=xO*N)9^oNv_ohjViSt`I#mDLy8l3 zQ)3GPvpso=f}@0b`rM%Jau9)4m}~3t<=Ek+k1J53abNy_F`v-{<8z({PSgyLXKj>bA@kin zkgOcdiRP2m$w=~