⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmenu.cls

📁 3D纵版射击程序
💻 CLS
📖 第 1 页 / 共 2 页
字号:
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 + -