📄 cmenu.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "cMenu"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Public Parent As cSession
Public BtnItem As Integer
Public BtnOpen As Boolean
Public DspItem As Integer
Public DspOpen As Boolean
Public VidOpen As Boolean
Private I_nBtnPos(3) As Single
Private I_nDspPos As Single
Private I_nVidPos As Single
Private I_nVidFrame As Long
Private I_sCampaign() As String
Private I_nHighscore() As Long
Private I_nHighStars() As Long
Private I_nCampaign As Long
Public MenuSound As DirectSoundBuffer
Public Sub Initialize()
Dim L_dDSBufferDesc As DSBUFFERDESC
Dim L_dWFMDesc As WAVEFORMATEX
Dim L_nRun As Long
With L_dDSBufferDesc
.lBufferBytes = 0
.lFlags = DSBCAPS_CTRLVOLUME
End With
If Parent.SoundPresent Then
L_dWFMDesc = GetWaveFileFormat("zooom.wav")
Set MenuSound = Parent.DSInstance.CreateSoundBufferFromFile(App.Path + "\zooom.wav", L_dDSBufferDesc, L_dWFMDesc)
MenuSound.Play DSBPLAY_LOOPING
Parent.MusicVolume = Parent.MusicVolume
End If
Call LoadCampaignInfo
I_nCampaign = 0
Parent.Campaign.Load I_sCampaign(I_nCampaign)
For L_nRun = 0 To 3
I_nBtnPos(L_nRun) = -L_nRun * 10
Next
I_nDspPos = 0
I_nVidPos = 0
I_nVidFrame = -1
BtnItem = 0
DspItem = 0
BtnOpen = True
DspOpen = False
VidOpen = False
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IBUTTONS").Sound)
End Sub
Public Sub LoadCampaignInfo()
Dim L_sName As String
Dim L_nCount As Long
Dim L_nRun As Long
ReDim I_sCampaign(0)
ReDim I_nHighscore(0)
ReDim I_nHighStars(0)
L_sName = Dir(App.Path + "\level\*.cpn")
Do While Not L_sName = ""
ReDim Preserve I_sCampaign(L_nCount)
ReDim Preserve I_nHighscore(L_nCount)
ReDim Preserve I_nHighStars(L_nCount)
I_sCampaign(L_nCount) = Left(L_sName, Len(L_sName) - 4)
L_sName = Dir()
L_nCount = L_nCount + 1
Loop
For L_nRun = 0 To L_nCount - 1
If Dir(App.Path + "\level\" + I_sCampaign(L_nRun) + ".sco") <> "" Then
Open App.Path + "\level\" + I_sCampaign(L_nRun) + ".sco" For Input As #7
Input #7, I_nHighscore(L_nRun), I_nHighStars(L_nRun)
Close #7
End If
Next
Parent.Campaign.Load I_sCampaign(I_nCampaign)
End Sub
Public Sub Execute(Optional ByVal nAction As Integer)
Select Case Parent.Mode
Case 0
If DspOpen Then
If nAction = 5 Then
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
DspOpen = False
Else
Select Case BtnItem
Case 1
Select Case nAction
Case 0
Parent.Campaign.Clear
Parent.Campaign.Load I_sCampaign(DspItem)
I_nCampaign = DspItem
DspOpen = False
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IBUTTONS").Sound)
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
Case 3
DspItem = DspItem - 1
If DspItem < 0 Then DspItem = UBound(I_sCampaign)
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
Case 4
DspItem = DspItem + 1
If DspItem > UBound(I_sCampaign) Then DspItem = 0
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
End Select
Case 2
Select Case nAction
Case 0
DspOpen = False
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
Case 1, 2
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
Select Case DspItem
Case 0
Parent.WaveVolume = Parent.WaveVolume + IIf(nAction = 2, 4, -4)
Case 1
Parent.MusicVolume = Parent.MusicVolume + IIf(nAction = 2, 4, -4)
Case 2
Parent.Detail = Not Parent.Detail
Case 3
If nAction = 1 Then
If Parent.Difficulty > 0 Then Parent.Difficulty = Parent.Difficulty - 1
End If
If nAction = 2 Then
If Parent.Difficulty < 2 Then Parent.Difficulty = Parent.Difficulty + 1
End If
Case 4
Parent.Joystick = Not Parent.Joystick
Case 5
If nAction = 1 Then
If Parent.JoystickDead > 10 Then Parent.JoystickDead = Parent.JoystickDead - 5
End If
If nAction = 2 Then
If Parent.JoystickDead < 90 Then Parent.JoystickDead = Parent.JoystickDead + 5
End If
End Select
Case 3
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
DspItem = DspItem - 1
If DspItem < 0 Then DspItem = 5
Case 4
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
DspItem = DspItem + 1
If DspItem > 5 Then DspItem = 0
End Select
Case 3
Select Case nAction
Case 0
DspOpen = False
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
Case 1, 2
Case 3, 4
End Select
End Select
End If
Else
If nAction = 5 Then
Parent.Terminating = True
Else
Select Case nAction
Case 0
If BtnItem = 0 Then
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IBUTTONS").Sound)
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
Parent.Campaign.CurrentLevel = 1
Set Parent.Player = New cPlayer
Set Parent.Player.Parent = Parent
Parent.Player.Initialize
Parent.Mode = 1
BtnOpen = False
If Parent.SoundPresent Then MenuSound.Stop
Else
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
DspOpen = True
If BtnItem = 1 Then LoadCampaignInfo
DspItem = IIf(BtnItem = 1, I_nCampaign, 0)
End If
Case 3
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IBUTTONS").Sound)
BtnItem = BtnItem - 1
If BtnItem < 0 Then BtnItem = 3
DspOpen = False
Case 4
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IBUTTONS").Sound)
BtnItem = BtnItem + 1
If BtnItem > 3 Then BtnItem = 0
DspOpen = False
End Select
End If
End If
Case 2
Case 3, 4
Select Case nAction
Case 0
DspOpen = False
VidOpen = False
I_nVidFrame = -1
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
Select Case DspItem
Case 0
If Not Parent.Level Is Nothing Then
Parent.Level.Terminate
Set Parent.Level = Nothing
End If
Parent.Player.Reset True
Parent.Mode = 1
Case 1
If Parent.Mode = 4 Then
If Parent.Player.Score > Parent.Campaign.HighScore Then
Parent.Campaign.HighScore = Parent.Player.Score
Parent.Campaign.HighStars = Parent.Player.Stars
Parent.Campaign.WriteHigh
End If
End If
If Not Parent.Level Is Nothing Then
Parent.Level.Terminate
Set Parent.Level = Nothing
End If
Parent.Mode = 0
BtnOpen = True
If Parent.SoundPresent Then
MenuSound.Play DSBPLAY_LOOPING
Parent.MusicVolume = Parent.MusicVolume
End If
End Select
Case 3
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
DspItem = DspItem - 1
If DspItem < 0 Then DspItem = 1
Case 4
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAYBACK").Sound)
DspItem = DspItem + 1
If DspItem > 1 Then DspItem = 0
End Select
Case 6
Select Case nAction
Case 0
DspOpen = False
VidOpen = False
I_nVidFrame = -1
If Parent.SoundPresent Then Parent.Sounds.Add Parent.DSInstance.DuplicateSoundBuffer(Parent.Frames.Item("IDISPLAY").Sound)
Select Case DspItem
Case 0
If Not Parent.Level Is Nothing Then
Parent.Level.Terminate
Set Parent.Level = Nothing
End If
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -