示例#1
0
        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));
        }
示例#9
0
        /// <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();
            }
        }
示例#10
0
        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)));
 }