mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			485 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			485 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
VERSION 5.00
 | 
						|
Begin VB.Form frmSoundEdit 
 | 
						|
   Caption         =   "Sound Edit"
 | 
						|
   ClientHeight    =   4995
 | 
						|
   ClientLeft      =   60
 | 
						|
   ClientTop       =   345
 | 
						|
   ClientWidth     =   6180
 | 
						|
   Icon            =   "frmSoundEdit.frx":0000
 | 
						|
   LinkTopic       =   "Form1"
 | 
						|
   MaxButton       =   0   'False
 | 
						|
   ScaleHeight     =   4995
 | 
						|
   ScaleWidth      =   6180
 | 
						|
   StartUpPosition =   3  'Windows Default
 | 
						|
   Begin VB.CommandButton cmdDelete 
 | 
						|
      Caption         =   "&Delete sound from SOC"
 | 
						|
      Height          =   495
 | 
						|
      Left            =   5040
 | 
						|
      Style           =   1  'Graphical
 | 
						|
      TabIndex        =   13
 | 
						|
      Top             =   4320
 | 
						|
      Width           =   1095
 | 
						|
   End
 | 
						|
   Begin VB.CommandButton cmdSave 
 | 
						|
      Caption         =   "&Save"
 | 
						|
      Height          =   495
 | 
						|
      Left            =   3840
 | 
						|
      TabIndex        =   6
 | 
						|
      Top             =   4320
 | 
						|
      Width           =   1095
 | 
						|
   End
 | 
						|
   Begin VB.CommandButton cmdReload 
 | 
						|
      Caption         =   "&Load Code Default"
 | 
						|
      Height          =   495
 | 
						|
      Left            =   2640
 | 
						|
      Style           =   1  'Graphical
 | 
						|
      TabIndex        =   5
 | 
						|
      Top             =   4320
 | 
						|
      Width           =   1095
 | 
						|
   End
 | 
						|
   Begin VB.Frame frmSpecial 
 | 
						|
      Caption         =   "Special Properties"
 | 
						|
      Height          =   3375
 | 
						|
      Left            =   2640
 | 
						|
      TabIndex        =   4
 | 
						|
      Top             =   840
 | 
						|
      Width           =   3495
 | 
						|
      Begin VB.CheckBox chkTotallySingle 
 | 
						|
         Caption         =   "Make sure only one sound of this is playing at a time on any sound channel."
 | 
						|
         Height          =   615
 | 
						|
         Left            =   120
 | 
						|
         TabIndex        =   12
 | 
						|
         Tag             =   "1"
 | 
						|
         Top             =   2640
 | 
						|
         Width           =   3255
 | 
						|
      End
 | 
						|
      Begin VB.CheckBox chkEightEx 
 | 
						|
         Caption         =   "Sound can be heard across 8x the distance"
 | 
						|
         Height          =   375
 | 
						|
         Left            =   120
 | 
						|
         TabIndex        =   10
 | 
						|
         Tag             =   "16"
 | 
						|
         Top             =   2160
 | 
						|
         Width           =   2295
 | 
						|
      End
 | 
						|
      Begin VB.CheckBox chkOutside 
 | 
						|
         Caption         =   "Volume dependent on how close you are to outside"
 | 
						|
         Height          =   375
 | 
						|
         Left            =   120
 | 
						|
         TabIndex        =   9
 | 
						|
         Tag             =   "4"
 | 
						|
         Top             =   360
 | 
						|
         Width           =   2295
 | 
						|
      End
 | 
						|
      Begin VB.CheckBox chkFourEx 
 | 
						|
         Caption         =   "Sound can be heard across 4x the distance"
 | 
						|
         Height          =   375
 | 
						|
         Left            =   120
 | 
						|
         TabIndex        =   8
 | 
						|
         Tag             =   "8"
 | 
						|
         Top             =   1560
 | 
						|
         Width           =   2055
 | 
						|
      End
 | 
						|
      Begin VB.CheckBox chkMultiple 
 | 
						|
         Caption         =   "More than one of this sound can be played per object at a time (i.e., thunder)"
 | 
						|
         Height          =   615
 | 
						|
         Left            =   120
 | 
						|
         TabIndex        =   7
 | 
						|
         Tag             =   "2"
 | 
						|
         Top             =   840
 | 
						|
         Width           =   2535
 | 
						|
      End
 | 
						|
      Begin VB.Label Label1 
 | 
						|
         Caption         =   "Combine for 32x"
 | 
						|
         Height          =   495
 | 
						|
         Left            =   2760
 | 
						|
         TabIndex        =   11
 | 
						|
         Top             =   1800
 | 
						|
         Width           =   615
 | 
						|
      End
 | 
						|
      Begin VB.Line Line4 
 | 
						|
         X1              =   2400
 | 
						|
         X2              =   2640
 | 
						|
         Y1              =   2400
 | 
						|
         Y2              =   2400
 | 
						|
      End
 | 
						|
      Begin VB.Line Line2 
 | 
						|
         X1              =   2400
 | 
						|
         X2              =   2640
 | 
						|
         Y1              =   1800
 | 
						|
         Y2              =   1800
 | 
						|
      End
 | 
						|
      Begin VB.Line Line1 
 | 
						|
         X1              =   2640
 | 
						|
         X2              =   2640
 | 
						|
         Y1              =   2400
 | 
						|
         Y2              =   1800
 | 
						|
      End
 | 
						|
   End
 | 
						|
   Begin VB.ComboBox cmbPriority 
 | 
						|
      Height          =   315
 | 
						|
      ItemData        =   "frmSoundEdit.frx":0442
 | 
						|
      Left            =   3360
 | 
						|
      List            =   "frmSoundEdit.frx":0444
 | 
						|
      TabIndex        =   2
 | 
						|
      Top             =   120
 | 
						|
      Width           =   855
 | 
						|
   End
 | 
						|
   Begin VB.CheckBox chkSingularity 
 | 
						|
      Caption         =   "Only one can be played at a time per object."
 | 
						|
      Height          =   255
 | 
						|
      Left            =   2640
 | 
						|
      TabIndex        =   1
 | 
						|
      Top             =   480
 | 
						|
      Width           =   3495
 | 
						|
   End
 | 
						|
   Begin VB.ListBox lstSounds 
 | 
						|
      Height          =   4740
 | 
						|
      Left            =   120
 | 
						|
      TabIndex        =   0
 | 
						|
      Top             =   120
 | 
						|
      Width           =   2415
 | 
						|
   End
 | 
						|
   Begin VB.Line Line3 
 | 
						|
      X1              =   0
 | 
						|
      X2              =   720
 | 
						|
      Y1              =   0
 | 
						|
      Y2              =   0
 | 
						|
   End
 | 
						|
   Begin VB.Label lblPriority 
 | 
						|
      Alignment       =   1  'Right Justify
 | 
						|
      Caption         =   "Priority:"
 | 
						|
      Height          =   255
 | 
						|
      Left            =   2640
 | 
						|
      TabIndex        =   3
 | 
						|
      Top             =   120
 | 
						|
      Width           =   615
 | 
						|
   End
 | 
						|
