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>
337 lines
15 KiB
OpenEdge ABL
337 lines
15 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 = "VBQuartzHelper"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = True
|
|
Attribute VB_PredeclaredId = False
|
|
Attribute VB_Exposed = False
|
|
'*******************************************************************************
|
|
'* This is a part of the Microsoft DXSDK Code Samples.
|
|
'* Copyright (C) 1999-2001 Microsoft Corporation.
|
|
'* All rights reserved.
|
|
'* This source code is only intended as a supplement to
|
|
'* Microsoft Development Tools and/or SDK documentation.
|
|
'* See these sources for detailed information regarding the
|
|
'* Microsoft samples programs.
|
|
'*******************************************************************************
|
|
Option Explicit
|
|
Option Base 0
|
|
Option Compare Text
|
|
|
|
'IMediaControl is used for async rendering & control;
|
|
'It is a derivitive interface of the FilterGraph Manager.
|
|
Private m_objFilterGraphManager As IMediaControl
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PUBLIC INTERFACE- ENUMERATIONS
|
|
' *
|
|
' *
|
|
Public Enum QTZSynchronicityConstants
|
|
QTZSynchronous = 0 'Synchronous execution
|
|
QTZAsynchronous = 1 'Asynchronous execution
|
|
End Enum
|
|
|
|
Public Enum QTZStatusConstants
|
|
QTZStatusStopped = 0 'State Stopped
|
|
QTZStatusPaused = 1 'State Paused
|
|
QTZStatusPlaying = 2 'State Playing
|
|
End Enum
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PUBLIC INTERFACE- PROPERTIES
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: FilterGraph
|
|
' * procedure description: Allows the client to get the encapsulated graph as a FilterGraph object
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Get FilterGraph() As FilgraphManager
|
|
Attribute FilterGraph.VB_UserMemId = 0
|
|
Attribute FilterGraph.VB_MemberFlags = "200"
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Set FilterGraph = m_objFilterGraphManager
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: FilterGraph
|
|
' * procedure description: Allows the client to set a constructed FilterGraph object for which to render and control.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Set FilterGraph(RHS As FilgraphManager)
|
|
On Local Error GoTo ErrLine
|
|
If Not RHS Is Nothing Then
|
|
Set m_objFilterGraphManager = RHS
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Position
|
|
' * procedure description: Allows the client to get the current position within the context of the media.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Get Position() As Double
|
|
Dim objPosition As IMediaPosition
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
'derive the position control interface
|
|
Set objPosition = m_objFilterGraphManager
|
|
'set the current position using this interface
|
|
Position = CDbl(objPosition.CurrentPosition)
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Position
|
|
' * procedure description: Allows the client to set the current position within the context of the media.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Let Position(RHS As Double)
|
|
Dim objPosition As IMediaPosition
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
'derive the position control interface
|
|
Set objPosition = m_objFilterGraphManager
|
|
'set the current position using this interface
|
|
objPosition.CurrentPosition = RHS
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Position
|
|
' * procedure description: Allows the client to get the current state of the playback.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Get State(Optional Timeout As Long = 1000) As QTZStatusConstants
|
|
Dim nResultant As Long
|
|
Dim objControl As IMediaControl
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
'derive the position control interface
|
|
Set objControl = m_objFilterGraphManager
|
|
'get the current state using this interface
|
|
Call objControl.GetState(Timeout, nResultant)
|
|
'return to client
|
|
State = nResultant
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Duration
|
|
' * procedure description: Allows the client to get the media's duration.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Get Duration() As Double
|
|
Dim objPosition As IMediaPosition
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Set objPosition = m_objFilterGraphManager
|
|
Duration = CDbl(objPosition.Duration)
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: FPS
|
|
' * procedure description: Allows the client to get the media's playback rate, in frames per second.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Get FPS() As Double
|
|
Dim objPosition As IMediaPosition
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Set objPosition = m_objFilterGraphManager
|
|
FPS = CDbl(objPosition.Rate)
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: StopTime
|
|
' * procedure description: Allows the client to get the media's StopTime (when the media will hault playback)
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Property Get StopTime() As Double
|
|
Dim objPosition As IMediaPosition
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Set objPosition = m_objFilterGraphManager
|
|
StopTime = CDbl(objPosition.StopTime)
|
|
End If
|
|
Exit Property
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Property
|
|
End Property
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PUBLIC INTERFACE- METHODS
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: StopGraph
|
|
' * procedure description: Stop the rendering/playback of the graph.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Sub StopGraph()
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Call m_objFilterGraphManager.Stop
|
|
End If
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: PauseGraph
|
|
' * procedure description: Pauses the rendering/playback of the graph.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Sub PauseGraph()
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Call m_objFilterGraphManager.Pause
|
|
End If
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: RunGraph
|
|
' * procedure description: Renders the graph.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Sub RunGraph(Optional Synchronicity As QTZSynchronicityConstants = QTZAsynchronous)
|
|
Dim objPosition As IMediaPosition
|
|
Dim objControl As IMediaControl
|
|
On Local Error GoTo ErrLine
|
|
|
|
If Not m_objFilterGraphManager Is Nothing Then
|
|
Select Case Synchronicity
|
|
Case QTZSynchronicityConstants.QTZSynchronous
|
|
'run the graph
|
|
Call m_objFilterGraphManager.Run
|
|
'obtain the position of audio/video
|
|
Set objPosition = m_objFilterGraphManager
|
|
'loop with events
|
|
Do: DoEvents
|
|
If objPosition.CurrentPosition = objPosition.StopTime Then
|
|
Call m_objFilterGraphManager.Stop
|
|
Exit Do
|
|
End If
|
|
Loop
|
|
|
|
Case QTZSynchronicityConstants.QTZAsynchronous
|
|
'the client desires to run the graph asynchronously
|
|
Call m_objFilterGraphManager.Run
|
|
End Select
|
|
End If
|
|
'clean-up & dereference
|
|
If Not objPosition Is Nothing Then Set objPosition = Nothing
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PUBLIC INTERFACE- METHODS
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Class_Initialize
|
|
' * procedure description: fired intrinsically by visual basic, occurs when this class initalizes
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub Class_Initialize()
|
|
On Local Error GoTo ErrLine
|
|
Set m_objFilterGraphManager = New FilgraphManager
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Class_Terminate
|
|
' * procedure description: fired intrinsically by visual basic, occurs when this class terminates
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub Class_Terminate()
|
|
On Local Error GoTo ErrLine
|
|
If Not m_objFilterGraphManager Is Nothing Then Set m_objFilterGraphManager = Nothing
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|