示例#1
0
 /// <summary>
 /// Create an instance that maps a game file to a local path
 /// </summary>
 /// <param name="gameName">Game path and filename</param>
 /// <param name="localName">Local disk path and filename</param>
 /// <param name="type">Type of file</param>
 /// <param name="isNew">true=import this file, false do not import this file, allow export</param>
 internal GameFile(string gameName, string localName, GameFileType type, bool isNew)
 {
     this.Type = type;
     this.GameName = gameName;
     this.LocalName = localName;
     if (isNew)
         this.LocalDateTime = DateTime.MinValue; // this will cause Changed to return true
     else
         this.UpdateLocalDateTime();
 }
        private void InferFileType()
        {
            switch (_gameFile?.Root?.Name.LocalName)
            {
            case "asl":
                Type = GameFileType.Game;
                break;

            case "library":
                Type = GameFileType.Library;
                break;
            }
        }
示例#3
0
 public GameFile(RpfFileEntry entry, GameFileType type)
 {
     RpfFileEntry = entry;
     Type         = type;
     MemoryUsage  = (entry != null) ? entry.GetFileSize() : 0;
     if (entry is RpfResourceFileEntry)
     {
         var resent = entry as RpfResourceFileEntry;
         var newuse = resent.SystemSize + resent.GraphicsSize;
         MemoryUsage = newuse;
     }
     else if (entry is RpfBinaryFileEntry)
     {
         var binent = entry as RpfBinaryFileEntry;
         var newuse = binent.FileUncompressedSize;
         if (newuse > MemoryUsage)
         {
             MemoryUsage = newuse;
         }
     }
     else
     {
     }
 }
示例#4
0
 public void RemoveFiles(GameFileType type)
 {
     string[] keys = new string[_files.Count];
     _files.Keys.CopyTo(keys, 0);
     foreach (string k in keys)
     {
         if (_files[k].Type == type)
             _files.Remove(k);
     }
 }
示例#5
0
        public void RemoveAndDeleteFiles(GameFileType type)
        {
            string[] keys = new string[_files.Count];
            _files.Keys.CopyTo(keys, 0);
            foreach (string k in keys)
            {
                if (_files[k].Type == type)
                {
                    //#if (!DEBUG) //don't delete the game files
                    FileHelper.Delete(_files[k].LocalName);
                    //#endif

                    _files.Remove(k);
                }
            }
        }
示例#6
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="gameFileType"></param>
        /// <param name="callback"></param>
        /// <param name="gameFilenames"></param>
        /// <returns>Imported gamefiles.</returns>
        public GameFile[] Import(GameFileType gameFileType, FileCopyProgress callback, params string[] gameFilenames)
        {
            List<GameFile> gfs = new List<GameFile>();

            foreach (string s in gameFilenames)
                gfs.Add(new GameFile(s, localGameFilename(s), gameFileType));

            GameFile[] gf = gfs.ToArray();

            Import(gf, callback);
            return gf;
        }
示例#7
0
 public GameFileCacheKey(uint hash, GameFileType type)
 {
     Hash = hash;
     Type = type;
 }
示例#8
0
 /// <summary>
 /// Create an instance that maps a game file to a local path
 /// </summary>
 /// <param name="gameName">Game path and filename</param>
 /// <param name="localName">Local disk path and filename</param>
 /// <param name="type">Type of file</param>
 internal GameFile(string gameName, string localName, GameFileType type)
     : this(gameName, localName, type, false)
 {
 }
 public bool IsMatch(GameFileType typee)
 {
     return(Type == typee);
 }
示例#10
0
 public GameFile(string path, GameFileType fileType)
 {
     this.path     = path;
     this.fileType = fileType;
 }