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>
379 lines
12 KiB
Plaintext
379 lines
12 KiB
Plaintext
VERSION 5.00
|
|
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
|
|
Begin VB.Form frmSimple
|
|
BorderStyle = 3 'Fixed Dialog
|
|
Caption = "Simple Audio Path"
|
|
ClientHeight = 4380
|
|
ClientLeft = 45
|
|
ClientTop = 330
|
|
ClientWidth = 7245
|
|
Icon = "frmSimple.frx":0000
|
|
LinkTopic = "Form1"
|
|
MaxButton = 0 'False
|
|
MinButton = 0 'False
|
|
ScaleHeight = 4380
|
|
ScaleWidth = 7245
|
|
StartUpPosition = 3 'Windows Default
|
|
Begin VB.Frame Frame3
|
|
Caption = "Description"
|
|
Height = 1695
|
|
Left = 3660
|
|
TabIndex = 17
|
|
Top = 2220
|
|
Width = 3495
|
|
Begin VB.Label lbl
|
|
BackStyle = 0 'Transparent
|
|
Caption = $"frmSimple.frx":0442
|
|
Height = 1335
|
|
Index = 4
|
|
Left = 60
|
|
TabIndex = 18
|
|
Top = 240
|
|
Width = 3375
|
|
End
|
|
End
|
|
Begin VB.Frame Frame2
|
|
Caption = "3D Positioning of AudioPath"
|
|
Height = 1695
|
|
Left = 60
|
|
TabIndex = 6
|
|
Top = 2220
|
|
Width = 3555
|
|
Begin MSComctlLib.Slider sldX
|
|
Height = 195
|
|
Left = 300
|
|
TabIndex = 10
|
|
Top = 420
|
|
Width = 2595
|
|
_ExtentX = 4577
|
|
_ExtentY = 344
|
|
_Version = 393216
|
|
LargeChange = 2
|
|
Min = -20
|
|
Max = 20
|
|
TickFrequency = 4
|
|
End
|
|
Begin MSComctlLib.Slider sldY
|
|
Height = 195
|
|
Left = 300
|
|
TabIndex = 11
|
|
Top = 840
|
|
Width = 2595
|
|
_ExtentX = 4577
|
|
_ExtentY = 344
|
|
_Version = 393216
|
|
LargeChange = 2
|
|
Min = -20
|
|
Max = 20
|
|
TickFrequency = 4
|
|
End
|
|
Begin MSComctlLib.Slider SldZ
|
|
Height = 195
|
|
Left = 300
|
|
TabIndex = 12
|
|
Top = 1260
|
|
Width = 2535
|
|
_ExtentX = 4471
|
|
_ExtentY = 344
|
|
_Version = 393216
|
|
LargeChange = 2
|
|
Min = -20
|
|
Max = 20
|
|
TickFrequency = 4
|
|
End
|
|
Begin VB.Label lblZ
|
|
Alignment = 2 'Center
|
|
BackStyle = 0 'Transparent
|
|
Height = 255
|
|
Left = 2940
|
|
TabIndex = 21
|
|
Top = 1260
|
|
Width = 555
|
|
End
|
|
Begin VB.Label lblY
|
|
Alignment = 2 'Center
|
|
BackStyle = 0 'Transparent
|
|
Height = 255
|
|
Left = 2940
|
|
TabIndex = 20
|
|
Top = 840
|
|
Width = 555
|
|
End
|
|
Begin VB.Label lblX
|
|
Alignment = 2 'Center
|
|
BackStyle = 0 'Transparent
|
|
Height = 255
|
|
Left = 2940
|
|
TabIndex = 19
|
|
Top = 420
|
|
Width = 555
|
|
End
|
|
Begin VB.Label Label1
|
|
BackStyle = 0 'Transparent
|
|
Caption = "Z"
|
|
Height = 255
|
|
Index = 2
|
|
Left = 120
|
|
TabIndex = 9
|
|
Top = 1260
|
|
Width = 135
|
|
End
|
|
Begin VB.Label Label1
|
|
BackStyle = 0 'Transparent
|
|
Caption = "Y"
|
|
Height = 255
|
|
Index = 1
|
|
Left = 120
|
|
TabIndex = 8
|
|
Top = 840
|
|
Width = 135
|
|
End
|
|
Begin VB.Label Label1
|
|
BackStyle = 0 'Transparent
|
|
Caption = "X"
|
|
Height = 255
|
|
Index = 0
|
|
Left = 120
|
|
TabIndex = 7
|
|
Top = 420
|
|
Width = 135
|
|
End
|
|
End
|
|
Begin VB.CommandButton cmdExit
|
|
Cancel = -1 'True
|
|
Caption = "E&xit"
|
|
Height = 375
|
|
Left = 5760
|
|
TabIndex = 5
|
|
Top = 3960
|
|
Width = 1395
|
|
End
|
|
Begin VB.Frame Frame1
|
|
Caption = "DirectMusic Segments"
|
|
Height = 1995
|
|
Left = 60
|
|
TabIndex = 0
|
|
Top = 180
|
|
Width = 7095
|
|
Begin VB.CommandButton cmdSeg
|
|
Caption = "Rude Awakening"
|
|
Height = 315
|
|
Index = 3
|
|
Left = 120
|
|
TabIndex = 4
|
|
Top = 1500
|
|
Width = 1395
|
|
End
|
|
Begin VB.CommandButton cmdSeg
|
|
Caption = "Mumble"
|
|
Height = 315
|
|
Index = 2
|
|
Left = 120
|
|
TabIndex = 3
|
|
Top = 1080
|
|
Width = 1395
|
|
End
|
|
Begin VB.CommandButton cmdSeg
|
|
Caption = "Snore"
|
|
Height = 315
|
|
Index = 1
|
|
Left = 120
|
|
TabIndex = 2
|
|
Top = 660
|
|
Width = 1395
|
|
End
|
|
Begin VB.CommandButton cmdSeg
|
|
Caption = "Lullaby"
|
|
Height = 315
|
|
Index = 0
|
|
Left = 120
|
|
TabIndex = 1
|
|
Top = 240
|
|
Width = 1395
|
|
End
|
|
Begin VB.Label lbl
|
|
BackStyle = 0 'Transparent
|
|
Caption = "Segment file. Stops all sound on audio path. Plays as primary segment."
|
|
Height = 255
|
|
Index = 3
|
|
Left = 1620
|
|
TabIndex = 16
|
|
Top = 1560
|
|
Width = 5295
|
|
End
|
|
Begin VB.Label lbl
|
|
BackStyle = 0 'Transparent
|
|
Caption = "Wave file. Overlaps if pressed twice. Plays as secondary segment."
|
|
Height = 255
|
|
Index = 2
|
|
Left = 1620
|
|
TabIndex = 15
|
|
Top = 1140
|
|
Width = 5295
|
|
End
|
|
Begin VB.Label lbl
|
|
BackStyle = 0 'Transparent
|
|
Caption = "Segment file. Overlaps if pressed twice. Plays as secondary segment."
|
|
Height = 255
|
|
Index = 1
|
|
Left = 1620
|
|
TabIndex = 14
|
|
Top = 720
|
|
Width = 5295
|
|
End
|
|
Begin VB.Label lbl
|
|
BackStyle = 0 'Transparent
|
|
Caption = "Segment file. Starts over if pressed twice. Plays as primary segment."
|
|
Height = 255
|
|
Index = 0
|
|
Left = 1620
|
|
TabIndex = 13
|
|
Top = 300
|
|
Width = 5295
|
|
End
|
|
End
|
|
End
|
|
Attribute VB_Name = "frmSimple"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = False
|
|
Attribute VB_PredeclaredId = True
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
'
|
|
' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
|
|
'
|
|
' File: frmSimple.frm
|
|
'
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
|
|
Private dx As New DirectX8
|
|
Private dmPerf As DirectMusicPerformance8
|
|
Private dmLoad As DirectMusicLoader8
|
|
Private dmPath As DirectMusicAudioPath8
|
|
Private dmSeg(0 To 3) As DirectMusicSegment8
|
|
|
|
Private sMediaFolder As String
|
|
|
|
Private Sub cmdExit_Click()
|
|
Unload Me
|
|
End Sub
|
|
|
|
Private Sub cmdSeg_Click(Index As Integer)
|
|
If Not (dmSeg(Index) Is Nothing) Then
|
|
If Index = 0 Then
|
|
'Lullaby theme. This should play as a primary segment.
|
|
dmPerf.PlaySegmentEx dmSeg(Index), DMUS_SEGF_DEFAULT, 0, Nothing, dmPath
|
|
ElseIf Index = 3 Then
|
|
'Rude awakening. Notice that this also passes the audio path in pFrom, indicating that
|
|
'all segments currently playing on the audio path should be stopped at the exact time
|
|
'this starts.
|
|
dmPerf.PlaySegmentEx dmSeg(Index), 0, 0, dmPath, dmPath
|
|
ElseIf Index < 3 Then
|
|
'Sound effects. These play as secondary segments so they can be triggered multiple
|
|
'times and will layer on top.
|
|
dmPerf.PlaySegmentEx dmSeg(Index), DMUS_SEGF_SECONDARY Or DMUS_SEGF_DEFAULT, 0, , dmPath
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Form_Load()
|
|
SetPosition
|
|
InitAudio
|
|
End Sub
|
|
|
|
Private Sub InitAudio()
|
|
On Error GoTo FailedInit
|
|
Dim dma As DMUS_AUDIOPARAMS
|
|
'Create our objects
|
|
Set dmPerf = dx.DirectMusicPerformanceCreate
|
|
Set dmLoad = dx.DirectMusicLoaderCreate
|
|
'Initialize our audio
|
|
dmPerf.InitAudio Me.hWnd, DMUS_AUDIOF_ALL, dma
|
|
|
|
Set dmPath = dmPerf.CreateStandardAudioPath(DMUS_APATH_DYNAMIC_3D, 64, True)
|
|
sMediaFolder = FindMediaDir("audiopath1.sgt")
|
|
If sMediaFolder = vbNullString Then sMediaFolder = AddDirSep(CurDir)
|
|
dmLoad.SetSearchDirectory sMediaFolder
|
|
'Now load the segments
|
|
Set dmSeg(0) = dmLoad.LoadSegment(sMediaFolder & "audiopath1.sgt")
|
|
Set dmSeg(1) = dmLoad.LoadSegment(sMediaFolder & "audiopath2.sgt")
|
|
Set dmSeg(2) = dmLoad.LoadSegment(sMediaFolder & "audiopath3.wav")
|
|
Set dmSeg(3) = dmLoad.LoadSegment(sMediaFolder & "audiopath4.sgt")
|
|
|
|
'Download our segments onto the audio path
|
|
Dim lCount As Long
|
|
For lCount = 0 To 3
|
|
dmSeg(lCount).Download dmPath
|
|
Next
|
|
Exit Sub
|
|
|
|
FailedInit:
|
|
MsgBox "Could not initialize DirectMusic." & vbCrLf & "This sample will exit.", vbOKOnly Or vbInformation, "Exiting..."
|
|
Unload Me
|
|
|
|
End Sub
|
|
|
|
Private Sub Cleanup()
|
|
Dim lCount As Long
|
|
|
|
'Unload all of our segments
|
|
For lCount = 0 To 3
|
|
If Not (dmSeg(lCount) Is Nothing) Then
|
|
dmSeg(lCount).Unload dmPath
|
|
End If
|
|
Set dmSeg(lCount) = Nothing
|
|
Next
|
|
'Destroy everything
|
|
Set dmPath = Nothing
|
|
dmPerf.CloseDown
|
|
Set dmPerf = Nothing
|
|
Set dmLoad = Nothing
|
|
End Sub
|
|
|
|
Private Sub SetPosition()
|
|
Dim dsb As DirectSound3DBuffer8
|
|
|
|
If Not (dmPath Is Nothing) Then
|
|
'First, get the 3D interface from the buffer by using GetObjectInPath.
|
|
Set dsb = dmPath.GetObjectinPath(DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER, 0, GUID_ALL, 0, IID_DirectSound3DBuffer)
|
|
If Not (dsb Is Nothing) Then
|
|
'Then, set the coordinates
|
|
dsb.SetPosition sldX.Value, sldY.Value, SldZ.Value, DS3D_IMMEDIATE
|
|
End If
|
|
End If
|
|
'Update the text boxes as well
|
|
lblX.Caption = CStr(sldX.Value)
|
|
lblY.Caption = CStr(sldY.Value)
|
|
lblZ.Caption = CStr(SldZ.Value)
|
|
End Sub
|
|
|
|
Private Sub Form_Unload(Cancel As Integer)
|
|
Cleanup
|
|
End Sub
|
|
|
|
'Update the 3D Positions when any of the scroll bars move
|
|
Private Sub sldX_Click()
|
|
SetPosition
|
|
End Sub
|
|
|
|
Private Sub sldX_Scroll()
|
|
SetPosition
|
|
End Sub
|
|
|
|
Private Sub sldY_Click()
|
|
SetPosition
|
|
End Sub
|
|
|
|
Private Sub sldY_Scroll()
|
|
SetPosition
|
|
End Sub
|
|
|
|
Private Sub SldZ_Click()
|
|
SetPosition
|
|
End Sub
|
|
|
|
Private Sub SldZ_Scroll()
|
|
SetPosition
|
|
End Sub
|