From 8357532fc1ac567bfe5d333754593ca44dde11a9 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 16 Jul 2016 16:12:34 +0300 Subject: [PATCH] Cargo spawns at the floor of the cargo room, item configs are fetched from the prefab instead of reloading the config files every time when placing an item --- Subsurface/Source/Events/Missions/CargoMission.cs | 10 ++++++---- Subsurface/Source/Items/Item.cs | 15 ++------------- Subsurface/Source/Items/ItemPrefab.cs | 7 +++++++ 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/Subsurface/Source/Events/Missions/CargoMission.cs b/Subsurface/Source/Events/Missions/CargoMission.cs index 17002449c..a612cc72b 100644 --- a/Subsurface/Source/Events/Missions/CargoMission.cs +++ b/Subsurface/Source/Events/Missions/CargoMission.cs @@ -69,12 +69,14 @@ namespace Barotrauma return; } - //Vector2 position = new Vector2( - // Rand.Range(cargoRoom.Rect.X + 20, cargoRoom.Rect.Right - 20, false), - // cargoRoom.Rect.Y - cargoRoom.Rect.Height + 10.0f); + Vector2 position = new Vector2( + cargoSpawnPos.Position.X + Rand.Range(-20.0f, 20.0f, false), + cargoRoom.Rect.Y - cargoRoom.Rect.Height + 16.0f); - var item = new Item(itemPrefab, cargoSpawnPos.Position + Rand.Vector(10.0f, false), cargoRoom.Submarine); + var item = new Item(itemPrefab, position, cargoRoom.Submarine); item.FindHull(); + + items.Add(item); if (parent != null) parent.Combine(item); diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index 8b95ed22c..1661366cd 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -325,20 +325,9 @@ namespace Barotrauma condition = 100.0f; - XElement element = ToolBox.TryLoadXml(Prefab.ConfigFile).Root; + XElement element = prefab.ConfigElement; if (element == null) return; - - if (ToolBox.GetAttributeString(element, "name", "") != Name) - { - foreach (XElement subElement in element.Elements()) - { - if (ToolBox.GetAttributeString(subElement, "name", "") != Name) continue; - - element = subElement; - break; - } - } - + properties = ObjectProperty.InitProperties(this, element); foreach (XElement subElement in element.Elements()) diff --git a/Subsurface/Source/Items/ItemPrefab.cs b/Subsurface/Source/Items/ItemPrefab.cs index e23f345f3..421aa1f8a 100644 --- a/Subsurface/Source/Items/ItemPrefab.cs +++ b/Subsurface/Source/Items/ItemPrefab.cs @@ -52,6 +52,12 @@ namespace Barotrauma get { return configFile; } } + public XElement ConfigElement + { + get; + private set; + } + public List DeconstructItems { get; @@ -203,6 +209,7 @@ namespace Barotrauma public ItemPrefab (XElement element, string filePath) { configFile = filePath; + ConfigElement = element; name = ToolBox.GetAttributeString(element, "name", ""); if (name == "") DebugConsole.ThrowError("Unnamed item in "+filePath+"!");