Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Public Class CChrFile
- Public Characters() As Character
- Public Bones() As String
- Public Motions() As String
- Public Effects() As String
- Structure Character
- Public IsActive As Boolean
- Public BoneID As Short
- Public Name As String
- Public Models() As Short
- Public Motions() As Motion
- Public Effects() As Effect
- Structure Motion
- Public ID As Short
- Public MotionID As Short
- End Structure
- Structure Effect
- Public ID As Short
- Public EffectID As Short
- End Structure
- End Structure
- Public Function Load(ByVal Path As String) As Boolean
- Dim File As New FileStream(Path, FileMode.Open)
- Dim FReader As New BinaryReader(File)
- Dim bone_count As Int16 = FReader.ReadInt16()
- ReDim Bones(bone_count)
- For i = 0 To bone_count - 1
- Bones(i) = ReadZSTR(FReader)
- Next
- Dim motion_count As Int16 = FReader.ReadInt16()
- ReDim Motions(motion_count)
- For i = 0 To motion_count - 1
- Motions(i) = ReadZSTR(FReader)
- Next
- Dim effect_count As Int16 = FReader.ReadInt16()
- ReDim Effects(effect_count)
- For i = 0 To effect_count - 1
- Effects(i) = ReadZSTR(FReader)
- Next
- Dim character_count As Int16 = FReader.ReadInt16()
- ReDim Characters(character_count)
- For i As Integer = 0 To character_count - 1
- Characters(i) = New Character
- With Characters(i)
- .IsActive = FReader.ReadByte()
- If .IsActive = 0 Then
- Continue For
- End If
- .BoneID = FReader.ReadInt16()
- .Name = ReadZSTR(FReader)
- Dim meshCount As Short = FReader.ReadInt16()
- ReDim .Models(meshCount)
- For a = 0 To meshCount - 1
- .Models(a) = FReader.ReadInt16()
- Next
- motion_count = FReader.ReadInt16()
- ReDim .Motions(motion_count)
- For a = 0 To motion_count - 1
- .Motions(a).ID = FReader.ReadInt16()
- .Motions(a).MotionID = FReader.ReadInt16()
- Next
- effect_count = FReader.ReadInt16()
- ReDim .Effects(effect_count)
- For a = 0 To effect_count - 1
- .Effects(a).ID = FReader.ReadInt16()
- .Effects(a).EffectID = FReader.ReadInt16()
- Next
- End With
- Next
- FReader.Close()
- Return True
- End Function
- Public Function ReadZSTR(ByRef Br As BinaryReader) As String
- Dim Str As String = ""
- Do
- Dim Tmp As Byte = Br.ReadByte()
- If Tmp = &H0 Then
- Return Str
- Else
- Str &= ChrW(Tmp)
- End If
- Loop
- End Function
- End Class
Add Comment
Please, Sign In to add comment