End
 | 
						|
Attribute VB_Name = "frmSoundEdit"
 | 
						|
Attribute VB_GlobalNameSpace = False
 | 
						|
Attribute VB_Creatable = False
 | 
						|
Attribute VB_PredeclaredId = True
 | 
						|
Attribute VB_Exposed = False
 | 
						|
Option Explicit
 | 
						|
 | 
						|
Private Sub cmdDelete_Click()
 | 
						|
    Call WriteSound(True)
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub cmdReload_Click()
 | 
						|
    Call ClearForm
 | 
						|
    If InStr(lstSounds.List(lstSounds.ListIndex), "(free slot)") = 0 Then
 | 
						|
        Call LoadSoundInfo(lstSounds.ListIndex)
 | 
						|
    Else
 | 
						|
        MsgBox "Free slots do not have a code default."
 | 
						|
    End If
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub cmdSave_Click()
 | 
						|
    Call WriteSound(False)
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub Form_Load()
 | 
						|
    Call Reload
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub ClearForm()
 | 
						|
    cmbPriority.Text = ""
 | 
						|
    chkSingularity.Value = 0
 | 
						|
    chkOutside.Value = 0
 | 
						|
    chkMultiple.Value = 0
 | 
						|
    chkFourEx.Value = 0
 | 
						|
    chkEightEx.Value = 0
 | 
						|
    chkTotallySingle.Value = 0
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub Reload()
 | 
						|
    Call ClearForm
 | 
						|
    Call LoadCode
 | 
						|
    lstSounds.ListIndex = 0
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub LoadCode()
 | 
						|
    Dim myFSO As New Scripting.FileSystemObject
 | 
						|
    Dim ts As TextStream
 | 
						|
    Dim line As String
 | 
						|
    Dim number As Integer
 | 
						|
    Dim startclip As Integer, endclip As Integer
 | 
						|
    Dim addstring As String
 | 
						|
    Dim i As Integer, numfreeslots As Integer
 | 
						|
    
 | 
						|
    ChDir SourcePath
 | 
						|
    Set ts = myFSO.OpenTextFile("sounds.h", ForReading, False)
 | 
						|
    
 | 
						|
    Do While InStr(ts.ReadLine, "List of sounds (don't modify this comment!)") = 0
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    ts.SkipLine ' typedef enum
 | 
						|
    ts.SkipLine ' {
 | 
						|
    
 | 
						|
    line = ts.ReadLine
 | 
						|
    number = 0
 | 
						|
    
 | 
						|
    lstSounds.Clear
 | 
						|
    
 | 
						|
    Do While InStr(line, "sfx_freeslot0") = 0
 | 
						|
        startclip = InStr(line, "sfx_")
 | 
						|
        If InStr(line, "sfx_") <> 0 Then
 | 
						|
            endclip = InStr(line, ",")
 | 
						|
            line = Mid(line, startclip, endclip - startclip)
 | 
						|
            addstring = number & " - " & line
 | 
						|
            lstSounds.AddItem addstring
 | 
						|
            number = number + 1
 | 
						|
        End If
 | 
						|
        line = ts.ReadLine
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    ts.Close
 | 
						|
    Set myFSO = Nothing
 | 
						|
    
 | 
						|
