Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public MustInherit Class NetworkMessage
- Public Overridable Property Id As UInteger
- Public Const BIT_RIGHT_SHIFT_LEN_PACKET_ID As UInteger = 2
- Public Const BIT_MASK As UInteger = 3
- Public MustOverride Sub oSerialize(Writer As BigEndianWriter)
- Public MustOverride Sub oDeserialize(Reader As BigEndianReader)
- Public Sub Serialize(Writer As BigEndianWriter)
- oSerialize(Writer)
- Write(Writer)
- End Sub
- Public Sub Deserialize(Reader As BigEndianReader)
- Console.WriteLine("[RCV] ({0}) {1}.", Id, Me.GetType().Name)
- oDeserialize(Reader)
- End Sub
- Public Sub Write(Writer As BigEndianWriter)
- Dim Data() As Byte = Writer.Data
- Writer.Clear()
- Dim TypeLen As Byte = ComputeTypeLen(CUInt(Data.Length))
- Writer.WriteShort(subComputeStaticHeader(Id, TypeLen))
- Select Case TypeLen
- Case 0
- Return
- Case 1
- Writer.WriteByte(CByte(Data.Length))
- Case 2
- Writer.WriteShort(CShort(Data.Length))
- Case 3
- Writer.WriteByte(CByte(Data.Length >> 16 And 255))
- Writer.WriteShort(CShort(Data.Length And 65535))
- End Select
- Writer.WriteBytes(Data)
- End Sub
- Private Function ComputeTypeLen(Len As UInteger) As Byte
- If Len > 65535 Then
- Return 3
- Else
- If Len > 255 Then
- Return 2
- Else
- If Len > 0 Then
- Return 1
- Else
- Return 0
- End If
- End If
- End If
- End Function
- Private Function subComputeStaticHeader(msgId As UShort, TypeLen As Byte) As Short
- Return CShort(msgId << BIT_RIGHT_SHIFT_LEN_PACKET_ID Or TypeLen)
- End Function
- End Class
- Public Class CharactersListMessage
- Inherits BasicCharactersListMessage
- Public Overrides Property Id As UInteger = 151
- Public hasStartupActions As Boolean
- Public Sub New()
- End Sub
- Public Sub New(Characters As IEnumerable(Of CharacterBaseInformations), hasStartupActions As Boolean)
- Me.Characters = Characters
- Me.hasStartupActions = hasStartupActions
- End Sub
- Public Overrides Sub oSerialize(Writer As BigEndianWriter)
- MyBase.oSerialize(Writer)
- Writer.WriteBoolean(hasStartupActions)
- End Sub
- Public Overrides Sub oDeserialize(Reader As BigEndianReader)
- MyBase.oDeserialize(Reader)
- hasStartupActions = Reader.ReadBoolean()
- End Sub
- End Class
- Public Class BasicCharactersListMessage
- Inherits NetworkMessage
- Public Overrides Property Id As UInteger = 6475
- Public Characters As IEnumerable(Of CharacterBaseInformations)
- Sub New()
- End Sub
- Sub New(Characters As IEnumerable(Of CharacterBaseInformations))
- Me.Characters = Characters
- End Sub
- Public Overrides Sub oSerialize(Writer As BigEndianWriter)
- Writer.WriteShort(Characters.Count)
- For Each C As CharacterBaseInformations In Characters
- Writer.WriteShort(45) 'TypeId CharacterBaseInformations = 45
- C.Serialize(Writer)
- Next
- End Sub
- Public Overrides Sub oDeserialize(Reader As BigEndianReader)
- Dim Limit As UShort = Reader.ReadUShort()
- Characters = New CharacterBaseInformations(Limit - 1) {}
- For I As Integer = 0 To Limit - 1
- TryCast(Characters, CharacterBaseInformations())(I) = New CharacterBaseInformations() With {.Id = Reader.ReadShort}
- TryCast(Characters, CharacterBaseInformations())(I).Deserialize(Reader)
- Next
- End Sub
- End Class
- Public Class CharacterBaseInformations
- Inherits CharacterMinimalPlusLookInformations
- Public breed As Integer
- Public sex As Boolean
- Public Sub New()
- End Sub
- Public Sub New(id As Double, name As String, level As Byte, entityLook As EntityLook, breed As SByte, sex As Boolean)
- MyBase.New(id, name, level, entityLook)
- Me.breed = breed
- Me.sex = sex
- End Sub
- Public Overrides Sub Serialize(writer As BigEndianWriter)
- MyBase.Serialize(writer)
- writer.WriteByte(breed)
- writer.WriteBoolean(sex)
- End Sub
- Public Overrides Sub Deserialize(reader As BigEndianReader)
- MyBase.Deserialize(reader)
- breed = reader.ReadByte()
- sex = reader.ReadBoolean()
- End Sub
- End Class
- Public Class CharacterMinimalPlusLookInformations
- Inherits CharacterMinimalInformations
- Public entityLook As EntityLook
- Public Sub New()
- entityLook = New EntityLook()
- End Sub
- Public Sub New(id As Double, name As String, level As Byte, entityLook As EntityLook)
- MyBase.New(id, name, level)
- Me.entityLook = entityLook
- End Sub
- Public Overrides Sub Serialize(writer As BigEndianWriter)
- MyBase.Serialize(writer)
- entityLook.Serialize(writer)
- End Sub
- Public Overrides Sub Deserialize(reader As BigEndianReader)
- MyBase.Deserialize(reader)
- entityLook = New EntityLook()
- entityLook.Deserialize(reader)
- End Sub
- End Class
- Public Class CharacterMinimalInformations
- Inherits CharacterBasicMinimalInformations
- Public level As Byte = 1
- Public Sub New()
- End Sub
- Public Sub New(id As Double, name As String, level As Byte)
- MyBase.New(id, name)
- Me.level = level
- End Sub
- Public Overrides Sub Serialize(writer As BigEndianWriter)
- MyBase.Serialize(writer)
- writer.WriteSByte(level)
- End Sub
- Public Overrides Sub Deserialize(reader As BigEndianReader)
- MyBase.Deserialize(reader)
- level = reader.ReadSByte()
- End Sub
- End Class
- Public Class CharacterBasicMinimalInformations
- Inherits AbstractCharacterInformation
- Public name As String = ""
- Public Sub New()
- End Sub
- Public Sub New(id As Double, name As String)
- MyBase.New(id)
- Me.name = name
- End Sub
- Public Overrides Sub Serialize(writer As BigEndianWriter)
- MyBase.Serialize(writer)
- writer.WriteUTF(name)
- End Sub
- Public Overrides Sub Deserialize(reader As BigEndianReader)
- MyBase.Deserialize(reader)
- name = reader.ReadUTF()
- End Sub
- End Class
- Public Class AbstractCharacterInformation
- Public id As Double
- Public Sub New()
- End Sub
- Public Sub New(id As Double)
- Me.id = id
- End Sub
- Public Overridable Sub Serialize(writer As BigEndianWriter)
- writer.WriteVarLong(id)
- End Sub
- Public Overridable Sub Deserialize(reader As BigEndianReader)
- id = reader.ReadVarUhLong()
- End Sub
- End Class
- Public Class EntityLook
- 'Remplacement IEnumerable -> List car NullReference au niveau de l'émulateur.
- Public bonesId As UShort
- Public Iskins As IEnumerable(Of UShort)
- Public skins As New List(Of UShort)
- Public IindexedColors As IEnumerable(Of Integer)
- Public indexedColors As New List(Of UShort)
- Public Iscales As IEnumerable(Of Short)
- Public scales As New List(Of Short)
- Public Isubentities As IEnumerable(Of SubEntity)
- Public subentities As New List(Of SubEntity)
- Public Sub New()
- End Sub
- Public Sub New(bonesId As UShort, skins As IEnumerable(Of UShort), indexedColors As IEnumerable(Of Integer), scales As IEnumerable(Of Short), subentities As IEnumerable(Of SubEntity))
- Me.bonesId = bonesId
- Me.skins = skins
- Me.indexedColors = indexedColors
- Me.scales = scales
- Me.subentities = subentities
- End Sub
- Public Overridable Sub Serialize(writer As BigEndianWriter)
- writer.WriteVarShort(CInt(bonesId))
- writer.WriteShort(CShort(skins.Count()))
- For Each entry In skins
- writer.WriteVarShort(CInt(entry))
- Next
- writer.WriteShort(CShort(indexedColors.Count()))
- For Each entry In indexedColors
- writer.WriteInt(entry)
- Next
- writer.WriteShort(CShort(scales.Count()))
- For Each entry In scales
- writer.WriteVarShort(CInt(entry))
- Next
- writer.WriteShort(CShort(subentities.Count()))
- For Each entry In subentities
- entry.Serialize(writer)
- Next
- End Sub
- Public Overridable Sub Deserialize(reader As BigEndianReader)
- bonesId = reader.ReadVarUhShort()
- Dim limit = reader.ReadUShort()
- skins = New List(Of UShort)
- For i As Integer = 0 To limit - 1
- TryCast(skins, List(Of UShort))(i) = reader.ReadVarUhShort()
- Next
- limit = reader.ReadUShort()
- indexedColors = New List(Of UShort)
- For i As Integer = 0 To limit - 1
- TryCast(indexedColors, List(Of UShort))(i) = reader.ReadInt()
- Next
- limit = reader.ReadUShort()
- scales = New List(Of Short)
- For i As Integer = 0 To limit - 1
- TryCast(scales, List(Of Short))(i) = reader.ReadVarShort()
- Next
- limit = reader.ReadUShort()
- subentities = New List(Of SubEntity)
- For i As Integer = 0 To limit - 1
- TryCast(subentities, List(Of SubEntity))(i) = New SubEntity()
- TryCast(subentities, List(Of SubEntity))(i).Deserialize(reader)
- Next
- End Sub
- End Class
- Public Class SubEntity
- Public bindingPointCategory As SByte
- Public bindingPointIndex As SByte
- Public subEntityLook As EntityLook
- Public Sub New()
- subEntityLook = New EntityLook
- End Sub
- Public Sub New(bindingPointCategory As SByte, bindingPointIndex As SByte, subEntityLook As EntityLook)
- Me.bindingPointCategory = bindingPointCategory
- Me.bindingPointIndex = bindingPointIndex
- Me.subEntityLook = subEntityLook
- End Sub
- Public Overridable Sub Serialize(writer As BigEndianWriter)
- writer.WriteSByte(bindingPointCategory)
- writer.WriteSByte(bindingPointIndex)
- subEntityLook.Serialize(writer)
- End Sub
- Public Overridable Sub Deserialize(reader As BigEndianReader)
- bindingPointCategory = reader.ReadSByte()
- bindingPointIndex = reader.ReadSByte()
- subEntityLook = New EntityLook()
- subEntityLook.Deserialize(reader)
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement