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>
212 lines
10 KiB
QBasic
212 lines
10 KiB
QBasic
Attribute VB_Name = "modGlobalData"
|
|
'*******************************************************************************
|
|
'* 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
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * GLOBAL INTERFACE- DATA
|
|
' *
|
|
' *
|
|
'global timeline reference in application
|
|
Global gbl_bstrLoadFile As String 'the last file name/path opened by the user
|
|
Global gbl_colNormalEnum As Collection 'collection for maintaining node/object relational data
|
|
Global gbl_objQuartzVB As VBQuartzHelper 'helper object for rendering filtergraph's using quartz.dll
|
|
Global gbl_objTimeline As AMTimeline 'global application timeline
|
|
Global gbl_objRenderEngine As RenderEngine 'global application render engine
|
|
Global gbl_objFilterGraph As FilgraphManager 'global application filtergraph manager
|
|
Global gbl_objDexterObject As AMTimelineObj 'global application dexter object (current object in treeview)
|
|
|
|
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PUBLIC INTERFACE- PROCEDURES
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Main
|
|
' * procedure description: Application Entry Point
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Public Sub Main()
|
|
Dim nStart As Long
|
|
Dim nLength As Long
|
|
Dim bstrFileName As String
|
|
Dim boolDynamic As Boolean
|
|
Dim boolPlayback As Boolean
|
|
Dim boolSmartRecomp As Boolean
|
|
Dim boolCloseOnComplete As Boolean
|
|
Dim objLocalTimeline As AMTimeline
|
|
On Local Error GoTo ErrLine
|
|
|
|
|
|
'inhibit dupe instances of this application
|
|
If App.PrevInstance = False Then
|
|
'initalize global data
|
|
Set gbl_objTimeline = New AMTimeline
|
|
'display the main form for the application
|
|
Load frmMain: frmMain.Move 0, 0: frmMain.Show: frmMain.Refresh
|
|
Else: Exit Sub
|
|
End If
|
|
|
|
|
|
'handle command line
|
|
If Command <> vbNullString Then
|
|
'check the command line argument(s) for a valid xtl filename with double quotes
|
|
If InStr(1, UCase(Command), Chr(34)) > 0 Then
|
|
nStart = InStr(1, UCase(Command), Chr(34))
|
|
nLength = InStr(nStart + 1, Command, Chr(34))
|
|
If nLength - nStart > Len(Command) Then
|
|
bstrFileName = Mid(Command, nStart, nLength)
|
|
End If
|
|
bstrFileName = Trim(LCase(Command))
|
|
bstrFileName = Replace(bstrFileName, "/r", vbNullString)
|
|
bstrFileName = Replace(bstrFileName, "/d", vbNullString)
|
|
bstrFileName = Replace(bstrFileName, Chr(34), vbNullString)
|
|
bstrFileName = Trim(bstrFileName)
|
|
If InStr(1, bstrFileName, ".xtl") > 0 Then
|
|
If InStr(1, bstrFileName, ".xtl") + 4 <> Len(bstrFileName) Then
|
|
bstrFileName = Left(bstrFileName, InStr(1, bstrFileName, ".xtl") + 4)
|
|
End If
|
|
End If
|
|
'check the command line argument(s) for a valid xtl filename with single quotes
|
|
ElseIf InStr(1, UCase(Command), Chr(39)) > 0 Then
|
|
nStart = InStr(1, UCase(Command), Chr(39))
|
|
nLength = InStr(nStart + 1, Command, Chr(39))
|
|
If nLength - nStart > Len(Command) Then
|
|
bstrFileName = Mid(Command, nStart, nLength)
|
|
End If
|
|
bstrFileName = Trim(LCase(Command))
|
|
bstrFileName = Replace(bstrFileName, "/r", vbNullString)
|
|
bstrFileName = Replace(bstrFileName, "/d", vbNullString)
|
|
bstrFileName = Replace(bstrFileName, Chr(39), vbNullString)
|
|
bstrFileName = Trim(bstrFileName)
|
|
If InStr(1, bstrFileName, ".xtl") > 0 Then
|
|
If InStr(1, bstrFileName, ".xtl") + 4 <> Len(bstrFileName) Then
|
|
bstrFileName = Left(bstrFileName, InStr(1, bstrFileName, ".xtl") + 4)
|
|
End If
|
|
End If
|
|
'check the command line argument(s) for a valid xtl filename with no quotes
|
|
Else
|
|
bstrFileName = Trim(LCase(Command))
|
|
bstrFileName = Replace(bstrFileName, "/r", vbNullString)
|
|
bstrFileName = Replace(bstrFileName, "/d", vbNullString)
|
|
bstrFileName = Trim(bstrFileName)
|
|
If InStr(1, bstrFileName, ".xtl") > 0 Then
|
|
If InStr(1, bstrFileName, ".xtl") + 4 <> Len(bstrFileName) Then
|
|
bstrFileName = Left(bstrFileName, InStr(1, bstrFileName, ".xtl") + 4)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
'check the command line argument(s) for smart recomp optional
|
|
If InStr(1, UCase(Command), Space(1) & "/R") > 0 Then
|
|
boolSmartRecomp = True
|
|
End If
|
|
|
|
'check the command line argument(s) for dynamic connections optional
|
|
If InStr(1, UCase(Command), Space(1) & "/D") > 0 Then
|
|
boolDynamic = True
|
|
End If
|
|
|
|
'check the command line argument(s) for playback optional
|
|
If InStr(1, UCase(Command), Space(1) & "/P") > 0 Then
|
|
boolPlayback = True
|
|
End If
|
|
|
|
'check the command line argument(s) for close when finished optional
|
|
If InStr(1, UCase(Command), Space(1) & "/C") > 0 Then
|
|
boolCloseOnComplete = True
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
'proceed to load the xtl file into the application ide and render it
|
|
If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then
|
|
'at least it's been named an xtl file, proceed to attempt an import..
|
|
Set objLocalTimeline = New AMTimeline
|
|
Call RestoreTimeline(objLocalTimeline, bstrFileName, DEXImportXTL)
|
|
'verify restoration
|
|
If Not objLocalTimeline Is Nothing Then
|
|
'import succeeded; clean-up global scope
|
|
If Not gbl_objTimeline Is Nothing Then
|
|
Call ClearTimeline(gbl_objTimeline)
|
|
Set gbl_objTimeline = Nothing
|
|
End If
|
|
'assign the local timeline to global scope
|
|
Set gbl_objTimeline = objLocalTimeline
|
|
'reset application-level filename
|
|
gbl_bstrLoadFile = bstrFileName
|
|
'reset the caption on the application's main form
|
|
bstrFileName = Mid(bstrFileName, InStrRev(bstrFileName, "\") + 1)
|
|
frmMain.Caption = "DexterVB - " & bstrFileName
|
|
Else: Exit Sub
|
|
End If
|
|
End If
|
|
|
|
|
|
'render the timeline and derive a filter graph manager
|
|
Set gbl_objFilterGraph = RenderTimeline(gbl_objTimeline, boolDynamic, boolSmartRecomp)
|
|
Set gbl_objQuartzVB.FilterGraph = gbl_objFilterGraph
|
|
'map the timeline to the userinterface
|
|
Call GetTimelineDirect(frmMain.tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
|
|
frmMain.mnuTimeLineClearRenderEngine.Enabled = False
|
|
'update the button(s)
|
|
With frmMain.tbMain.Buttons
|
|
.Item("Play").Image = 6
|
|
.Item("Pause").Image = 7
|
|
.Item("Stop").Image = 22
|
|
.Item("Rewind").Image = 18
|
|
.Item("FastForward").Image = 24
|
|
.Item("SeekForward").Image = 23
|
|
.Item("SeekBackward").Image = 19
|
|
.Item("Play").Enabled = True
|
|
.Item("Pause").Enabled = True
|
|
.Item("Stop").Enabled = False
|
|
.Item("Rewind").Enabled = False
|
|
.Item("FastForward").Enabled = False
|
|
.Item("SeekForward").Enabled = False
|
|
.Item("SeekBackward").Enabled = False
|
|
End With
|
|
'update the state on the popup context menu
|
|
frmMain.mnuTimeLinePlay.Enabled = True
|
|
frmMain.mnuTimeLineStop.Enabled = False
|
|
frmMain.mnuTimeLinePause.Enabled = True
|
|
frmMain.mnuTimeLineRenderTimeLine.Enabled = False
|
|
frmMain.mnuTimeLineClearRenderEngine.Enabled = False
|
|
|
|
If boolPlayback Then
|
|
'run the graph
|
|
Call gbl_objFilterGraph.Run
|
|
|
|
'if optional close on complete, unload when the timeline is finished rendering..
|
|
If boolCloseOnComplete = True Then
|
|
Do Until gbl_objQuartzVB.Position = gbl_objQuartzVB.StopTime: DoEvents: DoEvents
|
|
If frmMain.Visible = False Then
|
|
Exit Do
|
|
End If
|
|
Loop
|
|
Unload frmMain: Set frmMain = Nothing: Exit Sub
|
|
End If
|
|
End If
|
|
|
|
'clean-up & dereference
|
|
If Not objLocalTimeline Is Nothing Then Set objLocalTimeline = Nothing
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|