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>
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
VERSION 1.0 CLASS
|
||||
BEGIN
|
||||
MultiUse = -1 'True
|
||||
Persistable = 0 'NotPersistable
|
||||
DataBindingBehavior = 0 'vbNone
|
||||
DataSourceBehavior = 0 'vbNone
|
||||
MTSTransactionMode = 0 'NotAnMTSObject
|
||||
END
|
||||
Attribute VB_Name = "cAudio"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = True
|
||||
Attribute VB_PredeclaredId = False
|
||||
Attribute VB_Exposed = False
|
||||
Option Explicit
|
||||
|
||||
'We will keep our Audio vars here
|
||||
Private dmPerf As DirectMusicPerformance8
|
||||
Private dmLoad As DirectMusicLoader8
|
||||
Private dmMusic As DirectMusicSegment8
|
||||
Private dmMusicPath As DirectMusicAudioPath8
|
||||
|
||||
Private dmSegBank As cAudioFile
|
||||
Private dmSegHit As cAudioFile
|
||||
Private dmScore As cAudioFile
|
||||
|
||||
Public PlaySounds As Boolean
|
||||
Public PlayMusic As Boolean
|
||||
|
||||
Private mlSoundVolume As Long
|
||||
Private mlMusicVolume As Long
|
||||
|
||||
Private Sub InitializeBackgroundMusic(ByVal sPath As String)
|
||||
If dmMusicPath Is Nothing Then 'We haven't created our path yet
|
||||
Set dmMusicPath = dmPerf.CreateStandardAudioPath(DMUS_APATH_SHARED_STEREOPLUSREVERB, 128, True)
|
||||
End If
|
||||
If Not (dmMusic Is Nothing) Then
|
||||
dmMusic.Unload dmMusicPath
|
||||
Set dmMusic = Nothing
|
||||
End If
|
||||
Set dmMusic = dmLoad.LoadSegment(sPath)
|
||||
dmMusic.Download dmMusicPath
|
||||
dmMusic.SetStandardMidiFile
|
||||
End Sub
|
||||
|
||||
Public Sub StartBackgroundMusic()
|
||||
If Not PlayMusic Then Exit Sub
|
||||
If Not (dmMusic Is Nothing) Then
|
||||
'Keep repeating over and over again
|
||||
dmMusic.SetRepeats INFINITE
|
||||
dmPerf.PlaySegmentEx dmMusic, DMUS_SEGF_DEFAULT, 0, dmMusicPath, dmMusicPath
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub StopBackgroundMusic()
|
||||
If Not (dmMusic Is Nothing) Then
|
||||
'Lets just stop
|
||||
dmPerf.StopEx dmMusic, 0, 0
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub PlayBankSound()
|
||||
If Not PlaySounds Then Exit Sub
|
||||
'Play the sound that happens when the puck hits the side wall
|
||||
dmSegBank.Play dmPerf
|
||||
End Sub
|
||||
|
||||
Public Sub PlayHitSound()
|
||||
If Not PlaySounds Then Exit Sub
|
||||
'Play the sound that happens when a paddle hits the puck
|
||||
dmSegHit.Play dmPerf
|
||||
End Sub
|
||||
|
||||
Public Sub PlayScoreSound()
|
||||
If Not PlaySounds Then Exit Sub
|
||||
'Play the sound that happens when we score
|
||||
dmScore.Play dmPerf
|
||||
End Sub
|
||||
|
||||
Public Property Let MusicVolume(ByVal lVol As Long)
|
||||
mlMusicVolume = lVol
|
||||
'Actually set the volume
|
||||
If Not (dmMusicPath Is Nothing) Then dmMusicPath.SetVolume lVol, 0
|
||||
End Property
|
||||
|
||||
Public Property Get MusicVolume() As Long
|
||||
MusicVolume = mlMusicVolume
|
||||
End Property
|
||||
|
||||
Public Property Let SoundVolume(ByVal lVol As Long)
|
||||
mlSoundVolume = lVol
|
||||
'Actually set the volume
|
||||
If Not (dmPerf Is Nothing) Then
|
||||
If Not (dmPerf.GetDefaultAudioPath Is Nothing) Then dmPerf.GetDefaultAudioPath.SetVolume lVol, 0
|
||||
End If
|
||||
End Property
|
||||
|
||||
Public Property Get SoundVolume() As Long
|
||||
SoundVolume = mlSoundVolume
|
||||
End Property
|
||||
|
||||
Public Function InitAudio() As Boolean
|
||||
|
||||
Dim lCount As Long, dma As DMUS_AUDIOPARAMS
|
||||
|
||||
InitAudio = True
|
||||
On Error GoTo FailedInit
|
||||
'Create our objects
|
||||
Set dmPerf = dx.DirectMusicPerformanceCreate
|
||||
Set dmLoad = dx.DirectMusicLoaderCreate
|
||||
|
||||
'Create a default audio path
|
||||
dmPerf.InitAudio frmAir.hwnd, DMUS_AUDIOF_ALL, dma, , DMUS_APATH_SHARED_STEREOPLUSREVERB, 128
|
||||
|
||||
'Create the sound objects
|
||||
Set dmSegBank = New cAudioFile
|
||||
Set dmSegHit = New cAudioFile
|
||||
Set dmScore = New cAudioFile
|
||||
'Load each of the sounds
|
||||
dmSegBank.InitSounds dmPerf, dmLoad, App.path & "\sounds\", "bank", ".wav"
|
||||
dmSegHit.InitSounds dmPerf, dmLoad, App.path & "\sounds\", "hit", ".wav"
|
||||
dmScore.InitSounds dmPerf, dmLoad, App.path & "\sounds\", "score", ".wav", True
|
||||
|
||||
InitializeBackgroundMusic App.path & "\sounds\music.mid"
|
||||
'Init the volume
|
||||
SoundVolume = mlSoundVolume
|
||||
MusicVolume = mlMusicVolume
|
||||
Exit Function
|
||||
|
||||
FailedInit:
|
||||
InitAudio = False
|
||||
End Function
|
||||
|
||||
Private Sub Class_Initialize()
|
||||
PlaySounds = True
|
||||
Set dmSegBank = Nothing
|
||||
Set dmSegHit = Nothing
|
||||
Set dmScore = Nothing
|
||||
Set dmMusic = Nothing
|
||||
Set dmPerf = Nothing
|
||||
Set dmLoad = Nothing
|
||||
End Sub
|
||||
|
||||
Private Sub Class_Terminate()
|
||||
'On Error Resume Next
|
||||
'Unload all of our sounds off of the audio path and destroy them
|
||||
StopBackgroundMusic
|
||||
Set dmSegBank = Nothing
|
||||
Set dmSegHit = Nothing
|
||||
Set dmScore = Nothing
|
||||
If Not (dmMusic Is Nothing) Then
|
||||
dmMusic.Unload dmMusicPath
|
||||
Set dmMusic = Nothing
|
||||
End If
|
||||
|
||||
Set dmMusicPath = Nothing
|
||||
If Not (dmPerf Is Nothing) Then
|
||||
'Closedown
|
||||
dmPerf.CloseDown
|
||||
End If
|
||||
'Destroy the rest of the objects
|
||||
Set dmPerf = Nothing
|
||||
Set dmLoad = Nothing
|
||||
End Sub
|
||||
Reference in New Issue
Block a user