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:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

View File

@@ -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