Пример #1
0
        private string LoadSCFileContents(IModFileLoader loader)
        {
            using (var stream = loader.OpenStream())
            {
                using (var mr = new MemoryStream())
                {
                    byte[] buffer = new byte[1024];
                    int    size   = 0;
                    while (stream.CanRead && ((size = stream.Read(buffer, 0, 1024)) > 0))
                    {
                        mr.Write(buffer, 0, size);
                    }

                    mr.Seek(0, SeekOrigin.Begin);

                    var parser = new Parser(new Scanner(mr));

                    parser.Parse();

                    mr.Seek(0, SeekOrigin.Begin);

                    using (var sr = new StreamReader(mr))
                    {
                        ParseError = parser.ParseError;
                        Contents   = parser.Root;
                        return(sr.ReadToEnd());
                    }
                }
            }
        }
Пример #2
0
        internal static ModFile Load(IModFileLoader loader, string path, Mod sourceMod)
        {
            if (SCExtensions.Contains(System.IO.Path.GetExtension(path).ToLower()))
            {
                return(new SCModFile(loader, path, sourceMod));
            }

            if (CodeExtensions.Contains(System.IO.Path.GetExtension(path).ToLower()))
            {
                return(new CodeModFile(loader, path, sourceMod));
            }

            if (LocalisationExtensions.Contains(System.IO.Path.GetExtension(path).ToLower()))
            {
                return(new LocalisationFile(loader, path, sourceMod));
            }

            return(new BinaryModFile(loader, path, sourceMod));
        }
Пример #3
0
 public BinaryModFile(IModFileLoader loader, string path, Mod sourceMod)
     : base(path, sourceMod)
 {
     _loader = loader;
 }
Пример #4
0
 public LocalisationFile(IModFileLoader loader, string path, Mod sourceMod)
     : base(path, sourceMod)
 {
     _loader = loader;
 }