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,443 @@
|
||||
VERSION 5.00
|
||||
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx"
|
||||
Begin VB.Form frmEffects
|
||||
BorderStyle = 1 'Fixed Single
|
||||
Caption = "Audio Effects using DirectMusic AudioPaths"
|
||||
ClientHeight = 4845
|
||||
ClientLeft = 45
|
||||
ClientTop = 330
|
||||
ClientWidth = 4800
|
||||
Icon = "frmFX.frx":0000
|
||||
LinkTopic = "Form1"
|
||||
MaxButton = 0 'False
|
||||
ScaleHeight = 4845
|
||||
ScaleWidth = 4800
|
||||
StartUpPosition = 3 'Windows Default
|
||||
Begin VB.CheckBox chkLoop
|
||||
Caption = "Loop Sound"
|
||||
Height = 315
|
||||
Left = 780
|
||||
TabIndex = 15
|
||||
Top = 4380
|
||||
Width = 1455
|
||||
End
|
||||
Begin VB.CommandButton cmdStop
|
||||
Caption = "&Stop"
|
||||
Height = 375
|
||||
Left = 3540
|
||||
TabIndex = 14
|
||||
Top = 4380
|
||||
Width = 1095
|
||||
End
|
||||
Begin VB.CommandButton cmdPlay
|
||||
Caption = "&Play"
|
||||
Height = 375
|
||||
Left = 2340
|
||||
TabIndex = 13
|
||||
Top = 4380
|
||||
Width = 1095
|
||||
End
|
||||
Begin VB.Frame fraEffects
|
||||
Caption = "Effects Information"
|
||||
Height = 3495
|
||||
Left = 120
|
||||
TabIndex = 2
|
||||
Top = 780
|
||||
Width = 4515
|
||||
Begin VB.TextBox txtFile
|
||||
Height = 285
|
||||
Left = 120
|
||||
Locked = -1 'True
|
||||
TabIndex = 9
|
||||
Text = "No file loaded..."
|
||||
Top = 480
|
||||
Width = 3855
|
||||
End
|
||||
Begin VB.CommandButton cmdBrowse
|
||||
Caption = "..."
|
||||
Height = 285
|
||||
Left = 3960
|
||||
TabIndex = 8
|
||||
Top = 480
|
||||
Width = 315
|
||||
End
|
||||
Begin VB.ListBox lstAvail
|
||||
Height = 1815
|
||||
ItemData = "frmFX.frx":0442
|
||||
Left = 120
|
||||
List = "frmFX.frx":045E
|
||||
TabIndex = 7
|
||||
Top = 1080
|
||||
Width = 1875
|
||||
End
|
||||
Begin VB.ListBox lstUse
|
||||
Height = 1815
|
||||
Left = 2400
|
||||
TabIndex = 6
|
||||
Top = 1080
|
||||
Width = 1875
|
||||
End
|
||||
Begin VB.CommandButton cmdAdd
|
||||
Caption = ">"
|
||||
Height = 285
|
||||
Left = 2040
|
||||
TabIndex = 5
|
||||
Top = 1500
|
||||
Width = 315
|
||||
End
|
||||
Begin VB.CommandButton cmdRemove
|
||||
Caption = "<"
|
||||
Height = 285
|
||||
Left = 2040
|
||||
TabIndex = 4
|
||||
Top = 2220
|
||||
Width = 315
|
||||
End
|
||||
Begin VB.CommandButton cmdApply
|
||||
Caption = "Apply Effects"
|
||||
Height = 315
|
||||
Left = 3120
|
||||
TabIndex = 3
|
||||
Top = 3000
|
||||
Width = 1215
|
||||
End
|
||||
Begin VB.Label lbl
|
||||
BackStyle = 0 'Transparent
|
||||
Caption = "Currently loaded sound file:"
|
||||
Height = 195
|
||||
Index = 0
|
||||
Left = 120
|
||||
TabIndex = 12
|
||||
Top = 240
|
||||
Width = 4515
|
||||
End
|
||||
Begin VB.Label lbl
|
||||
BackStyle = 0 'Transparent
|
||||
Caption = "Available Effects"
|
||||
Height = 195
|
||||
Index = 1
|
||||
Left = 120
|
||||
TabIndex = 11
|
||||
Top = 840
|
||||
Width = 1215
|
||||
End
|
||||
Begin VB.Label lbl
|
||||
BackStyle = 0 'Transparent
|
||||
Caption = "Effects in use"
|
||||
Height = 195
|
||||
Index = 2
|
||||
Left = 2700
|
||||
TabIndex = 10
|
||||
Top = 840
|
||||
Width = 1215
|
||||
End
|
||||
End
|
||||
Begin MSComDlg.CommonDialog cdlOpen
|
||||
Left = 300
|
||||
Top = 3720
|
||||
_ExtentX = 847
|
||||
_ExtentY = 847
|
||||
_Version = 393216
|
||||
End
|
||||
Begin VB.Label lbl
|
||||
BackStyle = 0 'Transparent
|
||||
Caption = "Audio Effects using DirectMusic Audiopaths"
|
||||
Height = 255
|
||||
Index = 4
|
||||
Left = 660
|
||||
TabIndex = 1
|
||||
Top = 60
|
||||
Width = 3195
|
||||
End
|
||||
Begin VB.Label lbl
|
||||
BackStyle = 0 'Transparent
|
||||
Caption = "Copyright (C) 1999-2001 Microsoft Corporation, All Rights Reserved."
|
||||
Height = 435
|
||||
Index = 3
|
||||
Left = 660
|
||||
TabIndex = 0
|
||||
Top = 300
|
||||
Width = 3555
|
||||
End
|
||||
Begin VB.Image Image1
|
||||
Height = 480
|
||||
Left = 120
|
||||
Picture = "frmFX.frx":04AF
|
||||
Top = 180
|
||||
Width = 480
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "frmEffects"
|
||||
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: frmFX.frm
|
||||
'
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
'API declare for windows folder
|
||||
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
|
||||
|
||||
Private Const mlMaxEffects As Long = 20
|
||||
'Private declares for our DirectX objects
|
||||
Private dx As DirectX8
|
||||
Private dmp As DirectMusicPerformance8
|
||||
Private dml As DirectMusicLoader8
|
||||
Private dmSeg As DirectMusicSegment8
|
||||
Private dmSegState As DirectMusicSegmentState8
|
||||
|
||||
Private Sub cmdAdd_Click()
|
||||
If lstAvail.ListIndex = -1 Then 'Nothing is selected
|
||||
MsgBox "Please select an available effect before attempting to add it.", vbOKOnly Or vbInformation, "Nothing selected."
|
||||
Exit Sub
|
||||
End If
|
||||
If lstUse.ListCount >= mlMaxEffects Then
|
||||
MsgBox "You cannot add more than " & CStr(mlMaxEffects) & " effects in this sample.", vbOKOnly Or vbInformation, "No more effects."
|
||||
Exit Sub
|
||||
End If
|
||||
'Add this item to our list of effects
|
||||
lstUse.AddItem lstAvail.List(lstAvail.ListIndex)
|
||||
End Sub
|
||||
|
||||
Private Sub cmdApply_Click()
|
||||
On Local Error GoTo NoFX
|
||||
Dim DSEffects() As DSEFFECTDESC
|
||||
Dim lResults() As Long
|
||||
Dim lCount As Long
|
||||
Dim dsb As DirectSoundSecondaryBuffer8
|
||||
|
||||
'Do we have a sound buffer
|
||||
If dmSeg Is Nothing Then
|
||||
MsgBox "You must first load an audio file before you can apply effects to it.", vbOKOnly Or vbInformation, "No buffer"
|
||||
Exit Sub
|
||||
End If
|
||||
'Yup, stop a sound already playing
|
||||
If dmp.IsPlaying(dmSeg, dmSegState) = True Then
|
||||
MsgBox "Stop the currently playing sound before adding effects.", vbOKOnly Or vbInformation, "Sound is playing"
|
||||
Exit Sub
|
||||
End If
|
||||
'Yes we do, do we have effects selected?
|
||||
If lstUse.ListCount = 0 Then
|
||||
If MsgBox("Do you want to turn off effects for this buffer?", vbYesNo Or vbQuestion, "No effects") = vbYes Then
|
||||
'We need to get a DirectSoundSecondaryBuffer from the audio path
|
||||
Set dsb = dmp.GetDefaultAudioPath.GetObjectinPath(DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER, 0, GUID_ALL, 0, IID_DirectSoundSecondaryBuffer)
|
||||
'Before we can call SetFX on our Audio Path, we need to deactivate it first
|
||||
dmp.GetDefaultAudioPath.Activate False
|
||||
'Go ahead and apply our effects
|
||||
dsb.SetFX 0, DSEffects, lResults
|
||||
'Now we can reactivate our audio path
|
||||
dmp.GetDefaultAudioPath.Activate True
|
||||
Exit Sub
|
||||
Else
|
||||
MsgBox "You must first select some effects to use.", vbOKOnly Or vbInformation, "No effects"
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
'Ok, let's apply our effects info here
|
||||
|
||||
'First get an array of effects structs the right size
|
||||
ReDim DSEffects(lstUse.ListCount - 1)
|
||||
ReDim lResults(lstUse.ListCount - 1)
|
||||
|
||||
For lCount = 0 To lstUse.ListCount - 1
|
||||
Select Case LCase(lstUse.List(lCount))
|
||||
Case "distortion"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_DISTORTION
|
||||
Case "echo"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_ECHO
|
||||
Case "chorus"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_CHORUS
|
||||
Case "flanger"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_FLANGER
|
||||
Case "compressor"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_COMPRESSOR
|
||||
Case "gargle"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_GARGLE
|
||||
Case "parameq"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_PARAMEQ
|
||||
Case "wavesreverb"
|
||||
DSEffects(lCount).guidDSFXClass = DSFX_STANDARD_WAVES_REVERB
|
||||
End Select
|
||||
Next
|
||||
'We need to get a DirectSoundSecondaryBuffer from the audio path
|
||||
Set dsb = dmp.GetDefaultAudioPath.GetObjectinPath(DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER, 0, GUID_ALL, 0, IID_DirectSoundSecondaryBuffer)
|
||||
'Before we can call SetFX on our Audio Path, we need to deactivate it first
|
||||
dmp.GetDefaultAudioPath.Activate False
|
||||
'Go ahead and apply our effects
|
||||
dsb.SetFX lstUse.ListCount, DSEffects, lResults
|
||||
'Now we can reactivate our audio path
|
||||
dmp.GetDefaultAudioPath.Activate True
|
||||
Exit Sub
|
||||
|
||||
NoFX:
|
||||
MsgBox "This set of effects could not be set on this audio file.", vbOKOnly Or vbInformation, "Cannot set"
|
||||
End Sub
|
||||
|
||||
Private Sub cmdBrowse_Click()
|
||||
Static sCurDir As String
|
||||
|
||||
'We want to open a file now
|
||||
cdlOpen.flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist
|
||||
cdlOpen.Filter = "Wave Files (*.wav)|*.wav|Music Files (*.mid;*.rmi)|*.mid;*.rmi|Segment Files (*.sgt)|*.sgt|All Audio Files|*.wav;*.mid;*.rmi;*.sgt|All Files (*.*)|*.*"
|
||||
cdlOpen.FileName = vbNullString
|
||||
If sCurDir = vbNullString Then
|
||||
'Set the init folder to \windows\media if it exists. If not, set it to the \windows folder
|
||||
Dim sWindir As String
|
||||
sWindir = Space$(255)
|
||||
If GetWindowsDirectory(sWindir, 255) = 0 Then
|
||||
'We couldn't get the windows folder for some reason, use the c:\
|
||||
cdlOpen.InitDir = "C:\"
|
||||
Else
|
||||
Dim sMedia As String
|
||||
sWindir = Left$(sWindir, InStr(sWindir, Chr$(0)) - 1)
|
||||
If Right$(sWindir, 1) = "\" Then
|
||||
sMedia = sWindir & "Media"
|
||||
Else
|
||||
sMedia = sWindir & "\Media"
|
||||
End If
|
||||
'We are trying to find the windows\media directory. If it
|
||||
'doesn't exist, then use the windows folder as a default
|
||||
If Dir$(sMedia, vbDirectory) <> vbNullString Then
|
||||
cdlOpen.InitDir = sMedia
|
||||
Else
|
||||
cdlOpen.InitDir = sWindir
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
'No need to move folders. Stay where they picked the last file
|
||||
cdlOpen.InitDir = sCurDir
|
||||
End If
|
||||
On Local Error GoTo ClickedCancel
|
||||
cdlOpen.CancelError = True
|
||||
cdlOpen.ShowOpen ' Display the Open dialog box
|
||||
|
||||
'Save the current information
|
||||
sCurDir = GetFolder(cdlOpen.FileName)
|
||||
|
||||
On Local Error GoTo NoLoadSegment
|
||||
'Before we load the buffer stop one if it's playing
|
||||
If Not (dmSeg Is Nothing) Then
|
||||
dmp.StopEx dmSeg, 0, 0
|
||||
dmSeg.Unload dmp.GetDefaultAudioPath
|
||||
Set dmSeg = Nothing
|
||||
End If
|
||||
'Now let's load the segment
|
||||
dml.SetSearchDirectory sCurDir
|
||||
Set dmSeg = dml.LoadSegment(cdlOpen.FileName)
|
||||
If (Right$(cdlOpen.FileName, 4) = ".mid") Or (Right$(cdlOpen.FileName, 4) = ".rmi") Or (Right$(cdlOpen.FileName, 5) = ".midi") Then
|
||||
dmSeg.SetStandardMidiFile
|
||||
End If
|
||||
dmSeg.Download dmp.GetDefaultAudioPath
|
||||
txtFile.Text = cdlOpen.FileName
|
||||
|
||||
Exit Sub
|
||||
NoLoadSegment:
|
||||
If Err.Number = DSERR_BUFFERTOOSMALL Then 'This buffer isn't big enough to control effects on
|
||||
MsgBox "This file isn't long enough to control effects. Please choose a longer audio file.", vbOKOnly Or vbCritical, "Couldn't load"
|
||||
Else 'Some other error
|
||||
MsgBox "Couldn't load this file", vbOKOnly Or vbCritical, "Couldn't load"
|
||||
End If
|
||||
txtFile.Text = "No file loaded..."
|
||||
ClickedCancel:
|
||||
End Sub
|
||||
|
||||
Private Sub cmdPlay_Click()
|
||||
If dmSeg Is Nothing Then
|
||||
MsgBox "You must first load a audio file before you can play it.", vbOKOnly Or vbInformation, "No buffer"
|
||||
Exit Sub
|
||||
End If
|
||||
If chkLoop.Value = vbChecked Then
|
||||
dmSeg.SetRepeats -1
|
||||
Else
|
||||
dmSeg.SetRepeats 0
|
||||
End If
|
||||
Set dmSegState = dmp.PlaySegmentEx(dmSeg, DMUS_SEGF_DEFAULT, 0, , dmp.GetDefaultAudioPath)
|
||||
End Sub
|
||||
|
||||
Private Sub cmdRemove_Click()
|
||||
If lstUse.ListIndex = -1 Then 'Nothing is selected
|
||||
MsgBox "Please select an effect that's being used before attempting to remove it.", vbOKOnly Or vbInformation, "Nothing selected."
|
||||
Exit Sub
|
||||
End If
|
||||
'Add this item to our list of effects
|
||||
lstUse.RemoveItem lstUse.ListIndex
|
||||
End Sub
|
||||
|
||||
Private Sub cmdStop_Click()
|
||||
If dmSeg Is Nothing Then
|
||||
MsgBox "You must first load an audio file before you can stop it.", vbOKOnly Or vbInformation, "No buffer"
|
||||
Exit Sub
|
||||
End If
|
||||
dmp.StopEx dmSeg, 0, 0
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Load()
|
||||
InitAudio
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Unload(Cancel As Integer)
|
||||
Cleanup
|
||||
End Sub
|
||||
|
||||
Private Sub InitAudio()
|
||||
|
||||
On Local Error Resume Next
|
||||
Dim dma As DMUS_AUDIOPARAMS
|
||||
|
||||
Set dx = New DirectX8
|
||||
'Create our default Performance and Loader objects
|
||||
Set dmp = dx.DirectMusicPerformanceCreate
|
||||
Set dml = dx.DirectMusicLoaderCreate
|
||||
'We want to be able to get a buffer, and control effects.
|
||||
dmp.InitAudio Me.hWnd, DMUS_AUDIOF_EAX Or DMUS_AUDIOF_BUFFERS, dma, , DMUS_APATH_DYNAMIC_3D, 128
|
||||
'Make sure we did init the audio
|
||||
If Err <> 0 Then 'Nope we didn't
|
||||
MsgBox "Could not initialize DirectMusic." & vbCrLf & "This sample will exit.", vbOKOnly Or vbInformation, "Exiting..."
|
||||
Unload Me
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub Cleanup()
|
||||
'Let's clean up now
|
||||
If Not dmSeg Is Nothing Then
|
||||
'If we are playing our file, stop it
|
||||
dmp.StopEx dmSeg, 0, 0
|
||||
dmSeg.Unload dmp.GetDefaultAudioPath
|
||||
End If
|
||||
'Destroy our objects
|
||||
Set dmSeg = Nothing
|
||||
If Not (dmp Is Nothing) Then dmp.CloseDown
|
||||
Set dmp = Nothing
|
||||
Set dml = Nothing
|
||||
Set dx = Nothing
|
||||
End Sub
|
||||
|
||||
Private Function GetFolder(ByVal sFile As String) As String
|
||||
Dim lCount As Long
|
||||
|
||||
For lCount = Len(sFile) To 1 Step -1
|
||||
If Mid$(sFile, lCount, 1) = "\" Then
|
||||
GetFolder = Left$(sFile, lCount)
|
||||
Exit Function
|
||||
End If
|
||||
Next
|
||||
GetFolder = vbNullString
|
||||
End Function
|
||||
|
||||
Private Sub lstAvail_DblClick()
|
||||
'Double clicking should be the same as clicking the 'Add' button
|
||||
cmdAdd_Click
|
||||
End Sub
|
||||
|
||||
Private Sub lstUse_DblClick()
|
||||
'Double clicking should be the same as clicking the 'Remove' button
|
||||
cmdRemove_Click
|
||||
End Sub
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,41 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Sample Name: VB Audio Effects Sample
|
||||
//
|
||||
// Copyright (C) 1999-2001 Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
// GM/GS<47> Sound Set Copyright <20>1996, Roland Corporation U.S.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
The sample demonstrates:
|
||||
How to use standard effects (FX) with DirectMusic
|
||||
|
||||
|
||||
Path
|
||||
====
|
||||
Source: DXSDK\Samples\Multimedia\VBSamples\DirectMusic\AudioEffects
|
||||
|
||||
Executable: DXSDK\Samples\Multimedia\VBSamples\DirectMusic\Bin
|
||||
|
||||
|
||||
User's Guide
|
||||
============
|
||||
- make sure a sound file is loaded (can be WAV, MID, SGT, or RMI)
|
||||
|
||||
- by default, no FX are enabled. try playing the sound to see what it
|
||||
orginally sounds like.
|
||||
|
||||
- enable one or more FXs by adding them to the 'In use' listbox and Apply them
|
||||
|
||||
- Hit play to hear the FX applied.
|
||||
|
||||
|
||||
Programming Notes
|
||||
=================
|
||||
To Enable a standard effect, ultimately, you need to obtain a DirectSoundSecondaryBuffer.
|
||||
Fill one or more DSEFFECTDESC structs, and pass them into DirectSoundSecondaryBuffer.SetFX.
|
||||
@@ -0,0 +1,32 @@
|
||||
Type=Exe
|
||||
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#stdole2.tlb#OLE Automation
|
||||
Reference=*\G{E1211242-8E94-11D1-8808-00C04FC2C603}#1.0#0#dx8vb.dll#DirectX 8 for Visual Basic Type Library
|
||||
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; comdlg32.ocx
|
||||
Form=frmFX.frm
|
||||
Startup="frmEffects"
|
||||
HelpFile=""
|
||||
Command32=""
|
||||
Name="vbAudioEffects"
|
||||
HelpContextID="0"
|
||||
CompatibleMode="0"
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
RevisionVer=0
|
||||
AutoIncrementVer=0
|
||||
ServerSupportFiles=0
|
||||
VersionCompanyName="Microsoft"
|
||||
CompilationType=0
|
||||
OptimizationType=0
|
||||
FavorPentiumPro(tm)=0
|
||||
CodeViewDebugInfo=0
|
||||
NoAliasing=0
|
||||
BoundsCheck=0
|
||||
OverflowCheck=0
|
||||
FlPointCheck=0
|
||||
FDIVCheck=0
|
||||
UnroundedFP=0
|
||||
StartMode=0
|
||||
Unattended=0
|
||||
Retained=0
|
||||
ThreadPerObject=0
|
||||
MaxNumberOfThreads=1
|
||||
Reference in New Issue
Block a user