public void Load(string name) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException("WAD file name must be valid", nameof(name)); } name = FileExtensionUtils.EnsureExtension(name, _extension); if (IsLoaded(name)) { throw new ArgumentException($"WAD file '{name}' is already loaded"); } try { var file = new WADLoader(_fileSystem.OpenRead(name)).ReadWADFile(); _wadFiles.Add(new WADData { Name = name, File = file }); } catch (FileNotFoundException) { //Some maps reference non-existent wad files (e.g. c1a0 references sample.wad) //It's safe to ignore these } }
public void GetCanonicalExtension_Whitespace_ReturnsEmpty() { var original = " "; var expected = Path.GetExtension(original); var ext = FileExtensionUtils.GetCanonicalExtension(original); Assert.AreEqual(expected, ext); }
public void GetCanonicalExtension_ExtensionWithoutDot_ReturnsEmpty() { var original = "txt"; var expected = string.Empty; var result = FileExtensionUtils.GetCanonicalExtension(original); Assert.AreEqual(expected, result); }
public void CanonicalizeExtension_ExtensionWithDotNotAtStart_ReturnsWithDotUppercased() { var original = "file.txt"; var expected = $".{original}".ToUpperInvariant(); var result = FileExtensionUtils.CanonicalizeExtension(original); Assert.AreEqual(expected, result); }
public void GetCanonicalExtension_FilenameWithExtension_ReturnsCanonicalExtension() { var original = "file.txt"; var expected = ".txt".ToUpperInvariant(); var result = FileExtensionUtils.GetCanonicalExtension(original); Assert.AreEqual(expected, result); }
public void GetCanonicalExtension_ExtensionWithDot_ReturnsUppercased() { var original = ".txt"; var expected = original.ToUpperInvariant(); var result = FileExtensionUtils.GetCanonicalExtension(original); Assert.AreEqual(expected, result); }
/// <summary> /// Formats a map name as a file name /// </summary> /// <param name="mapName"></param> /// <returns></returns> public string FormatMapFileName(string mapName) { if (mapName == null) { throw new ArgumentNullException(nameof(mapName)); } return(Path.Combine(_mapsDirectory, mapName + FileExtensionUtils.AsExtension(_bspExtension))); }
public BSPModelUtils(string bspModelNamePrefix, string mapsDirectory, string bspExtension) { _bspModelNamePrefix = bspModelNamePrefix ?? throw new ArgumentNullException(nameof(bspModelNamePrefix)); _mapsDirectory = mapsDirectory ?? throw new ArgumentNullException(nameof(mapsDirectory)); _bspExtension = bspExtension ?? throw new ArgumentNullException(nameof(bspExtension)); _mapFileNameBaseRegexString = mapsDirectory + $"[{Regex.Escape(Path.DirectorySeparatorChar.ToString() + Path.AltDirectorySeparatorChar.ToString())}](\\w+)" + Regex.Escape(FileExtensionUtils.AsExtension(bspExtension)); }
/// <summary> /// Start a new map, loading entities from the map entity data string /// </summary> /// <param name="command"></param> private void StartNewMap(ICommandArgs command) { if (command.Count == 0) { Logger.Information("map <levelname> : changes server to specified map"); return; } Client?.Disconnect(false); ClearMemory(); var mapName = command[0]; //Remove BSP extension if (mapName.EndsWith(FileExtensionUtils.AsExtension(Framework.Extension.BSP))) { mapName = Path.GetFileNameWithoutExtension(mapName); } EventSystem.DispatchEvent(EngineEvents.EngineNewMapRequest); if (!World.IsMapValid(mapName)) { Logger.Error($"map change failed: '{mapName}' not found on server."); return; } Server.Stop(); EventSystem.DispatchEvent(EngineEvents.EngineStartingServer); //Reset time //TODO: define constant for initial time _engineTime.ElapsedTime = 1; _engineTime.FrameTime = 0; const ServerStartFlags flags = ServerStartFlags.None; if (!Server.Start(mapName, null, flags)) { return; } Server.Activate(); //Listen server hosts need to connect to their own server if (Client != null) { //Client.CommandContext.QueueCommands($"connect {NetAddresses.Local}"); //TODO: set up client Client.LocalConnect(); } }
public void Add(string name, WADFile wadFile) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException("Name must be valid", nameof(wadFile)); } if (wadFile == null) { throw new ArgumentNullException(nameof(wadFile)); } name = FileExtensionUtils.EnsureExtension(name, _extension); if (IsLoaded(name)) { throw new ArgumentException($"WAD file '{name}' is already loaded"); } _wadFiles.Add(new WADData { Name = name, File = wadFile }); }
public void GetCanonicalExtension_Empty_ReturnsEmpty() { var ext = FileExtensionUtils.GetCanonicalExtension(string.Empty); Assert.AreEqual(string.Empty, ext); }
public void GetCanonicalExtension_Null_ReturnsNull() { var ext = FileExtensionUtils.GetCanonicalExtension(null); Assert.IsNull(ext); }
public void CanonicalizeExtension_Whitespace_ReturnsEmpty() { var ext = FileExtensionUtils.CanonicalizeExtension(" \t "); Assert.AreEqual(string.Empty, ext); }
protected override bool IsFileSupportedCore(string path) { return(StringComparer.OrdinalIgnoreCase.Equals( FileExtensionUtils.GetCanonicalExtension(path), FileExtensionUtils.GetCanonicalExtension(Extension))); }