This commit is contained in:
parent
d903852b37
commit
2c723b90fc
3 changed files with 71 additions and 7 deletions
|
|
@ -177,12 +177,17 @@ namespace Server.Network {
|
|||
public static readonly ICompressor Compressor;
|
||||
|
||||
static Compression() {
|
||||
if ( Core.Unix )
|
||||
Compressor = new CompressorUnix();
|
||||
else if ( Core.Is64Bit )
|
||||
if ( Core.Unix ) {
|
||||
if ( Core.Is64Bit ) {
|
||||
Compressor = new CompressorUnix64();
|
||||
} else {
|
||||
Compressor = new CompressorUnix32();
|
||||
}
|
||||
} else if ( Core.Is64Bit ) {
|
||||
Compressor = new Compressor64();
|
||||
else
|
||||
} else {
|
||||
Compressor = new Compressor32();
|
||||
}
|
||||
}
|
||||
|
||||
public static ZLibError Pack( byte[] dest, ref int destLength, byte[] source, int sourceLength ) {
|
||||
|
|
@ -279,7 +284,7 @@ namespace Server.Network {
|
|||
}
|
||||
}
|
||||
|
||||
public sealed class CompressorUnix : ICompressor {
|
||||
public sealed class CompressorUnix32 : ICompressor {
|
||||
[DllImport( "libz" )]
|
||||
private static extern string zlibVersion();
|
||||
|
||||
|
|
@ -292,7 +297,7 @@ namespace Server.Network {
|
|||
[DllImport( "libz" )]
|
||||
private static extern ZLibError uncompress( byte[] dest, ref int destLen, byte[] source, int sourceLen );
|
||||
|
||||
public CompressorUnix() {
|
||||
public CompressorUnix32() {
|
||||
}
|
||||
|
||||
public string Version {
|
||||
|
|
@ -314,6 +319,50 @@ namespace Server.Network {
|
|||
}
|
||||
}
|
||||
|
||||
public sealed class CompressorUnix64 : ICompressor {
|
||||
[DllImport( "libz" )]
|
||||
private static extern string zlibVersion();
|
||||
|
||||
[DllImport( "libz" )]
|
||||
private static extern ZLibError compress( byte[] dest, ref ulong destLength, byte[] source, int sourceLength );
|
||||
|
||||
[DllImport( "libz" )]
|
||||
private static extern ZLibError compress2( byte[] dest, ref ulong destLength, byte[] source, int sourceLength, ZLibQuality quality );
|
||||
|
||||
[DllImport( "libz" )]
|
||||
private static extern ZLibError uncompress( byte[] dest, ref ulong destLen, byte[] source, int sourceLen );
|
||||
|
||||
public CompressorUnix64() {
|
||||
}
|
||||
|
||||
public string Version {
|
||||
get {
|
||||
return zlibVersion();
|
||||
}
|
||||
}
|
||||
|
||||
public ZLibError Compress( byte[] dest, ref int destLength, byte[] source, int sourceLength ) {
|
||||
ulong destLengthLong = (ulong)destLength;
|
||||
ZLibError z = compress( dest, ref destLengthLong, source, sourceLength );
|
||||
destLength = (int)destLengthLong;
|
||||
return z;
|
||||
}
|
||||
|
||||
public ZLibError Compress( byte[] dest, ref int destLength, byte[] source, int sourceLength, ZLibQuality quality ) {
|
||||
ulong destLengthLong = (ulong)destLength;
|
||||
ZLibError z = compress2( dest, ref destLengthLong, source, sourceLength, quality );
|
||||
destLength = (int)destLengthLong;
|
||||
return z;
|
||||
}
|
||||
|
||||
public ZLibError Decompress( byte[] dest, ref int destLength, byte[] source, int sourceLength ) {
|
||||
ulong destLengthLong = (ulong)destLength;
|
||||
ZLibError z = uncompress( dest, ref destLengthLong, source, sourceLength );
|
||||
destLength = (int)destLengthLong;
|
||||
return z;
|
||||
}
|
||||
}
|
||||
|
||||
public enum ZLibError : int {
|
||||
VersionError = -6,
|
||||
BufferError = -5,
|
||||
|
|
|
|||
|
|
@ -399,8 +399,11 @@ namespace Server
|
|||
|
||||
fixed ( StaticTile *pTiles = staTiles )
|
||||
{
|
||||
#if !MONO
|
||||
NativeReader.Read( m_Statics.SafeFileHandle.DangerousGetHandle(), pTiles, length );
|
||||
|
||||
#else
|
||||
NativeReader.Read( m_Statics.Handle, pTiles, length );
|
||||
#endif
|
||||
if ( m_Lists == null )
|
||||
{
|
||||
m_Lists = new TileList[8][];
|
||||
|
|
@ -469,7 +472,11 @@ namespace Server
|
|||
|
||||
fixed ( Tile *pTiles = tiles )
|
||||
{
|
||||
#if !MONO
|
||||
NativeReader.Read( m_Map.SafeFileHandle.DangerousGetHandle(), pTiles, 192 );
|
||||
#else
|
||||
NativeReader.Read( m_Map.Handle, pTiles, 192 );
|
||||
#endif
|
||||
}
|
||||
|
||||
return tiles;
|
||||
|
|
|
|||
|
|
@ -99,7 +99,11 @@ namespace Server
|
|||
|
||||
fixed ( Tile *pTiles = tiles )
|
||||
{
|
||||
#if !MONO
|
||||
NativeReader.Read( fsData.SafeFileHandle.DangerousGetHandle(), pTiles, 192 );
|
||||
#else
|
||||
NativeReader.Read( fsData.Handle, pTiles, 192 );
|
||||
#endif
|
||||
}
|
||||
|
||||
matrix.SetLandBlock( x, y, tiles );
|
||||
|
|
@ -164,7 +168,11 @@ namespace Server
|
|||
|
||||
fixed ( StaticTile *pTiles = staTiles )
|
||||
{
|
||||
#if !MONO
|
||||
NativeReader.Read( fsData.SafeFileHandle.DangerousGetHandle(), pTiles, length );
|
||||
#else
|
||||
NativeReader.Read( fsData.Handle, pTiles, length );
|
||||
#endif
|
||||
StaticTile *pCur = pTiles, pEnd = pTiles + tileCount;
|
||||
|
||||
while ( pCur < pEnd )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue