- Fixed creature disable list only taking config files in the Content/Characters folder into account (making it impossible to disable spawning of custom monsters outside the folder)

- Removed hard-coded ruin structure, particle & decal config paths and moved them to content package (custom ones can be added now without modifying the original files).
This commit is contained in:
Joonas Rikkonen
2018-02-25 15:03:29 +02:00
parent e02a1dc6ae
commit 9e2966e9cb
8 changed files with 68 additions and 57 deletions
@@ -19,7 +19,10 @@ namespace Barotrauma
RandomEvents,
Missions,
BackgroundCreaturePrefabs, BackgroundSpritePrefabs,
Sounds
Sounds,
RuinConfig,
Particles,
Decals
}
public class ContentPackage
@@ -13,8 +13,6 @@ namespace Barotrauma.RuinGeneration
class RuinStructure
{
const string ConfigFile = "Content/Map/RuinConfig.xml";
private static List<RuinStructure> list;
public readonly MapEntityPrefab Prefab;
@@ -37,14 +35,14 @@ namespace Barotrauma.RuinGeneration
}
string alignmentStr = element.GetAttributeString("alignment", "Bottom");
if (!Enum.TryParse<Alignment>(alignmentStr, true, out Alignment))
if (!Enum.TryParse(alignmentStr, true, out Alignment))
{
DebugConsole.ThrowError("Error in ruin structure \"" + name + "\" - " + alignmentStr + " is not a valid alignment");
}
string typeStr = element.GetAttributeString("type", "");
if (!Enum.TryParse<RuinStructureType>(typeStr, true, out Type))
if (!Enum.TryParse(typeStr, true, out Type))
{
DebugConsole.ThrowError("Error in ruin structure \"" + name + "\" - " + typeStr + " is not a valid type");
return;
@@ -58,19 +56,21 @@ namespace Barotrauma.RuinGeneration
private static void Load()
{
list = new List<RuinStructure>();
XDocument doc = XMLExtensions.TryLoadXml(ConfigFile);
if (doc == null || doc.Root == null) return;
foreach (XElement element in doc.Root.Elements())
foreach (string configFile in GameMain.Config.SelectedContentPackage.GetFilesOfType(ContentType.RuinConfig))
{
new RuinStructure(element);
XDocument doc = XMLExtensions.TryLoadXml(configFile);
if (doc == null || doc.Root == null) continue;
foreach (XElement element in doc.Root.Elements())
{
new RuinStructure(element);
}
}
}
public static RuinStructure GetRandom(RuinStructureType type, Alignment alignment)
{
if (list==null)
if (list == null)
{
DebugConsole.Log("Loading ruin structures...");
Load();
@@ -350,10 +350,10 @@ namespace Barotrauma.Networking
showLogButton.Visible = SaveServerLogs;
#endif
List<string> monsterNames = Directory.GetDirectories("Content/Characters").ToList();
List<string> monsterNames = GameMain.Config.SelectedContentPackage.GetFilesOfType(ContentType.Character);
for (int i = 0; i < monsterNames.Count; i++)
{
monsterNames[i] = monsterNames[i].Replace("Content/Characters", "").Replace("/", "").Replace("\\", "");
monsterNames[i] = Path.GetFileName(Path.GetDirectoryName(monsterNames[i]));
}
monsterEnabled = new Dictionary<string, bool>();
foreach (string s in monsterNames)