'Populate the free slots!
 | 
						|
    numfreeslots = 800
 | 
						|
 | 
						|
    For i = 1 To numfreeslots
 | 
						|
        If i < 10 Then
 | 
						|
            addstring = number & " - " & "sfx_fre00" & i & " (free slot)"
 | 
						|
        ElseIf i < 100 Then
 | 
						|
            addstring = number & " - " & "sfx_fre0" & i & " (free slot)"
 | 
						|
        Else
 | 
						|
            addstring = number & " - " & "sfx_fre" & i & " (free slot)"
 | 
						|
        End If
 | 
						|
        lstSounds.AddItem addstring
 | 
						|
        number = number + 1
 | 
						|
    Next
 | 
						|
    
 | 
						|
    For i = 0 To 127
 | 
						|
        cmbPriority.AddItem i
 | 
						|
    Next
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub lstSounds_Click()
 | 
						|
    Call ClearForm
 | 
						|
    If InStr(lstSounds.List(lstSounds.ListIndex), "(free slot)") = 0 Then
 | 
						|
        Call LoadSoundInfo(lstSounds.ListIndex)
 | 
						|
    End If
 | 
						|
    Call LoadSOCSoundInfo(lstSounds.ListIndex)
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub LoadSOCSoundInfo(SoundNum As Integer)
 | 
						|
    Dim myFSO As New Scripting.FileSystemObject
 | 
						|
    Dim ts As TextStream
 | 
						|
    Dim line As String
 | 
						|
    Dim word As String
 | 
						|
    Dim word2 As String
 | 
						|
    
 | 
						|
    Set ts = myFSO.OpenTextFile(SOCFile, ForReading, False)
 | 
						|
    
 | 
						|
