Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
121 lines
3.5 KiB
OpenEdge ABL
121 lines
3.5 KiB
OpenEdge ABL
VERSION 1.0 CLASS
|
|
BEGIN
|
|
MultiUse = -1 'True
|
|
Persistable = 0 'NotPersistable
|
|
DataBindingBehavior = 0 'vbNone
|
|
DataSourceBehavior = 0 'vbNone
|
|
MTSTransactionMode = 0 'NotAnMTSObject
|
|
END
|
|
Attribute VB_Name = "cTable"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = True
|
|
Attribute VB_PredeclaredId = False
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
|
|
'Here we will encapsulate all of the code needed for the table
|
|
'Local variables for the properties of the table
|
|
Private moPosition As D3DVECTOR 'Current position of the table
|
|
Private moTable As CD3DFrame 'D3D Mesh for the table
|
|
Private mlTransparantPaddle As Boolean
|
|
Public DrawTable As Boolean ' You can also turn off the table (dunno why, but let'em)
|
|
|
|
'Position property
|
|
Public Property Let Position(oPos As D3DVECTOR)
|
|
moPosition = oPos
|
|
End Property
|
|
|
|
Public Property Get Position() As D3DVECTOR
|
|
Position = moPosition
|
|
End Property
|
|
|
|
'Transparent property
|
|
Public Property Let Transparent(ByVal fTrans As Boolean)
|
|
Dim oMesh As CD3DMesh, oMaterial As D3DMATERIAL8
|
|
Dim lNumMaterial As Long, lCount As Long
|
|
|
|
mlTransparantPaddle = fTrans
|
|
'now set the property
|
|
Set oMesh = moTable.FindChildObject("table", 0)
|
|
lNumMaterial = oMesh.GetMaterialCount
|
|
For lCount = 0 To lNumMaterial - 1
|
|
oMaterial = oMesh.GetMaterial(lCount)
|
|
If fTrans Then
|
|
oMaterial.diffuse.a = 0.5
|
|
Else
|
|
oMaterial.diffuse.a = 1
|
|
End If
|
|
oMesh.SetMaterial lCount, oMaterial
|
|
Next
|
|
End Property
|
|
|
|
Public Property Get Transparent() As Boolean
|
|
Transparent = mlTransparantPaddle
|
|
End Property
|
|
|
|
'Methods
|
|
Public Sub Init(ByVal sMedia As String, sFile As String)
|
|
Set moTable = D3DUtil_LoadFromFile(AddDirSep(sMedia) & sFile, Nothing, Nothing)
|
|
End Sub
|
|
|
|
Public Sub Render(dev As Direct3DDevice8)
|
|
Dim matTable As D3DMATRIX
|
|
If DrawTable Then
|
|
'Now the table
|
|
D3DXMatrixIdentity matTable
|
|
D3DXMatrixTranslation matTable, moPosition.X, moPosition.Y, moPosition.z
|
|
moTable.SetMatrix matTable
|
|
moTable.Render g_dev
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub CleanupFrame()
|
|
moTable.Destroy
|
|
Set moTable = Nothing
|
|
End Sub
|
|
|
|
Public Function FadeMesh(FadeInterval As Single) As Boolean
|
|
Dim lNumMaterial As Long
|
|
Dim lCount As Long
|
|
Dim oMaterial As D3DMATERIAL8
|
|
Dim fDoneFading As Boolean
|
|
Dim oMesh As CD3DMesh
|
|
Dim nInternalInterval As Single
|
|
Static lFadeTime As Long
|
|
|
|
FadeMesh = True
|
|
nInternalInterval = FadeInterval
|
|
If lFadeTime = 0 Then
|
|
lFadeTime = timeGetTime
|
|
Exit Function 'We'll do the fade next render pass
|
|
End If
|
|
nInternalInterval = (((timeGetTime - lFadeTime) / 1000000) * nInternalInterval)
|
|
|
|
fDoneFading = True
|
|
If Not DrawTable Then Exit Function
|
|
Set oMesh = moTable.FindChildObject("table", 0)
|
|
lNumMaterial = oMesh.GetMaterialCount
|
|
For lCount = 0 To lNumMaterial - 1
|
|
oMaterial = oMesh.GetMaterial(lCount)
|
|
If nInternalInterval > 0 And oMaterial.diffuse.a <= 1 Then
|
|
oMaterial.diffuse.a = oMaterial.diffuse.a + nInternalInterval
|
|
fDoneFading = False
|
|
ElseIf nInternalInterval < 0 And oMaterial.diffuse.a >= -1 Then
|
|
oMaterial.diffuse.a = oMaterial.diffuse.a + nInternalInterval
|
|
fDoneFading = False
|
|
End If
|
|
oMesh.SetMaterial lCount, oMaterial
|
|
Next
|
|
FadeMesh = fDoneFading
|
|
End Function
|
|
|
|
Private Sub Class_Initialize()
|
|
DrawTable = True
|
|
Set moTable = Nothing
|
|
End Sub
|
|
|
|
Private Sub Class_Terminate()
|
|
If Not moTable Is Nothing Then moTable.Destroy
|
|
Set moTable = Nothing
|
|
End Sub
|