Fix for saving texture resources

This commit is contained in:
dexy 2019-02-21 16:37:55 +11:00
parent a11ec59dda
commit 0418e7743e
2 changed files with 18 additions and 12 deletions

View File

@ -2940,7 +2940,22 @@ namespace CodeWalker.GameFiles
if (ytd2.TextureDict.Textures?.Count != ytdfile.TextureDict.Textures?.Count) if (ytd2.TextureDict.Textures?.Count != ytdfile.TextureDict.Textures?.Count)
{ continue; } { continue; }
for (int i = 0; i < ytdfile.TextureDict.Textures.Count; i++)
{
var tx1 = ytdfile.TextureDict.Textures[i];
var tx2 = ytd2.TextureDict.Textures[i];
var td1 = tx1.Data;
var td2 = tx2.Data;
if (td1.FullData.Length != td2.FullData.Length)
{ continue; }
for (int j = 0; j < td1.FullData.Length; j++)
{
if (td1.FullData[j] != td2.FullData[j])
{ break; }
}
}
} }
} }

View File

@ -127,7 +127,7 @@ namespace CodeWalker.GameFiles
foreach (var block in blocks) foreach (var block in blocks)
{ {
if (block.FilePosition != -1) if (block.FilePosition != -1)
throw new Exception("A position of -1 is not possible!"); throw new Exception("Block was already assigned a position!");
//if (block.Length == 0) //if (block.Length == 0)
// throw new Exception("A length of 0 is not allowed!"); // throw new Exception("A length of 0 is not allowed!");
@ -226,23 +226,14 @@ namespace CodeWalker.GameFiles
var sysDataSize = 0x2000; var sysDataSize = systemPageCount * systemPageSize;
while (sysDataSize < systemStream.Length)
{
sysDataSize *= 2;
}
var sysData = new byte[sysDataSize]; var sysData = new byte[sysDataSize];
systemStream.Flush(); systemStream.Flush();
systemStream.Position = 0; systemStream.Position = 0;
systemStream.Read(sysData, 0, (int)systemStream.Length); systemStream.Read(sysData, 0, (int)systemStream.Length);
var gfxPageSize = 0x2000; var gfxDataSize = graphicsPageCount * graphicsPageSize;
while (gfxPageSize != graphicsPageSize)
{
gfxPageSize *= 2;
}
var gfxDataSize = graphicsPageCount * gfxPageSize;
var gfxData = new byte[gfxDataSize]; var gfxData = new byte[gfxDataSize];
graphicsStream.Flush(); graphicsStream.Flush();
graphicsStream.Position = 0; graphicsStream.Position = 0;