From 07b937ca90856de0cc2d3d59fdefc54e7eb4e8eb Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Thu, 25 Apr 2019 18:13:28 +0300 Subject: [PATCH] (ce70f0edf) Merge branch 'dev' of https://github.com/Regalis11/Barotrauma-development into dev --- .../Source/GameSession/CrewManager.cs | 9 +++++ .../GameModes/Tutorials/CaptainTutorial.cs | 39 ++++++++++++++++--- .../GameModes/Tutorials/EngineerTutorial.cs | 15 ++++++- .../GameModes/Tutorials/MechanicTutorial.cs | 13 ++++--- .../GameModes/Tutorials/Tutorial.cs | 16 ++++---- .../Source/Items/CharacterInventory.cs | 1 + .../Source/Items/Components/LightComponent.cs | 2 +- .../BarotraumaShared/SharedContent.projitems | 15 +++++-- .../Source/Items/Components/Machines/Sonar.cs | 2 +- 9 files changed, 86 insertions(+), 26 deletions(-) diff --git a/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs b/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs index 932a2caf8..8d1b7f83a 100644 --- a/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs +++ b/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs @@ -65,6 +65,8 @@ namespace Barotrauma } } + public List OrderOptionButtons = new List(); + #endregion #region Constructors @@ -914,9 +916,12 @@ namespace Barotrauma if (Character.Controlled == null) return false; SetCharacterOrder(character, userData as Order, option, Character.Controlled); orderTargetFrame = null; + OrderOptionButtons.Clear(); return true; } }; + + OrderOptionButtons.Add(optionButton); } } @@ -949,9 +954,13 @@ namespace Barotrauma if (Character.Controlled == null) return false; SetCharacterOrder(character, userData as Order, option, Character.Controlled); orderTargetFrame = null; + OrderOptionButtons.Clear(); return true; } }; + + OrderOptionButtons.Add(optionButton); + //lines between the order buttons if (i < order.Options.Length - 1) { diff --git a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/CaptainTutorial.cs b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/CaptainTutorial.cs index 35520cad9..00ae9403c 100644 --- a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/CaptainTutorial.cs +++ b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/CaptainTutorial.cs @@ -148,7 +148,7 @@ namespace Barotrauma.Tutorials TriggerTutorialSegment(0); do { - yield return new WaitForSeconds(1.5f); + yield return null; GameMain.GameSession.CrewManager.HighlightOrderButton(captain_medic, "follow", highlightColor, new Vector2(5, 5)); } while (!HasOrder(captain_medic, "follow")); @@ -163,28 +163,31 @@ namespace Barotrauma.Tutorials GameMain.GameSession.CrewManager.AddCharacter(captain_mechanic); do { - yield return new WaitForSeconds(1.5f); + yield return null; GameMain.GameSession.CrewManager.HighlightOrderButton(captain_mechanic, "repairsystems", highlightColor, new Vector2(5, 5)); + HighlightOrderOption("jobspecific"); } - while (!HasOrder(captain_mechanic, "repairsystems")); + while (!HasOrder(captain_mechanic, "repairsystems", "jobspecific")); RemoveCompletedObjective(segments[1]); yield return new WaitForSeconds(2f); TriggerTutorialSegment(2); GameMain.GameSession.CrewManager.AddCharacter(captain_security); do { - yield return new WaitForSeconds(1.5f); + yield return null; GameMain.GameSession.CrewManager.HighlightOrderButton(captain_security, "operateweapons", highlightColor, new Vector2(5, 5)); + HighlightOrderOption("fireatwill"); } - while (!HasOrder(captain_security, "operateweapons")); + while (!HasOrder(captain_security, "operateweapons", "fireatwill")); RemoveCompletedObjective(segments[2]); yield return new WaitForSeconds(4f); TriggerTutorialSegment(3); GameMain.GameSession.CrewManager.AddCharacter(captain_engineer); do { - yield return new WaitForSeconds(1.5f); + yield return null; GameMain.GameSession.CrewManager.HighlightOrderButton(captain_engineer, "operatereactor", highlightColor, new Vector2(5, 5)); + HighlightOrderOption("powerup"); } while (!HasOrder(captain_engineer, "operatereactor", "powerup")); RemoveCompletedObjective(segments[3]); @@ -236,6 +239,30 @@ namespace Barotrauma.Tutorials CoroutineManager.StartCoroutine(TutorialCompleted()); } + private void HighlightOrderOption(string option) + { + if (GameMain.GameSession.CrewManager.OrderOptionButtons.Count == 0) return; + var order = GameMain.GameSession.CrewManager.OrderOptionButtons[0].UserData as Order; + + int orderIndex = 0; + for (int i = 0; i < GameMain.GameSession.CrewManager.OrderOptionButtons.Count; i++) + { + if (orderIndex >= order.Options.Length) + { + orderIndex = 0; + } + if (order.Options[orderIndex] == option) + { + if (GameMain.GameSession.CrewManager.OrderOptionButtons[i].Frame.FlashTimer <= 0) + { + GameMain.GameSession.CrewManager.OrderOptionButtons[i].Frame.Flash(highlightColor); + } + } + + orderIndex++; + } + } + private bool IsSelectedItem(Item item) { return captain?.SelectedConstruction == item; diff --git a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/EngineerTutorial.cs b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/EngineerTutorial.cs index 7cedf8fad..f230542a1 100644 --- a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/EngineerTutorial.cs +++ b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/EngineerTutorial.cs @@ -272,7 +272,7 @@ namespace Barotrauma.Tutorials } yield return null; - } while (engineer.Inventory.FindItemByIdentifier("screwdriver") == null || engineer.Inventory.FindItemByIdentifier("redwire") == null || engineer.Inventory.FindItemByIdentifier("bluewire") == null); // Wait until looted + } while (!engineer_equipmentCabinet.Inventory.IsEmpty()); // Wait until looted RemoveCompletedObjective(segments[0]); SetHighlight(engineer_equipmentCabinet.Item, false); SetHighlight(engineer_reactor.Item, true); @@ -286,6 +286,7 @@ namespace Barotrauma.Tutorials { if (IsSelectedItem(engineer_reactor.Item)) { + engineer_reactor.AutoTempSlider.BarScrollValue = 1.0f; if (engineer_reactor.OnOffSwitch.FlashTimer <= 0) { engineer_reactor.OnOffSwitch.Flash(highlightColor, 1.5f, false); @@ -297,6 +298,7 @@ namespace Barotrauma.Tutorials { if (IsSelectedItem(engineer_reactor.Item) && engineer_reactor.Item.OwnInventory.slots != null) { + engineer_reactor.AutoTempSlider.BarScrollValue = 1.0f; HighlightInventorySlot(engineer.Inventory, "fuelrod", highlightColor, 0.5f, 0.5f, 0f); for (int i = 0; i < engineer_reactor.Item.OwnInventory.slots.Length; i++) @@ -311,6 +313,7 @@ namespace Barotrauma.Tutorials { if (IsSelectedItem(engineer_reactor.Item)) { + engineer_reactor.AutoTempSlider.BarScrollValue = 1.0f; if (engineer_reactor.FissionRateScrollBar.FlashTimer <= 0) { engineer_reactor.FissionRateScrollBar.Flash(highlightColor, 1.5f); @@ -336,6 +339,16 @@ namespace Barotrauma.Tutorials } yield return null; } while (!engineer_reactor.AutoTemp); + + float wait = 1.5f; + do + { + yield return new WaitForSeconds(0.1f); + wait -= 0.1f; + engineer_reactor.AutoTempSlider.BarScrollValue = 0.0f; + } while (wait > 0.0f); + engineer.SelectedConstruction = null; + engineer_reactor.CanBeSelected = false; RemoveCompletedObjective(segments[1]); SetHighlight(engineer_reactor.Item, false); SetHighlight(engineer_brokenJunctionBox, true); diff --git a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/MechanicTutorial.cs b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/MechanicTutorial.cs index 72dca0c66..ec272ba98 100644 --- a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/MechanicTutorial.cs +++ b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/MechanicTutorial.cs @@ -317,11 +317,14 @@ namespace Barotrauma.Tutorials SetHighlight(mechanic_workingPump.Item, true); do { - if (mechanic_workingPump.IsActiveSlider.FlashTimer <= 0) - { - mechanic_workingPump.IsActiveSlider.Flash(uiHighlightColor, 1.5f, true); - } yield return null; + if (IsSelectedItem(mechanic_brokenPump.Item)) + { + if (mechanic_workingPump.IsActiveSlider.FlashTimer <= 0) + { + mechanic_workingPump.IsActiveSlider.Flash(uiHighlightColor, 1.5f, true); + } + } } while (mechanic_workingPump.FlowPercentage >= 0 || !mechanic_workingPump.IsActive); // Highlight until draining SetHighlight(mechanic_workingPump.Item, false); do { yield return null; } while (mechanic_brokenhull_1.WaterPercentage > waterVolumeBeforeOpening); // Unlock door once drained @@ -510,6 +513,7 @@ namespace Barotrauma.Tutorials Repairable repairablePumpComponent = mechanic_brokenPump.Item.GetComponent(); do { + yield return null; if (!mechanic_brokenPump.Item.IsFullCondition) { if (!mechanic.HasEquippedItem("wrench")) @@ -524,7 +528,6 @@ namespace Barotrauma.Tutorials } } } - yield return null; } while (!mechanic_brokenPump.Item.IsFullCondition || mechanic_brokenPump.FlowPercentage >= 0 || !mechanic_brokenPump.IsActive); RemoveCompletedObjective(segments[9]); SetHighlight(mechanic_brokenPump.Item, false); diff --git a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/Tutorial.cs b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/Tutorial.cs index 22cc125a4..b4f3af7a9 100644 --- a/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/Tutorial.cs +++ b/Barotrauma/BarotraumaClient/Source/GameSession/GameModes/Tutorials/Tutorial.cs @@ -505,31 +505,31 @@ namespace Barotrauma.Tutorials Enum.TryParse(anchorStr, out anchor); } - var infoBlock = new GUIFrame(new RectTransform(new Point((int)(width * GUI.Scale), (int)(height * GUI.Scale)), GUI.Canvas, anchor) { AbsoluteOffset = new Point(20) }); + var background = new GUIFrame(new RectTransform(new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight), GUI.Canvas, Anchor.Center), "InnerFrame", new Color(0, 0, 0, 1f)); + + var infoBlock = new GUIFrame(new RectTransform(new Point((int)(width * GUI.Scale), (int)(height * GUI.Scale)), background.RectTransform, anchor) { AbsoluteOffset = new Point(20) }); infoBlock.Flash(Color.Green); var infoContent = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.8f), infoBlock.RectTransform, Anchor.Center)) { Stretch = true, - RelativeSpacing = 0.05f + RelativeSpacing = 0.02f }; if (title.Length > 0) { - var titleBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), infoContent.RectTransform), + var titleBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), infoContent.RectTransform), title, font: GUI.VideoTitleFont, textAlignment: Alignment.Center, textColor: new Color(253, 174, 0)); titleBlock.TextScale = textScale; } - var textBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), infoContent.RectTransform), - text, wrap: true); - textBlock.TextScale = textScale; + var textBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), infoContent.RectTransform), text, wrap: true); infoBoxClosedCallback = callback; if (hasButton) { - var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.2f), infoContent.RectTransform) { MinSize = new Point(0, 30) }, isHorizontal: true) + var buttonContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.3f), infoContent.RectTransform) { MinSize = new Point(0, 30), MaxSize = new Point((int) infoContent.Rect.X, 60) }, isHorizontal: true) { Stretch = true, RelativeSpacing = 0.1f @@ -557,7 +557,7 @@ namespace Barotrauma.Tutorials GUI.PlayUISound(GUISoundType.UIMessage); - return infoBlock; + return background; } #endregion diff --git a/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs b/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs index f32dcb58b..71b3d07d0 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/CharacterInventory.cs @@ -100,6 +100,7 @@ namespace Barotrauma 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/IconAtlas.png", new Rectangle(640 + margin, 383 + margin, 128 - margin * 2, 128 - margin * 2))); limbSlotIcons.Add(InvSlotType.RightHand, new Sprite("Content/UI/IconAtlas.png", new Rectangle(768 + margin, 383 + 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))); } SlotPositions = new Vector2[SlotTypes.Length]; CurrentLayout = Layout.Default; diff --git a/Barotrauma/BarotraumaClient/Source/Items/Components/LightComponent.cs b/Barotrauma/BarotraumaClient/Source/Items/Components/LightComponent.cs index 141433f4e..7f676175e 100644 --- a/Barotrauma/BarotraumaClient/Source/Items/Components/LightComponent.cs +++ b/Barotrauma/BarotraumaClient/Source/Items/Components/LightComponent.cs @@ -23,7 +23,7 @@ namespace Barotrauma.Items.Components { if (light.LightSprite != null && (item.body == null || item.body.Enabled) && lightBrightness > 0.0f) { - light.LightSprite.Draw(spriteBatch, new Vector2(item.DrawPosition.X, -item.DrawPosition.Y), lightColor * lightBrightness, 0.0f, 1.0f, Microsoft.Xna.Framework.Graphics.SpriteEffects.None, item.SpriteDepth - 0.0001f); + light.LightSprite.Draw(spriteBatch, new Vector2(item.DrawPosition.X, -item.DrawPosition.Y), lightColor * lightBrightness, 0.0f, item.Scale, SpriteEffects.None, item.SpriteDepth - 0.0001f); } } diff --git a/Barotrauma/BarotraumaShared/SharedContent.projitems b/Barotrauma/BarotraumaShared/SharedContent.projitems index 989c0f30e..80e9ad12f 100644 --- a/Barotrauma/BarotraumaShared/SharedContent.projitems +++ b/Barotrauma/BarotraumaShared/SharedContent.projitems @@ -1207,6 +1207,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -2172,15 +2175,19 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest - PreserveNewest - - - PreserveNewest + Never + diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs index 40e97dfe5..144d8da1a 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Sonar.cs @@ -259,7 +259,7 @@ namespace Barotrauma.Items.Components int clockDir = (int)Math.Round((angle / MathHelper.TwoPi) * 12); if (clockDir == 0) clockDir = 12; - return TextManager.Get("SubDirOClock").Replace("[dir]", clockDir.ToString()); + return TextManager.Get("roomname.subdiroclock").Replace("[dir]", clockDir.ToString()); } private Vector2 GetTransducerCenter()