This commit is contained in:
parent
2f1da843dc
commit
563e147869
2 changed files with 101 additions and 62 deletions
|
|
@ -433,7 +433,7 @@ namespace Server
|
|||
|
||||
public void Serialize( GenericWriter writer )
|
||||
{
|
||||
writer.Write( (int) 0 ); // version;
|
||||
writer.Write( (int) 1 ); // version;
|
||||
|
||||
writer.Write( m_Min );
|
||||
writer.Write( m_Max );
|
||||
|
|
@ -460,59 +460,66 @@ namespace Server
|
|||
{
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 0:
|
||||
m_Min = reader.ReadPoint2D();
|
||||
m_Max = reader.ReadPoint2D();
|
||||
m_Center = reader.ReadPoint2D();
|
||||
m_Width = reader.ReadInt();
|
||||
m_Height = reader.ReadInt();
|
||||
|
||||
int length = reader.ReadInt();
|
||||
|
||||
MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length];
|
||||
|
||||
if ( version == 0 ) {
|
||||
for ( int i = 0; i < length; ++i )
|
||||
{
|
||||
m_Min = reader.ReadPoint2D();
|
||||
m_Max = reader.ReadPoint2D();
|
||||
m_Center = reader.ReadPoint2D();
|
||||
m_Width = reader.ReadInt();
|
||||
m_Height = reader.ReadInt();
|
||||
int id = reader.ReadShort();
|
||||
if ( id >= 0x4000 )
|
||||
id -= 0x4000;
|
||||
|
||||
int length = reader.ReadInt();
|
||||
|
||||
MultiTileEntry[] allTiles = m_List = new MultiTileEntry[length];
|
||||
|
||||
for ( int i = 0; i < length; ++i )
|
||||
{
|
||||
allTiles[i].m_ItemID = reader.ReadUShort();
|
||||
allTiles[i].m_OffsetX = reader.ReadShort();
|
||||
allTiles[i].m_OffsetY = reader.ReadShort();
|
||||
allTiles[i].m_OffsetZ = reader.ReadShort();
|
||||
allTiles[i].m_Flags = reader.ReadInt();
|
||||
}
|
||||
|
||||
TileList[][] tiles = new TileList[m_Width][];
|
||||
m_Tiles = new StaticTile[m_Width][][];
|
||||
|
||||
for ( int x = 0; x < m_Width; ++x )
|
||||
{
|
||||
tiles[x] = new TileList[m_Height];
|
||||
m_Tiles[x] = new StaticTile[m_Height][];
|
||||
|
||||
for ( int y = 0; y < m_Height; ++y )
|
||||
tiles[x][y] = new TileList();
|
||||
}
|
||||
|
||||
for ( int i = 0; i < allTiles.Length; ++i )
|
||||
{
|
||||
if ( i == 0 || allTiles[i].m_Flags != 0 )
|
||||
{
|
||||
int xOffset = allTiles[i].m_OffsetX + m_Center.m_X;
|
||||
int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y;
|
||||
|
||||
tiles[xOffset][yOffset].Add( (ushort)allTiles[i].m_ItemID, (sbyte)allTiles[i].m_OffsetZ );
|
||||
}
|
||||
}
|
||||
|
||||
for ( int x = 0; x < m_Width; ++x )
|
||||
for ( int y = 0; y < m_Height; ++y )
|
||||
m_Tiles[x][y] = tiles[x][y].ToArray();
|
||||
|
||||
break;
|
||||
allTiles[i].m_ItemID = (ushort)id;
|
||||
allTiles[i].m_OffsetX = reader.ReadShort();
|
||||
allTiles[i].m_OffsetY = reader.ReadShort();
|
||||
allTiles[i].m_OffsetZ = reader.ReadShort();
|
||||
allTiles[i].m_Flags = reader.ReadInt();
|
||||
}
|
||||
} else {
|
||||
for ( int i = 0; i < length; ++i )
|
||||
{
|
||||
allTiles[i].m_ItemID = reader.ReadUShort();
|
||||
allTiles[i].m_OffsetX = reader.ReadShort();
|
||||
allTiles[i].m_OffsetY = reader.ReadShort();
|
||||
allTiles[i].m_OffsetZ = reader.ReadShort();
|
||||
allTiles[i].m_Flags = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
TileList[][] tiles = new TileList[m_Width][];
|
||||
m_Tiles = new StaticTile[m_Width][][];
|
||||
|
||||
for ( int x = 0; x < m_Width; ++x )
|
||||
{
|
||||
tiles[x] = new TileList[m_Height];
|
||||
m_Tiles[x] = new StaticTile[m_Height][];
|
||||
|
||||
for ( int y = 0; y < m_Height; ++y )
|
||||
tiles[x][y] = new TileList();
|
||||
}
|
||||
|
||||
for ( int i = 0; i < allTiles.Length; ++i )
|
||||
{
|
||||
if ( i == 0 || allTiles[i].m_Flags != 0 )
|
||||
{
|
||||
int xOffset = allTiles[i].m_OffsetX + m_Center.m_X;
|
||||
int yOffset = allTiles[i].m_OffsetY + m_Center.m_Y;
|
||||
|
||||
tiles[xOffset][yOffset].Add( (ushort)allTiles[i].m_ItemID, (sbyte)allTiles[i].m_OffsetZ );
|
||||
}
|
||||
}
|
||||
|
||||
for ( int x = 0; x < m_Width; ++x )
|
||||
for ( int y = 0; y < m_Height; ++y )
|
||||
m_Tiles[x][y] = tiles[x][y].ToArray();
|
||||
}
|
||||
|
||||
public MultiComponentList( BinaryReader reader, int count )
|
||||
|
|
|
|||
|
|
@ -1097,18 +1097,34 @@ namespace Server.Network
|
|||
|
||||
if ( item is BaseMulti ) {
|
||||
m_Stream.Write( (byte) 0x02 );
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
itemID &= 0x3FFF;
|
||||
|
||||
m_Stream.Write( (short) itemID );
|
||||
|
||||
m_Stream.Write( (byte) 0 );
|
||||
/*} else if ( ) {
|
||||
m_Stream.Write( (byte) 0x01 );
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
m_Stream.Write( (short) itemID );
|
||||
|
||||
m_Stream.Write( (byte) item.Direction );*/
|
||||
} else {
|
||||
m_Stream.Write( (byte) 0x00 );
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
itemID &= 0x7FFF;
|
||||
|
||||
m_Stream.Write( (short) itemID );
|
||||
|
||||
m_Stream.Write( (byte) 0 );
|
||||
}
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
m_Stream.Write( (short) itemID );
|
||||
|
||||
m_Stream.Write( (byte) item.Direction );
|
||||
|
||||
int amount = item.Amount;
|
||||
m_Stream.Write( (short) amount );
|
||||
m_Stream.Write( (short) amount );
|
||||
|
|
@ -1136,18 +1152,34 @@ namespace Server.Network
|
|||
|
||||
if ( item is BaseMulti ) {
|
||||
m_Stream.Write( (byte) 0x02 );
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
itemID &= 0x3FFF;
|
||||
|
||||
m_Stream.Write( (ushort) itemID );
|
||||
|
||||
m_Stream.Write( (byte) 0 );
|
||||
/*} else if ( ) {
|
||||
m_Stream.Write( (byte) 0x01 );
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
m_Stream.Write( (ushort) itemID );
|
||||
|
||||
m_Stream.Write( (byte) item.Direction );*/
|
||||
} else {
|
||||
m_Stream.Write( (byte) 0x00 );
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
itemID &= 0xFFFF;
|
||||
|
||||
m_Stream.Write( (ushort) itemID );
|
||||
|
||||
m_Stream.Write( (byte) 0 );
|
||||
}
|
||||
|
||||
m_Stream.Write( (int) item.Serial );
|
||||
|
||||
m_Stream.Write( (ushort) itemID );
|
||||
|
||||
m_Stream.Write( (byte) item.Direction );
|
||||
|
||||
int amount = item.Amount;
|
||||
m_Stream.Write( (short) amount );
|
||||
m_Stream.Write( (short) amount );
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue