コード例 #1
0
        public static byte[] GetAssetData(string warfolder, Asset asset, int mypIndex)
        {
            string path = asset.Path;
            uint   ph = 0, sh = 0;

            MYP.HashWAR(path, 0xDEADBEEF, out ph, out sh);
            long key = ((long)ph << 32) + sh;

            byte[] data = null;
            if (MYPHash.Hashes.ContainsKey(key))
            {
                var myp = new MYP();
                using (var stream = new FileStream(Path.Combine(warfolder, Hashes[key][mypIndex].ToString() + ".myp"), FileMode.Open, FileAccess.ReadWrite))
                {
                    myp.Load(stream);
                    var mypFile = myp.GetByFilename(asset.Path);
                    if (mypFile != null)
                    {
                        data = myp.ReadFile(stream, mypFile);
                    }
                }
            }

            return(data);
        }
コード例 #2
0
        public static async Task SaveAsset(string warfolder, Asset asset, byte[] data, int mypIndex)
        {
            List <MythicPackage> p = Hashes[MYP.HashWAR(asset.Path)];

            using (var stream = new FileStream(Path.Combine(warfolder, p[mypIndex].ToString() + ".myp"), FileMode.Open, FileAccess.ReadWrite))
            {
                var myp = new MYP();
                myp.Load(stream);
                var mypFile = myp.GetByFilename(asset.Path);
                if (mypFile != null)
                {
                    myp.WriteFile(stream, mypFile, data);
                }
            }
        }