1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-09 16:13:31 +08:00

minor fixes

This commit is contained in:
2022-11-30 16:05:28 +08:00
parent d92b23e498
commit b2d7a54204
2 changed files with 26 additions and 34 deletions

View File

@@ -63,7 +63,7 @@ public class CompressSave : BaseUnityPlugin
Harmony.CreateAndPatchAll(typeof(PatchUILoadGame)); Harmony.CreateAndPatchAll(typeof(PatchUILoadGame));
} }
else else
SaveUtil.logger.LogWarning("LZ4.dll is not avaliable."); SaveUtil.logger.LogWarning("Either lz4warp.dll or zstdwrap.dll is not avaliable.");
} }
public void OnDestroy() public void OnDestroy()
@@ -76,20 +76,19 @@ public class CompressSave : BaseUnityPlugin
class PatchSave class PatchSave
{ {
public static WrapperDefines lz4Wrapper = new LZ4API(), zstdWrapper = new ZstdAPI(); public static readonly WrapperDefines LZ4Wrapper = new LZ4API(), ZstdWrapper = new ZstdAPI();
const long MB = 1024 * 1024; private const long SizeInMBytes = 1024 * 1024;
private static CompressionStream.CompressBuffer compressBuffer; private static CompressionStream.CompressBuffer _compressBuffer;
public static bool UseCompressSave = false; public static bool UseCompressSave;
public static CompressionType CompressedType = CompressionType.None; private static CompressionType _compressedType = CompressionType.None;
public static CompressionType CompressionTypeForSaves = CompressionType.LZ4; public static CompressionType CompressionTypeForSaves = CompressionType.LZ4;
public static int CompressionLevelForSaves = 0; public static int CompressionLevelForSaves;
static Stream compressionStream = null; private static Stream _compressionStream;
public static bool EnableCompress; public static bool EnableCompress;
public static bool EnableDecompress;
public static void CreateCompressBuffer() public static void CreateCompressBuffer()
{ {
compressBuffer = CompressionStream.CreateBuffer(CompressionTypeForSaves == CompressionType.LZ4 ? lz4Wrapper : zstdWrapper, (int)MB); //Bigger buffer for GS2 compatible _compressBuffer = CompressionStream.CreateBuffer(CompressionTypeForSaves == CompressionType.LZ4 ? LZ4Wrapper : ZstdWrapper, (int)SizeInMBytes); //Bigger buffer for GS2 compatible
} }
private static void WriteHeader(FileStream fileStream) private static void WriteHeader(FileStream fileStream)
@@ -152,7 +151,7 @@ class PatchSave
public static void MonitorStream(Stream fileStream) public static void MonitorStream(Stream fileStream)
{ {
PerformanceMonitor.BeginStream(UseCompressSave ? compressionStream : fileStream); PerformanceMonitor.BeginStream(UseCompressSave ? _compressionStream : fileStream);
} }
public static BinaryWriter CreateBinaryWriter(FileStream fileStream) public static BinaryWriter CreateBinaryWriter(FileStream fileStream)
@@ -161,8 +160,8 @@ class PatchSave
{ {
SaveUtil.logger.LogDebug("Begin compress save"); SaveUtil.logger.LogDebug("Begin compress save");
WriteHeader(fileStream); WriteHeader(fileStream);
compressionStream = new CompressionStream(CompressionTypeForSaves == CompressionType.LZ4 ? lz4Wrapper : zstdWrapper, CompressionLevelForSaves, fileStream, compressBuffer, true); //need to dispose after use _compressionStream = new CompressionStream(CompressionTypeForSaves == CompressionType.LZ4 ? LZ4Wrapper : ZstdWrapper, CompressionLevelForSaves, fileStream, _compressBuffer, true); //need to dispose after use
return ((CompressionStream)compressionStream).BufferWriter; return ((CompressionStream)_compressionStream).BufferWriter;
} }
SaveUtil.logger.LogDebug("Begin normal save"); SaveUtil.logger.LogDebug("Begin normal save");
return new BinaryWriter(fileStream); return new BinaryWriter(fileStream);
@@ -184,9 +183,9 @@ class PatchSave
public static void DisposecompressionStream() public static void DisposecompressionStream()
{ {
if (!UseCompressSave) return; if (!UseCompressSave) return;
var writeflag = compressionStream.CanWrite; var writeflag = _compressionStream.CanWrite;
compressionStream?.Dispose(); //Dispose need to be done before fstream closed. _compressionStream?.Dispose(); //Dispose need to be done before fstream closed.
compressionStream = null; _compressionStream = null;
if (writeflag) //Reset UseCompressSave after writing to file if (writeflag) //Reset UseCompressSave after writing to file
UseCompressSave = false; UseCompressSave = false;
} }
@@ -224,7 +223,6 @@ class PatchSave
if (matcher.IsValid) if (matcher.IsValid)
matcher.Set(OpCodes.Call, AccessTools.Method(typeof(PatchSave), "ReadSeek")); matcher.Set(OpCodes.Call, AccessTools.Method(typeof(PatchSave), "ReadSeek"));
EnableDecompress = true;
return matcher.InstructionEnumeration(); return matcher.InstructionEnumeration();
} }
catch (Exception ex) catch (Exception ex)
@@ -237,13 +235,13 @@ class PatchSave
public static BinaryReader CreateBinaryReader(FileStream fileStream) public static BinaryReader CreateBinaryReader(FileStream fileStream)
{ {
switch (CompressedType = SaveUtil.SaveGetCompressType(fileStream)) switch (_compressedType = SaveUtil.SaveGetCompressType(fileStream))
{ {
case CompressionType.LZ4: case CompressionType.LZ4:
case CompressionType.Zstd: case CompressionType.Zstd:
UseCompressSave = true; UseCompressSave = true;
compressionStream = new DecompressionStream(CompressedType == CompressionType.LZ4 ? lz4Wrapper : zstdWrapper, fileStream); _compressionStream = new DecompressionStream(_compressedType == CompressionType.LZ4 ? LZ4Wrapper : ZstdWrapper, fileStream);
return new PeekableReader((DecompressionStream)compressionStream); return new PeekableReader((DecompressionStream)_compressionStream);
case CompressionType.None: case CompressionType.None:
UseCompressSave = false; UseCompressSave = false;
fileStream.Seek(0, SeekOrigin.Begin); fileStream.Seek(0, SeekOrigin.Begin);
@@ -255,12 +253,12 @@ class PatchSave
public static long FileLengthRead(BinaryReader binaryReader) public static long FileLengthRead(BinaryReader binaryReader)
{ {
switch (CompressedType) switch (_compressedType)
{ {
case CompressionType.LZ4: case CompressionType.LZ4:
case CompressionType.Zstd: case CompressionType.Zstd:
binaryReader.ReadInt64(); binaryReader.ReadInt64();
return compressionStream.Length; return _compressionStream.Length;
case CompressionType.None: case CompressionType.None:
default: default:
return binaryReader.ReadInt64(); return binaryReader.ReadInt64();
@@ -269,13 +267,13 @@ class PatchSave
public static long ReadSeek(FileStream fileStream, long offset, SeekOrigin origin) public static long ReadSeek(FileStream fileStream, long offset, SeekOrigin origin)
{ {
switch (CompressedType) switch (_compressedType)
{ {
case CompressionType.LZ4: case CompressionType.LZ4:
case CompressionType.Zstd: case CompressionType.Zstd:
while (offset > 0) while (offset > 0)
offset -= compressionStream.Read(compressBuffer.outBuffer, 0, (int)offset); offset -= _compressionStream.Read(_compressBuffer.outBuffer, 0, (int)offset);
return compressionStream.Position; return _compressionStream.Position;
case CompressionType.None: case CompressionType.None:
default: default:
return fileStream.Seek(offset, origin); return fileStream.Seek(offset, origin);

View File

@@ -8,7 +8,6 @@ namespace CompressSave;
public static class SaveUtil public static class SaveUtil
{ {
public static ManualLogSource logger; public static ManualLogSource logger;
public static readonly Version VerifiedVersion = new Version public static readonly Version VerifiedVersion = new Version
{ {
@@ -17,7 +16,7 @@ public static class SaveUtil
Release = 27, Release = 27,
}; };
public static string UnzipToFile(DecompressionStream lzStream, string fullPath) private static string UnzipToFile(DecompressionStream lzStream, string fullPath)
{ {
lzStream.ResetStream(); lzStream.ResetStream();
string dir = Path.GetDirectoryName(fullPath); string dir = Path.GetDirectoryName(fullPath);
@@ -56,7 +55,7 @@ public static class SaveUtil
{ {
case CompressionType.LZ4: case CompressionType.LZ4:
case CompressionType.Zstd: case CompressionType.Zstd:
using (var lzstream = new DecompressionStream(compressType == CompressionType.LZ4 ? PatchSave.lz4Wrapper : PatchSave.zstdWrapper, fileStream)) using (var lzstream = new DecompressionStream(compressType == CompressionType.LZ4 ? PatchSave.LZ4Wrapper : PatchSave.ZstdWrapper, fileStream))
{ {
newSaveName = UnzipToFile(lzstream, path); newSaveName = UnzipToFile(lzstream, path);
} }
@@ -105,10 +104,5 @@ public static class SaveUtil
} }
} }
public static string GetFullSavePath(string saveName) => GameConfig.gameSaveFolder + saveName + GameSave.saveExt; private static string GetFullSavePath(string saveName) => GameConfig.gameSaveFolder + saveName + GameSave.saveExt;
public static bool VerifyVersion(int majorVersion, int minorVersion, int releaseVersion)
{
return new Version(majorVersion, minorVersion, releaseVersion) == VerifiedVersion;
}
} }