ZoneBuilder/Source/Core/Config/MapLumpInfo.cs
2022-11-25 17:14:35 +00:00

65 lines
2 KiB
C#

#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using CodeImp.DoomBuilder.IO;
#endregion
namespace CodeImp.DoomBuilder.Config
{
public struct MapLumpInfo
{
// Members
public readonly string Name;
public readonly bool Required;
public readonly bool BlindCopy;
public readonly bool NodeBuild;
public readonly bool AllowEmpty;
public readonly bool ScriptBuild; //mxd
internal readonly ScriptConfiguration Script;
// Construct from IDictionary
internal MapLumpInfo(string name, Configuration cfg)
{
// Apply settings
this.Name = name;
this.Script = null;
this.Required = cfg.ReadSetting("maplumpnames." + name + ".required", false);
this.BlindCopy = cfg.ReadSetting("maplumpnames." + name + ".blindcopy", false);
this.NodeBuild = cfg.ReadSetting("maplumpnames." + name + ".nodebuild", false);
this.AllowEmpty = cfg.ReadSetting("maplumpnames." + name + ".allowempty", false);
this.ScriptBuild = cfg.ReadSetting("maplumpnames." + name + ".scriptbuild", false); //mxd
string scriptconfig = cfg.ReadSetting("maplumpnames." + name + ".script", "");
// Find script configuration
if(scriptconfig.Length > 0)
{
if(General.ScriptConfigs.ContainsKey(scriptconfig.ToLowerInvariant()))
{
this.Script = General.ScriptConfigs[scriptconfig.ToLowerInvariant()];
}
else
{
General.ErrorLogger.Add(ErrorType.Warning, "Map lump \"" + name + "\" in the current game configuration specifies an unknown script configuration \"" + scriptconfig + "\". Using plain text instead.");
this.Script = new ScriptConfiguration();
}
}
}
}
}