gameimagelibtexture.vb.svn-base
来自「MirUnleashed vb.net Module modMain」· SVN-BASE 代码 · 共 145 行
SVN-BASE
145 行
'### Visual Basic.NET and Direct X9 Legend of MiR Project ###'
'### Mir Unleashed Client GIL Texture Module ###'
'### http://www.lomcn.co.uk ###' '### Credits to TrueADM and DeathWish ###'
'This basically loads the .GIL and .GIX 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 GameImageLibTexture
Private CurrentDetailsName, NeededDetails As String
Private Details() As String
Private Structure strctLibrary
Public LibraryDetails As String
Public CurrentLibraryName As String
End Structure
Private Library As strctLibrary
Public TextureCheck(10, 100) As Short
Private BitmapStream As System.IO.FileStream
Public Function LoadTextureFromFile(ByVal Filename As String, ByVal ImageNumber As Long, ByVal LibraryType As Integer, ByVal ObjectsExtra As Integer, Optional ByVal ReturnDimensions As Boolean = False) As Texture
'TextureCheck(LibraryType, ImageNumber) = TextureCheck(LibraryType, ImageNumber) + 1
'If TextureCheck(LibraryType, ImageNumber) = TextureCheck(LibraryType, ImageNumber) = 2 Then
'MsgBox("Texture Bug! Texture: " & LibraryType & ", " & ImageNumber)
'End If
Filename = My.Application.Info.DirectoryPath & "\Data\" & Filename
SetLibraryDetails(LibraryType, ObjectsExtra, Filename)
If Not CurrentDetailsName = System.IO.Path.GetFileNameWithoutExtension(Filename) Then
Details = Split(Library.LibraryDetails, vbCrLf) '#### MODIFY THIS TO IMPROVE LOAD IMAGES SPEED ####'
CurrentDetailsName = System.IO.Path.GetFileNameWithoutExtension(Filename)
End If
If Not Details(ImageNumber) Is Nothing Then NeededDetails = Details(ImageNumber) Else NeededDetails = -1
Dim fOffset As Long = GetTok(NeededDetails, 1, "|")
Dim fLength As Long = GetTok(NeededDetails, 2, "|")
Dim Height As Integer = GetTok(NeededDetails, 4, "|")
Dim Width As Integer = GetTok(NeededDetails, 5, "|")
If NeededDetails = "-1" Or fOffset = -1 Or fLength = -1 Or Height = -1 Or Width = -1 Then
Return Nothing
End If
If Height <= 1 And Width <= 1 Then
Return Nothing
End If
If BitmapStream Is Nothing Then
BitmapStream = New System.IO.FileStream(Filename, IO.FileMode.Open, IO.FileAccess.Read)
End If
If Not System.IO.Path.GetFileName(BitmapStream.Name) = Filename Then
BitmapStream.Close()
BitmapStream = New System.IO.FileStream(Filename, IO.FileMode.Open, IO.FileAccess.Read)
End If
Dim Image(fLength) As Byte
BitmapStream.Seek(fOffset, IO.SeekOrigin.Begin)
BitmapStream.Read(Image, 0, fLength)
'Dim Stream As New System.IO.MemoryStream(Image, False)
'File.OpenRead(fileName))
Dim Stream As New System.IO.MemoryStream(Image, False)
'make new Array
'LoadTextureFromFile = TextureLoader.FromStream(D3D, Stream, 0, 0, 1, Usage.None, Format.Unknown, Pool.Managed, Filter.None, Filter.None, 0, Color.Black.ToArgb)
If Filename.Contains("Interface2") Or Filename.Contains("Glow") Then
LoadTextureFromFile = TextureLoader.FromStream(D3D, Stream, Width, Height, 0, 0, Format.A8B8G8R8, Pool.Managed, Filter.None, Filter.Linear, Color.Black.ToArgb)
Stream.Close()
Else
LoadTextureFromFile = TextureLoader.FromStream(D3D, Stream, Width, Height, 0, 0, Format.A8B8G8R8, Pool.Managed, Filter.None, Filter.Linear, Color.Magenta.ToArgb)
Stream.Close()
End If
End Function
Private libGUI As strctLibrary
Private libTiles As strctLibrary
Private LibGUI2 As strctLibrary
Public Sub SetLibraryDetails(ByVal LibraryType As Integer, ByVal ObjectsExtra As Integer, ByVal Filename As String)
Select Case LibraryType
Case 0
If Not Library.CurrentLibraryName = System.IO.Path.GetFileNameWithoutExtension(Filename) Then
Dim FileStream As New System.IO.FileStream(My.Application.Info.DirectoryPath & "\Data\" & System.IO.Path.GetFileNameWithoutExtension(Filename) & ".gix", IO.FileMode.Open)
Dim Data(FileStream.Length) As Byte
FileStream.Read(Data, 0, FileStream.Length)
FileStream.Close()
Library.LibraryDetails = System.Text.Encoding.ASCII.GetString(Data)
Library.CurrentLibraryName = System.IO.Path.GetFileNameWithoutExtension(Filename)
End If
Case 1
If libGUI.LibraryDetails = "" Then
Dim FileStream As New System.IO.FileStream(My.Application.Info.DirectoryPath & "\Data\" & System.IO.Path.GetFileNameWithoutExtension(Filename) & ".gix", IO.FileMode.Open)
Dim Data(FileStream.Length) As Byte
FileStream.Read(Data, 0, FileStream.Length)
FileStream.Close()
libGUI.LibraryDetails = System.Text.Encoding.ASCII.GetString(Data)
Library.LibraryDetails = libGUI.LibraryDetails
Else
Library.LibraryDetails = libGUI.LibraryDetails
End If
Case 2
If LibGUI2.LibraryDetails = "" Then
Dim FileStream As New System.IO.FileStream(My.Application.Info.DirectoryPath & "\Data\" & System.IO.Path.GetFileNameWithoutExtension(Filename) & ".gix", IO.FileMode.Open)
Dim Data(FileStream.Length) As Byte
FileStream.Read(Data, 0, FileStream.Length)
FileStream.Close()
LibGUI2.LibraryDetails = System.Text.Encoding.ASCII.GetString(Data)
Library.LibraryDetails = LibGUI2.LibraryDetails
Else
Library.LibraryDetails = LibGUI2.LibraryDetails
End If
End Select
End Sub
Public Function GetTok(ByVal Data As String, ByVal I As Integer, ByVal Delim As String) As String
Dim DataArray() As String = Split(Data, Delim)
If I < DataArray.Length Then
Return DataArray(I)
End If
Return "-1" '"failure"
End Function
End Module
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?