private void MoveCaches(string cookedPath, string NewCache)
{
//Fix the GUID
using (FileStream newCache = new FileStream(Path.Combine(cookedPath, NewCache), FileMode.Open, FileAccess.Read))
{
SaltPropertyReader.Property GUIDProp = properties["TFCFileGuid"];
for (int i = 0; i < 4; i++)
{
SaltPropertyReader.PropertyValue tempVal = GUIDProp.Value.Array[i];
tempVal.IntValue = newCache.ReadValueS32();
GUIDProp.Value.Array[i] = tempVal;
}
}
//Move across any existing textures
using (FileStream oldCache = new FileStream(FullArcPath, FileMode.Open, FileAccess.Read))
{
using (FileStream newCache = new FileStream(Path.Combine(cookedPath, NewCache), FileMode.Append, FileAccess.Write))
{
for (int i = 0; i < privateimgList.Count; i++)
{
ImageInfo img = privateimgList[i];
switch (img.storageType)
{
case storage.arcCpr:
byte[] buff = new byte[img.cprSize];
oldCache.Seek(img.offset, SeekOrigin.Begin);
Buffer.BlockCopy(oldCache.ReadBytes(img.cprSize), 0, buff, 0, img.cprSize);
img.offset = (int)newCache.Position;
newCache.WriteBytes(buff);
break;
case storage.arcUnc:
buff = new byte[img.uncSize];
oldCache.Seek(img.offset, SeekOrigin.Begin);
Buffer.BlockCopy(oldCache.ReadBytes(img.cprSize), 0, buff, 0, img.cprSize);
img.offset = (int)newCache.Position;
newCache.WriteBytes(buff);
break;
case storage.pccSto:
break;
case storage.empty:
break;
default:
throw new NotImplementedException("Storage type not supported yet");
}
privateimgList[i] = img;
}
}
}
}