music.bas

来自「超级C&C有没有搞错,VB还能编出这种即时策略游戏来!没错,这就是我们的超级C&」· BAS 代码 · 共 65 行

BAS
65
字号
Attribute VB_Name = "Music"
Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Public Const MaxMusicFiles = 100
Public MusicOn As Boolean
Const NOMUSICFILE = ""
Private Type musfiles
  Filename As String
  TrackTitle As String
End Type
Private Type Mus
  MusicFiles(MaxMusicFiles) As musfiles
  MaxMusicFiles As Integer
  CurrentFile  As String
End Type
Public MusicData As Mus
Private Const MMCONTROLMODE_STOPPED = 525
Public Sub InitializeMusic()
Call LoadMusicData
End Sub
Public Sub LoadMusicData()
Call FileFunctions.OpenGameFile(File_MusicDefinitions, 1)
Do
  Line Input #1, a$
  If a$ = FILETAG_ENDFILE Then Exit Do
  If a$ = "[MUSICDEF]" Then
    musicfilenum = musicfilenum + 1
    Line Input #1, a$
    propvalue$ = MiscFunctions.GetPropertyValue(a$)
    MusicData.MusicFiles(musicfilenum).TrackTitle = propvalue$
    Line Input #1, a$
    propvalue$ = MiscFunctions.GetPropertyValue(a$)
    MusicData.MusicFiles(musicfilenum).Filename = Directory_Music & propvalue$
  End If
Loop
Close #1
MusicData.MaxMusicFiles = musicfilenum
End Sub
Public Sub PlayMusicFile(Filename$)
nothin = mciExecute("Play " & App.Path & "\" & Filename$)
Music.MusicData.CurrentFile = Filename$
End Sub
Public Sub StopMusic()
If MusicData.CurrentFile <> NOMUSICFILE Then nothin = mciExecute("Stop " & App.Path & "\" & Music.MusicData.CurrentFile)
MusicData.CurrentFile = NOMUSICFILE
End Sub
Public Sub KeepMusicPlaying()
If MusicData.CurrentFile <> NOMUSICFILE Then nothin = mciExecute("Play " & App.Path & "\" & MusicData.CurrentFile)
End Sub
Public Sub PlayTrackByIndex(TrackNum)
If Music.MusicOn = True Then Call PlayMusicFile(MusicData.MusicFiles(TrackNum).Filename)
End Sub
Public Sub PlayTrackByName(TrackName$)
If Music.MusicOn = True Then
  For I = 1 To MusicData.MaxMusicFiles
    If MusicData.MusicFiles(I).TrackTitle = TrackName$ Then
      Call PlayMusicFile(MusicData.MusicFiles(I).Filename)
      Exit For
    End If
  Next I
End If
End Sub
Public Sub CloseMusicDevice()
If MusicData.CurrentFile <> NOMUSICFILE Then nothin = mciExecute("Stop " & Music.MusicData.CurrentFile)
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?