SOCLoad:
 | 
						|
    Do While Not ts.AtEndOfStream
 | 
						|
        line = ts.ReadLine
 | 
						|
        
 | 
						|
        If Left(line, 1) = "#" Then GoTo SOCLoad
 | 
						|
        
 | 
						|
        If Left(line, 1) = vbCrLf Then GoTo SOCLoad
 | 
						|
        
 | 
						|
        If Len(line) < 1 Then GoTo SOCLoad
 | 
						|
        
 | 
						|
        word = FirstToken(line)
 | 
						|
        word2 = SecondToken(line)
 | 
						|
        
 | 
						|
        If UCase(word) = "SOUND" And Val(word2) = SoundNum Then
 | 
						|
            Do While Len(line) > 0 And Not ts.AtEndOfStream
 | 
						|
                line = ts.ReadLine
 | 
						|
                word = UCase(FirstToken(line))
 | 
						|
                word2 = UCase(SecondTokenEqual(line))
 | 
						|
                    
 | 
						|
                If word = "SINGULAR" Then
 | 
						|
                    If Val(word2) = 1 Then
 | 
						|
                        chkSingularity.Value = 1
 | 
						|
                    Else
 | 
						|
                        chkSingularity.Value = 0
 | 
						|
                    End If
 | 
						|
                ElseIf word = "PRIORITY" Then
 | 
						|
                    cmbPriority.Text = Val(word2)
 | 
						|
                ElseIf word = "FLAGS" Then
 | 
						|
                    ProcessSoundFlags (Val(word2))
 | 
						|
                ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
 | 
						|
                    MsgBox "Error in SOC!" & vbCrLf & "Unknown line: " & line
 | 
						|
                End If
 | 
						|
            Loop
 | 
						|
            Exit Do
 | 
						|
        End If
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    ts.Close
 | 
						|
    Set myFSO = Nothing
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub LoadSoundInfo(StateNum As Integer)
 | 
						|
    Dim myFSO As New Scripting.FileSystemObject
 | 
						|
    Dim ts As TextStream
 | 
						|
    Dim line As String
 | 
						|
    Dim number As Integer
 | 
						|
    Dim startclip As Integer, endclip As Integer
 | 
						|
    Dim token As String
 | 
						|
    Dim frame As Long
 | 
						|
    
 | 
						|
    ChDir SourcePath
 | 
						|
    Set ts = myFSO.OpenTextFile("sounds.c", ForReading, False)
 | 
						|
    
 | 
						|
    Do While InStr(ts.ReadLine, "S_sfx[0] needs to be a dummy for odd reasons.") = 0
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    number = 0
 | 
						|
    
 | 
						|
    Do While number <> StateNum
 | 
						|
        Do While InStr(ts.ReadLine, """") = 0
 | 
						|
        Loop
 | 
						|
        number = number + 1
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    Do While InStr(line, """") = 0
 | 
						|
        line = ts.ReadLine
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    startclip = InStr(line, """") + 1
 | 
						|
    line = Mid(line, startclip, Len(line) - startclip)
 | 
						|
    endclip = InStr(line, """") - 1
 | 
						|
    token = TrimComplete(Left(line, endclip))
 | 
						|
    
 | 
						|
    'txtName.Text = line
 | 
						|
    
 | 
						|
    startclip = InStr(line, ",") + 1
 | 
						|
    line = Mid(line, startclip, Len(line) - startclip)
 | 
						|
    endclip = InStr(line, ",") - 1
 | 
						|
    token = TrimComplete(Left(line, endclip))
 | 
						|
    
 | 
						|
    If token = "true" Then
 | 
						|
        chkSingularity.Value = 1
 | 
						|
    Else
 | 
						|
        chkSingularity.Value = 0
 | 
						|
    End If
 | 
						|
    
 | 
						|
    startclip = InStr(line, ",") + 1
 | 
						|
    line = Mid(line, startclip, Len(line) - startclip)
 | 
						|
    endclip = InStr(line, ",") - 1
 | 
						|
    token = TrimComplete(Left(line, endclip))
 | 
						|
    cmbPriority.Text = token
 | 
						|
    
 | 
						|
    startclip = InStr(line, ",") + 1
 | 
						|
    line = Mid(line, startclip, Len(line) - startclip)
 | 
						|
    endclip = InStr(line, ",") - 1
 | 
						|
    token = TrimComplete(Left(line, endclip))
 | 
						|
    
 | 
						|
    ProcessSoundFlags (Val(token))
 | 
						|
    
 | 
						|
    ts.Close
 | 
						|
    Set myFSO = Nothing
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub ProcessSoundFlags(flags As Long)
 | 
						|
 | 
						|
    chkTotallySingle.Value = 0
 | 
						|
    chkMultiple.Value = 0
 | 
						|
    chkOutside.Value = 0
 | 
						|
    chkFourEx.Value = 0
 | 
						|
    chkEightEx.Value = 0
 | 
						|
    
 | 
						|
    If flags = -1 Then
 | 
						|
        Exit Sub
 | 
						|
    End If
 | 
						|
    
 | 
						|
    If flags And 1 Then
 | 
						|
        chkTotallySingle.Value = 1
 | 
						|
    End If
 | 
						|
    
 | 
						|
    If flags And 2 Then
 | 
						|
        chkMultiple.Value = 1
 | 
						|
    End If
 | 
						|
    
 | 
						|
    If flags And 4 Then
 | 
						|
        chkOutside.Value = 1
 | 
						|
    End If
 | 
						|
    
 | 
						|
    If flags And 8 Then
 | 
						|
        chkFourEx.Value = 1
 | 
						|
    End If
 | 
						|
    
 | 
						|
    If flags And 16 Then
 | 
						|
        chkEightEx.Value = 1
 | 
						|
    End If
 | 
						|
    
 | 
						|
End Sub
 | 
						|
 | 
						|
Private Sub WriteSound(Remove As Boolean)
 | 
						|
    Dim myFSOSource As New Scripting.FileSystemObject
 | 
						|
    Dim tsSource As TextStream
 | 
						|
    Dim myFSOTarget As New Scripting.FileSystemObject
 | 
						|
    Dim tsTarget As TextStream
 | 
						|
    Dim line As String
 | 
						|
    Dim word As String
 | 
						|
    Dim word2 As String
 | 
						|
    Dim flags As Long
 | 
						|
    Dim soundfound As Boolean
 | 
						|
    
 | 
						|
    soundfound = False
 | 
						|
    
 | 
						|
    Set tsSource = myFSOSource.OpenTextFile(SOCFile, ForReading, False)
 | 
						|
    Set tsTarget = myFSOTarget.OpenTextFile(SOCTemp, ForWriting, True)
 | 
						|
    
 | 
						|
    Do While Not tsSource.AtEndOfStream
 | 
						|
        line = tsSource.ReadLine
 | 
						|
        word = UCase(FirstToken(line))
 | 
						|
        word2 = UCase(SecondToken(line))
 | 
						|
 | 
						|
        'If the current sound exists in the SOC, delete it.
 | 
						|
        If word = "SOUND" And Val(word2) = lstSounds.ListIndex Then
 | 
						|
            soundfound = True
 | 
						|
            Do While Len(TrimComplete(tsSource.ReadLine)) > 0 And Not (tsSource.AtEndOfStream)
 | 
						|
            Loop
 | 
						|
        Else
 | 
						|
            tsTarget.WriteLine line
 | 
						|
        End If
 | 
						|
    Loop
 | 
						|
    
 | 
						|
    tsSource.Close
 | 
						|
    Set myFSOSource = Nothing
 | 
						|
    
 | 
						|
    If Remove = False Then
 | 
						|
        If line <> "" Then tsTarget.WriteLine ""
 | 
						|
    
 | 
						|
        tsTarget.WriteLine "SOUND " & lstSounds.ListIndex
 | 
						|
        cmbPriority.Text = TrimComplete(cmbPriority.Text)
 | 
						|
        If cmbPriority.Text <> "" Then tsTarget.WriteLine "PRIORITY = " & Val(cmbPriority.Text)
 | 
						|
        If chkSingularity.Value = 1 Then tsTarget.WriteLine "SINGULAR = 1"
 | 
						|
        
 | 
						|
        flags = 0
 | 
						|
        
 | 
						|
        If chkOutside.Value = 1 Then flags = flags + Val(chkOutside.Tag)
 | 
						|
        If chkMultiple.Value = 1 Then flags = flags + Val(chkMultiple.Tag)
 | 
						|
        If chkFourEx.Value = 1 Then flags = flags + Val(chkFourEx.Tag)
 | 
						|
        If chkEightEx.Value = 1 Then flags = flags + Val(chkEightEx.Tag)
 | 
						|
        If chkTotallySingle.Value = 1 Then flags = flags + Val(chkTotallySingle.Tag)
 | 
						|
        
 | 
						|
        If flags > 0 Then tsTarget.WriteLine "FLAGS = " & flags
 | 
						|
    End If
 | 
						|
    
 | 
						|
    tsTarget.Close
 | 
						|
    Set myFSOTarget = Nothing
 | 
						|
    
 | 
						|
    FileCopy SOCTemp, SOCFile
 | 
						|
    
 | 
						|
    Kill SOCTemp
 | 
						|
    
 | 
						|
    If Remove = True Then
 | 
						|
        If soundfound = True Then
 | 
						|
            MsgBox "Sound removed from SOC."
 | 
						|
        Else
 | 
						|
            MsgBox "Sound not found in SOC."
 | 
						|
        End If
 | 
						|
    Else
 | 
						|
        MsgBox "Sound Saved."
 | 
						|
    End If
 | 
						|
End Sub
 | 
						|
 |