示例#1
0
 /// <summary>
 /// Tries to parse a xml World definition file name.
 /// </summary>
 /// <param name="m">The monitor to use.</param>
 /// <param name="path">The file path.</param>
 /// <param name="localMap">The mapper to use.</param>
 /// <returns>The name or null on error.</returns>
 public static LocalWorldName TryParse(IActivityMonitor m, NormalizedPath path, IWorldLocalMapping localMap)
 {
     if (path.IsEmptyPath || !path.LastPart.EndsWith(".World.xml", StringComparison.OrdinalIgnoreCase))
     {
         m.Error($"Path must end with '.World.xml': '{path}'");
         return(null);
     }
     try
     {
         var fName = path.LastPart;
         Debug.Assert(".World.xml".Length == 10);
         fName = fName.Substring(0, fName.Length - 10);
         int idx = fName.IndexOf('[');
         if (idx < 0)
         {
             return(new LocalWorldName(path, fName, null, localMap));
         }
         int paraLength = fName.IndexOf(']') - idx - 1;
         return(new LocalWorldName(path, fName.Substring(0, idx), fName.Substring(idx + 1, paraLength), localMap));
     }
     catch (Exception ex)
     {
         m.Error($"While parsing file path: {path}.", ex);
         return(null);
     }
 }
示例#2
0
 /// <summary>
 /// Initializes a new <see cref="WorldStore"/>.
 /// </summary>
 /// <param name="worldLocalMapping">Required path mapper.</param>
 public WorldStore(IWorldLocalMapping worldLocalMapping)
 {
     WorldLocalMapping = worldLocalMapping ?? throw new ArgumentNullException(nameof(worldLocalMapping));
 }
示例#3
0
 /// <summary>
 /// Initializes a new <see cref="LocalWorldName"/>.
 /// </summary>
 /// <param name="xmlDescriptionFilePath">Path of the definition file.</param>
 /// <param name="stackName">The stack name.</param>
 /// <param name="parallelName">The optional parallel name. Can be null or empty.</param>
 /// <param name="localMap">Required to compute the <see cref="Root"/> folder.</param>
 public LocalWorldName(NormalizedPath xmlDescriptionFilePath, string stackName, string parallelName, IWorldLocalMapping localMap)
     : base(stackName, parallelName)
 {
     if (String.IsNullOrWhiteSpace(xmlDescriptionFilePath))
     {
         throw new ArgumentNullException(nameof(xmlDescriptionFilePath));
     }
     XmlDescriptionFilePath = xmlDescriptionFilePath;
     Root = localMap.GetRootPath(this);
 }