Files
Client/Library/dxx8/samples/Multimedia/VBSamples/Demos/AirHockey/cAudioFile.cls
LGram16 e067522598 Initial commit: ROW Client source code
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>
2025-11-29 16:24:34 +09:00

80 lines
2.4 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 = "cAudioFile"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
'Here we will control a 'set' of audio files
Private mlNumSounds As Long
Private dmSegments() As DirectMusicSegment8
Private moPath As DirectMusicAudioPath8
Public Sub InitSounds(dmPerf As DirectMusicPerformance8, dmLoader As DirectMusicLoader8, ByVal sPath As String, ByVal sFirstPart As String, ByVal sExtenstion As String, Optional fSingleFile As Boolean = False)
Dim sFile As String
Dim lCount As Long
'Here we will take a 'group' of files (that group could only be 1 file)
'and load them into our array
Set moPath = dmPerf.GetDefaultAudioPath
lCount = 1
If fSingleFile Then
sFile = Dir$(sPath & sFirstPart & sExtenstion)
Else
sFile = Dir$(sPath & sFirstPart & format$(CStr(lCount), "00") & sExtenstion)
End If
Do While sFile <> vbNullString
ReDim Preserve dmSegments(1 To lCount)
Set dmSegments(lCount) = dmLoader.LoadSegment(sPath & sFile)
dmSegments(lCount).Download moPath
lCount = lCount + 1
If fSingleFile Then
sFile = vbNullString
Else
sFile = Dir$
End If
Loop
mlNumSounds = lCount - 1
End Sub
Public Sub Play(dmPerf As DirectMusicPerformance8)
Dim lRnd As Long
'Pick a valid sound randomly and play it
Randomize
lRnd = CLng(Rnd * mlNumSounds) + 1
Do While lRnd < 1 Or lRnd > mlNumSounds
lRnd = CLng(Rnd * mlNumSounds) + 1
Loop
dmPerf.PlaySegmentEx dmSegments(lRnd), DMUS_SEGF_SECONDARY, 0
End Sub
Private Sub Class_Initialize()
'This should already have happened for us from VB, but just in case
Erase dmSegments
mlNumSounds = 0
End Sub
Private Sub Class_Terminate()
Dim lCount As Long
'Let's clean everything up
For lCount = 1 To mlNumSounds
'Unload and release all the segments
If Not (dmSegments(lCount) Is Nothing) Then
dmSegments(lCount).Unload moPath
Set dmSegments(lCount) = Nothing
End If
Next
'Clear up any data left over
Erase dmSegments
End Sub