From ca7eae53223be43ef7d9dd8028225861d842b9a3 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 7 Dec 2015 19:32:55 +0200 Subject: [PATCH] Order symbols --- Subsurface/Barotrauma.csproj | 6 ++ Subsurface/Content/Orders.xml | 23 ++++++ Subsurface/Content/UI/orderSymbols.png | Bin 0 -> 7854 bytes .../Source/Characters/AI/CrewCommander.cs | 33 ++++++--- Subsurface/Source/Characters/AI/Order.cs | 67 ++++++++++++++++-- Subsurface/Source/Characters/Character.cs | 1 - Subsurface/Source/GUI/GUIImage.cs | 10 ++- Subsurface/Source/GameMain.cs | 3 - Subsurface/Source/Items/Item.cs | 3 +- Subsurface/Source/Screens/GameScreen.cs | 5 +- Subsurface_Solution.v12.suo | Bin 778752 -> 785408 bytes 11 files changed, 127 insertions(+), 24 deletions(-) create mode 100644 Subsurface/Content/Orders.xml create mode 100644 Subsurface/Content/UI/orderSymbols.png diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index 7eeb56f4f..5d3e3e124 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -628,6 +628,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -815,6 +818,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Subsurface/Content/Orders.xml b/Subsurface/Content/Orders.xml new file mode 100644 index 000000000..c28b1b516 --- /dev/null +++ b/Subsurface/Content/Orders.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Subsurface/Content/UI/orderSymbols.png b/Subsurface/Content/UI/orderSymbols.png new file mode 100644 index 0000000000000000000000000000000000000000..2860a2a7785e2d56e070532178d072481e2caf2d GIT binary patch literal 7854 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 o.ItemComponentType!=null); int startX = (int)-(buttonWidth * orders.Count + spacing * (orders.Count - 1)) / 2; - + int i=0; foreach (Order order in orders) { @@ -77,25 +77,39 @@ namespace Barotrauma { var newOrder = new Order(order, it.components.Find(ic => ic.GetType() == order.ItemComponentType)); - var button = new GUIButton(new Rectangle(x+buttonWidth/2, y2, buttonWidth, 20), order.Name, Alignment.TopCenter, GUI.Style, frame); - button.UserData = newOrder; - button.OnClicked = SetOrder; + CreateOrderButton(new Rectangle(x + buttonWidth / 2, y2, buttonWidth, 20), newOrder, y2==y); y2 += 25; } } else { - var button = new GUIButton(new Rectangle(x + buttonWidth / 2, y, buttonWidth, 20), order.Name, Alignment.TopCenter, GUI.Style, frame); - button.UserData = order; - button.OnClicked = SetOrder; + CreateOrderButton(new Rectangle(x + buttonWidth / 2, y, buttonWidth, 20), order); } i++; } y += 80; } + } + private GUIButton CreateOrderButton(Rectangle rect, Order order, bool createSymbol = true) + { + var orderButton = new GUIButton(rect, order.Name, Color.Black * 0.5f, Alignment.TopCenter, Alignment.Right, null, frame); + orderButton.HoverColor = Color.LightGray * 0.5f; + orderButton.OutlineColor = Color.LightGray * 0.8f; + orderButton.UserData = order; + orderButton.OnClicked = SetOrder; + + if (createSymbol) + { + var symbol = new GUIImage(new Rectangle(-5,0,64,64), order.SymbolSprite, Alignment.Left | Alignment.CenterY, orderButton); + symbol.Color = order.Color; + orderButton.children.Insert(1, symbol); + orderButton.children.RemoveAt(orderButton.children.Count-1); + } + + return orderButton; } public void UpdateCharacters() @@ -155,7 +169,8 @@ namespace Barotrauma characterButton.OutlineColor = Color.LightGray * 0.8f; } - string name = character.Info.Name.Replace(' ', '\n'); + string name = character.Info.Name; + if (character.Info.Job != null) name += '\n' + "(" + character.Info.Job.Name + ")"; GUITextBlock textBlock = new GUITextBlock( new Rectangle(40, 0, 0, 25), @@ -166,7 +181,7 @@ namespace Barotrauma textBlock.Font = GUI.SmallFont; textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f); - new GUIImage(new Rectangle(-10, -5, 0, 0), character.AnimController.Limbs[0].sprite, Alignment.Left, characterButton); + new GUIImage(new Rectangle(-5, -5, 0, 0), character.AnimController.Limbs[0].sprite, Alignment.Left, characterButton); i++; } diff --git a/Subsurface/Source/Characters/AI/Order.cs b/Subsurface/Source/Characters/AI/Order.cs index 205ede5cd..3423ae5b3 100644 --- a/Subsurface/Source/Characters/AI/Order.cs +++ b/Subsurface/Source/Characters/AI/Order.cs @@ -1,22 +1,29 @@ using Barotrauma.Items.Components; +using Microsoft.Xna.Framework; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; +using System.Xml.Linq; namespace Barotrauma { class Order { + private static string ConfigFile = Path.Combine("Content", "Orders.xml"); + public static List PrefabList; public readonly string Name; public readonly string DoingText; - //Sprite buttonSprite; + public readonly Sprite SymbolSprite; public readonly Type ItemComponentType; + public readonly Color Color; + public ItemComponent TargetItem; public readonly string[] Options; @@ -25,18 +32,64 @@ namespace Barotrauma { PrefabList = new List(); - PrefabList.Add(new Order("Follow", "Following")); + XDocument doc = ToolBox.TryLoadXml(ConfigFile); + if (doc == null) return; - PrefabList.Add(new Order("Dismiss", "Dismissed")); + foreach (XElement orderElement in doc.Root.Elements()) + { + if (orderElement.Name.ToString().ToLower() != "order") continue; - PrefabList.Add(new Order("Wait", "Wait")); + PrefabList.Add(new Order(orderElement)); + } - PrefabList.Add(new Order("Operate Reactor", "Operating reactor", typeof(Reactor), new string[] {"Power up", "Shutdown"})); - PrefabList.Add(new Order("Operate Railgun", "Operating railgun", typeof(Turret), new string[] { "Fire at will", "Hold fire" })); + //PrefabList.Add(new Order("Follow", "Following")); + + //PrefabList.Add(new Order("Dismiss", "Dismissed")); + + //PrefabList.Add(new Order("Wait", "Wait")); + + //PrefabList.Add(new Order("Operate Reactor", "Operating reactor", typeof(Reactor), new string[] {"Power up", "Shutdown"})); + //PrefabList.Add(new Order("Operate Railgun", "Operating railgun", typeof(Turret), new string[] { "Fire at will", "Hold fire" })); } + private Order(XElement orderElement) + { + Name = ToolBox.GetAttributeString(orderElement, "name", "Name not found"); + DoingText = ToolBox.GetAttributeString(orderElement, "doingtext", ""); + + string targetItemName = ToolBox.GetAttributeString(orderElement, "targetitemtype", ""); + + if (!string.IsNullOrWhiteSpace(targetItemName)) + { + try + { + ItemComponentType = Type.GetType("Barotrauma.Items.Components." + targetItemName, true, true); + } + + catch (Exception e) + { + DebugConsole.ThrowError("Error in " + ConfigFile + ", item component type " + targetItemName + " not found", e); + } + } + + Color = new Color(ToolBox.GetAttributeVector4(orderElement, "color", new Vector4(1.0f, 1.0f, 1.0f, 1.0f))); + + Options = ToolBox.GetAttributeString(orderElement, "options", "").Split(','); + for (int i = 0; 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 Pcd;0%bTQ{W{)PWHSo!aX delta 12614 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