wemadeimagelibtexture.vb.svn-base
来自「MirUnleashed vb.net Module modMain」· SVN-BASE 代码 · 共 1,781 行 · 第 1/5 页
SVN-BASE
1,781 行
'### Visual Basic.NET and Direct X9 Legend of MiR Project ###'
'### Mir Unleashed Client WIL Texture Module ###'
'### http://www.lomcn.co.uk ###' '### Credits to TrueADM and DeathWish ###'
'This basically loads the .WIL and .WIX textures so that they can be drawn.
'Modifications will be made to this later on to improve loading times etc.
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Module LoadWILGraphics
#Region "Load Weapon WIL and WIX"
Public Sub LoadWILWeaponImage(ByVal Index As Integer)
Dim FileName As String
Dim DataStream As System.IO.FileStream
FileName = My.Application.Info.DirectoryPath & "\Data\Weapon.wil"
DataStream = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
Dim DataArray(14) As Byte
DataStream.Seek(WIL_WeaponImage.ImageIndex(Index), IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, 12)
WIL_WeaponImage.ImageWidth(Index) = MakeInt16(DataArray(0), DataArray(1))
WIL_WeaponImage.ImageHeight(Index) = MakeInt16(DataArray(2), DataArray(3))
If (MakeInt16(DataArray(4), DataArray(5))) >= 32768 Then
WIL_WeaponImage.ImageX(Index) = MakeInt16(DataArray(4), DataArray(5)) - 65536
Else
WIL_WeaponImage.ImageX(Index) = MakeInt16(DataArray(4), DataArray(5))
End If
If (MakeInt16(DataArray(6), DataArray(7))) >= 32768 Then
WIL_WeaponImage.ImageY(Index) = MakeInt16(DataArray(6), DataArray(7)) - 65536
Else
WIL_WeaponImage.ImageY(Index) = MakeInt16(DataArray(6), DataArray(7))
End If
Dim Bytes As Integer
Bytes = WIL_WeaponImage.ImageWidth(Index) * WIL_WeaponImage.ImageHeight(Index)
ReDim DataArray(Bytes)
If WIL_WeaponImage.NewWil = False Then
DataStream.Seek(WIL_WeaponImage.ImageIndex(Index) + 12, IO.SeekOrigin.Begin)
Else
DataStream.Seek(WIL_WeaponImage.ImageIndex(Index) + 8, IO.SeekOrigin.Begin)
End If
DataStream.Read(DataArray, 0, Bytes)
DataStream.Close()
WIL_WeaponImage.ImageTexture(Index) = New Microsoft.DirectX.Direct3D.Texture(D3D, WIL_WeaponImage.ImageWidth(Index), WIL_WeaponImage.ImageHeight(Index), 1, Usage.None, Format.A8R8G8B8, Pool.Managed)
Dim Stream As GraphicsStream = WIL_WeaponImage.ImageTexture(Index).LockRectangle(0, LockFlags.None)
Dim S As Integer = 0
Dim B As Integer = 1
Dim D As Integer
While S < Bytes
'start from left to right of top line
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_WeaponImage.ImageWidth(Index) * B))).Blue)
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_WeaponImage.ImageWidth(Index) * B))).Green)
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_WeaponImage.ImageWidth(Index) * B))).Red)
If CustomPal(DataArray(Bytes + D - (WIL_WeaponImage.ImageWidth(Index) * B))).Blue = 0 And CustomPal(DataArray(Bytes + D - (WIL_WeaponImage.ImageWidth(Index) * B))).Red = 0 And CustomPal(DataArray(Bytes + D - (WIL_WeaponImage.ImageWidth(Index) * B))).Green = 0 Then
Stream.WriteByte(0)
Else
Stream.WriteByte(255)
End If
S = S + 1
D = D + 1
If S >= (WIL_WeaponImage.ImageWidth(Index) * B) Then
B = B + 1
D = 0
End If
End While
WIL_WeaponImage.ImageTexture(Index).UnlockRectangle(0)
'WIL_WeaponImage.ImageTexture(Index).
End Sub
Public Sub LoadWIXWeaponFile()
Dim FileName As String
Dim DataStream As System.IO.FileStream
FileName = My.Application.Info.DirectoryPath & "\Data\Weapon.WIX"
DataStream = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
Dim DataArray(DataStream.Length) As Byte
DataStream.Seek(44, IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, DataStream.Length)
WIL_WeaponImage.ImageCount = MakeInt32(MakeInt16(DataArray(0), DataArray(1)), MakeInt16(DataArray(2), DataArray(3)))
ReDim WIL_WeaponImage.ImageIndex(WIL_WeaponImage.ImageCount - 1)
ReDim WIL_WeaponImage.ImageHeight(WIL_WeaponImage.ImageCount - 1)
ReDim WIL_WeaponImage.ImageWidth(WIL_WeaponImage.ImageCount - 1)
ReDim WIL_WeaponImage.ImageX(WIL_WeaponImage.ImageCount - 1)
ReDim WIL_WeaponImage.ImageY(WIL_WeaponImage.ImageCount - 1)
ReDim WIL_WeaponImage.ImageTexture(WIL_WeaponImage.ImageCount - 1)
ReDim WIL_WeaponImage.ImageLoaded(WIL_WeaponImage.ImageCount - 1)
If DataArray(4) = 56 Then
WIL_WeaponImage.NewWil = True
Else
WIL_WeaponImage.NewWil = False
End If
Dim I As Integer
For I = 0 To WIL_WeaponImage.ImageCount - 1
WIL_WeaponImage.ImageIndex(I) = MakeInt32(MakeInt16(DataArray(8 + (I * 4)), DataArray(9 + (I * 4))), MakeInt16(DataArray(10 + (I * 4)), DataArray(11 + (I * 4))))
Next I
DataStream.Close()
End Sub
#End Region
#Region "Load Human/Player WIL and WIX"
Public Sub LoadWILHumImage(ByVal Index As Integer)
Dim FileName As String
Dim DataStream As System.IO.FileStream
FileName = My.Application.Info.DirectoryPath & "\Data\Hum.wil"
DataStream = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
Dim DataArray(14) As Byte
DataStream.Seek(WIL_HumImage.ImageIndex(Index), IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, 12)
WIL_HumImage.ImageWidth(Index) = MakeInt16(DataArray(0), DataArray(1))
WIL_HumImage.ImageHeight(Index) = MakeInt16(DataArray(2), DataArray(3))
If (MakeInt16(DataArray(4), DataArray(5))) >= 32768 Then
WIL_HumImage.ImageX(Index) = MakeInt16(DataArray(4), DataArray(5)) - 65536
Else
WIL_HumImage.ImageX(Index) = MakeInt16(DataArray(4), DataArray(5))
End If
If (MakeInt16(DataArray(6), DataArray(7))) >= 32768 Then
WIL_HumImage.ImageY(Index) = MakeInt16(DataArray(6), DataArray(7)) - 65536
Else
WIL_HumImage.ImageY(Index) = MakeInt16(DataArray(6), DataArray(7))
End If
Dim Bytes As Integer
Bytes = WIL_HumImage.ImageWidth(Index) * WIL_HumImage.ImageHeight(Index)
ReDim DataArray(Bytes)
DataStream.Seek(WIL_HumImage.ImageIndex(Index) + 12, IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, Bytes)
DataStream.Close()
WIL_HumImage.ImageTexture(Index) = New Microsoft.DirectX.Direct3D.Texture(D3D, WIL_HumImage.ImageWidth(Index), WIL_HumImage.ImageHeight(Index), 1, Usage.None, Format.A8R8G8B8, Pool.Managed)
Dim Stream As GraphicsStream = WIL_HumImage.ImageTexture(Index).LockRectangle(0, LockFlags.None)
Dim S As Integer = 0
Dim B As Integer = 1
Dim D As Integer
While S < Bytes
'start from left to right of top line
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_HumImage.ImageWidth(Index) * B))).Blue)
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_HumImage.ImageWidth(Index) * B))).Green)
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_HumImage.ImageWidth(Index) * B))).Red)
If CustomPal(DataArray(Bytes + D - (WIL_HumImage.ImageWidth(Index) * B))).Blue = 0 And CustomPal(DataArray(Bytes + D - (WIL_HumImage.ImageWidth(Index) * B))).Red = 0 And CustomPal(DataArray(Bytes + D - (WIL_HumImage.ImageWidth(Index) * B))).Green = 0 Then
Stream.WriteByte(0)
Else
Stream.WriteByte(255)
End If
S = S + 1
D = D + 1
If S >= (WIL_HumImage.ImageWidth(Index) * B) Then
B = B + 1
D = 0
End If
End While
WIL_HumImage.ImageTexture(Index).UnlockRectangle(0)
'WIL_HumImage.ImageTexture(Index).
End Sub
Public Sub LoadWIXHumFile()
Dim FileName As String
Dim DataStream As System.IO.FileStream
FileName = My.Application.Info.DirectoryPath & "\Data\Hum.WIX"
DataStream = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
Dim DataArray(DataStream.Length) As Byte
DataStream.Seek(44, IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, DataStream.Length)
WIL_HumImage.ImageCount = MakeInt32(MakeInt16(DataArray(0), DataArray(1)), MakeInt16(DataArray(2), DataArray(3)))
ReDim WIL_HumImage.ImageIndex(WIL_HumImage.ImageCount - 1)
ReDim WIL_HumImage.ImageHeight(WIL_HumImage.ImageCount - 1)
ReDim WIL_HumImage.ImageWidth(WIL_HumImage.ImageCount - 1)
ReDim WIL_HumImage.ImageX(WIL_HumImage.ImageCount - 1)
ReDim WIL_HumImage.ImageY(WIL_HumImage.ImageCount - 1)
ReDim WIL_HumImage.ImageTexture(WIL_HumImage.ImageCount - 1)
ReDim WIL_HumImage.ImageLoaded(WIL_HumImage.ImageCount - 1)
Dim I As Integer
For I = 0 To WIL_HumImage.ImageCount - 1
WIL_HumImage.ImageIndex(I) = MakeInt32(MakeInt16(DataArray(8 + (I * 4)), DataArray(9 + (I * 4))), MakeInt16(DataArray(10 + (I * 4)), DataArray(11 + (I * 4))))
Next I
DataStream.Close()
End Sub
#End Region
#Region "Load Tile WIL and WIX"
Public Sub LoadWILTilesImage(ByVal Index As Integer)
Dim FileName As String
Dim DataStream As System.IO.FileStream
FileName = My.Application.Info.DirectoryPath & "\Data\Tiles.wil"
DataStream = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
Dim DataArray(14) As Byte
DataStream.Seek(WIL_TilesImage.ImageIndex(Index), IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, 8)
WIL_TilesImage.ImageWidth(Index) = MakeInt16(DataArray(0), DataArray(1))
WIL_TilesImage.ImageHeight(Index) = MakeInt16(DataArray(2), DataArray(3))
Dim Bytes As Integer
Bytes = WIL_TilesImage.ImageWidth(Index) * WIL_TilesImage.ImageHeight(Index)
ReDim DataArray(Bytes)
DataStream.Seek(WIL_TilesImage.ImageIndex(Index) + 12, IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, Bytes)
DataStream.Close()
WIL_TilesImage.ImageTexture(Index) = New Microsoft.DirectX.Direct3D.Texture(D3D, WIL_TilesImage.ImageWidth(Index), WIL_TilesImage.ImageHeight(Index), 1, Usage.None, Format.A8R8G8B8, Pool.Managed)
Dim Stream As GraphicsStream = WIL_TilesImage.ImageTexture(Index).LockRectangle(0, LockFlags.None)
Dim S As Integer = 0
Dim B As Integer = 1
Dim D As Integer
While S < Bytes
'start from left to right of top line
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_TilesImage.ImageWidth(Index) * B))).Blue)
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_TilesImage.ImageWidth(Index) * B))).Green)
Stream.WriteByte(CustomPal(DataArray(Bytes + D - (WIL_TilesImage.ImageWidth(Index) * B))).Red)
Stream.WriteByte(255)
S = S + 1
D = D + 1
If S >= (WIL_TilesImage.ImageWidth(Index) * B) Then
B = B + 1
D = 0
End If
End While
WIL_TilesImage.ImageTexture(Index).UnlockRectangle(0)
End Sub
Public Sub LoadWIXTilesFile()
Dim FileName As String
Dim DataStream As System.IO.FileStream
FileName = My.Application.Info.DirectoryPath & "\Data\Tiles.WIX"
DataStream = New System.IO.FileStream(FileName, IO.FileMode.Open, IO.FileAccess.Read)
Dim DataArray(DataStream.Length) As Byte
DataStream.Seek(44, IO.SeekOrigin.Begin)
DataStream.Read(DataArray, 0, DataStream.Length)
WIL_TilesImage.ImageCount = MakeInt32(MakeInt16(DataArray(0), DataArray(1)), MakeInt16(DataArray(2), DataArray(3)))
ReDim WIL_TilesImage.ImageIndex(WIL_TilesImage.ImageCount - 1)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?