📄 csession.cls
字号:
fMessage.Hide
fMessage.lblMessage = "DirectX could not be initialized. Zooom requires Microsoft DirectX 7.x to be installed on your system. You can download the latest DirectX drivers under www.microsoft.com/directx."
fMessage.Show 1
Unload fZooom
End
End Sub
Public Sub Execute()
Dim L_nNextFrameTime As Long
Dim L_nNextSecondTime As Long
Dim L_nFrameCount As Long
Dim L_nCurrentTime As Long
fZooom.Refresh
Do
If (Mode = 1) And Not (GetForegroundWindow = fZooom.hwnd) Then
Mode = 5
I_oMenu.DspOpen = True
I_oMenu.VidOpen = True
If SoundPresent Then Sounds.Add DSInstance.DuplicateSoundBuffer(Frames.Item("IDISPLAY").Sound)
End If
FrameCount = FrameCount + 1
L_nNextFrameTime = timeGetTime + 10
L_nFrameCount = L_nFrameCount + 1
If timeGetTime > L_nNextSecondTime Then
FramesPerSecond = L_nFrameCount
L_nNextSecondTime = timeGetTime + 1000
L_nFrameCount = 0
End If
fZooom.picLamp(0).Visible = (FrameCount Mod 100 > 50)
fZooom.picLamp(1).Visible = (FrameCount Mod 100 <= 50)
If Mode = 1 Then
If I_oLevel Is Nothing Then
Set I_oLevel = New cLevel
Set I_oLevel.Parent = Me
I_oLevel.Initialize Campaign.LevelName(Campaign.CurrentLevel)
Else
If I_oLevel.Position = I_oLevel.LevelLength Then Mode = 2
End If
End If
If Mode = 2 Then
If Campaign.CurrentLevel = Campaign.LevelCount Then
I_oPlayer.Stars = I_oPlayer.Stars + 1
Campaign.CurrentLevel = 1
Mode = 4
I_oMenu.DspItem = 0
I_oMenu.DspOpen = True
I_oMenu.VidOpen = True
Else
Campaign.CurrentLevel = Campaign.CurrentLevel + 1
Mode = 3
I_oMenu.DspItem = 0
I_oMenu.DspOpen = True
I_oMenu.VidOpen = True
End If
End If
If FrameCount Mod 20 = 0 Then UpdateTime = timeGetTime
If Not I_oLevel Is Nothing Then
If Mode = 1 Then I_oLevel.Update
End If
I_oMenu.Update
If SoundPresent Then I_oSounds.Update
If FrameCount Mod 20 = 0 Then UpdateTime = timeGetTime - UpdateTime
If FrameCount Mod 20 = 0 Then RenderTime = timeGetTime
I_oViewport.Render
If FrameCount Mod 20 = 0 Then RenderTime = timeGetTime - RenderTime
If FrameCount Mod 20 = 0 Then ProcessTime = timeGetTime
Process
If FrameCount Mod 20 = 0 Then ProcessTime = timeGetTime - ProcessTime
If FrameCount Mod 10 = 0 Then DoEvents
Do
Loop Until timeGetTime >= L_nNextFrameTime
Loop Until Terminating
End Sub
Public Sub Terminate()
Set I_oDSInstance = Nothing
I_oViewport.Terminate
Set I_oViewport = Nothing
If Not (I_oLevel Is Nothing) Then I_oLevel.Terminate
Set I_oLevel = Nothing
If Not (I_oMenu Is Nothing) Then I_oMenu.Terminate
Set I_oMenu = Nothing
Set I_oEnemyTemplates = Nothing
Set I_oFrames = Nothing
Set I_oSounds = Nothing
Set I_oDSInstance = Nothing
Set I_oDDInstance = Nothing
Set I_oDXInstance = Nothing
Call SaveSettings
End Sub
Public Sub Process()
If Not (GetForegroundWindow = fZooom.hwnd) Then Exit Sub
Static L_nKeyDelay As Long
Dim L_bKeyL As Boolean
Dim L_bKeyU As Boolean
Dim L_bKeyD As Boolean
Dim L_bKeyR As Boolean
Dim L_bKeyS As Boolean
Dim L_bKeyE As Boolean
Dim L_bKeyC As Boolean
Dim L_dJoy As JOYINFOEX
L_dJoy.dwSize = Len(L_dJoy)
L_dJoy.dwFlags = 131
L_bKeyS = (GetAsyncKeyState(&H20) = -32767 - IIf(Mode = 1, 1, 0))
L_bKeyE = (GetAsyncKeyState(&H1B) = -32767 - IIf(Mode = 1, 1, 0))
L_bKeyU = (GetAsyncKeyState(&H26) = -32767 - IIf(Mode = 1, 1, 0))
L_bKeyD = (GetAsyncKeyState(&H28) = -32767 - IIf(Mode = 1, 1, 0))
L_bKeyL = (GetAsyncKeyState(&H25) = -32767 - IIf(Mode = 1, 1, 0))
L_bKeyR = (GetAsyncKeyState(&H27) = -32767 - IIf(Mode = 1, 1, 0))
L_bKeyC = (GetAsyncKeyState(&H11) = -32768)
If Joystick Then
If joyGetPosEx(0, L_dJoy) = 0 Then
L_bKeyS = L_bKeyS Or (L_dJoy.dwButtonNumber = 1)
L_bKeyL = L_bKeyL Or (L_dJoy.dwXpos < 32767& - 300& * IIf(Mode = 1, 0, JoystickDead))
L_bKeyR = L_bKeyR Or (L_dJoy.dwXpos > 32767& + 300& * IIf(Mode = 1, 0, JoystickDead))
L_bKeyU = L_bKeyU Or (L_dJoy.dwYpos < 32767& - 300& * IIf(Mode = 1, 0, JoystickDead))
L_bKeyD = L_bKeyD Or (L_dJoy.dwYpos > 32767& + 300& * IIf(Mode = 1, 0, JoystickDead))
End If
End If
If L_nKeyDelay > 0 Then L_nKeyDelay = L_nKeyDelay - 1
If L_nKeyDelay = 0 Then
If Mode = 1 Then
If Not I_oLevel Is Nothing Then
If Player.Active Then
If L_bKeyC Then
If (GetAsyncKeyState(&H31) = -32767) Then Player.SetEquipment IIf(Player.Weapon < 4, Player.Weapon + 1, Player.Weapon)
If (GetAsyncKeyState(&H32) = -32767) Then Player.SetEquipment , IIf(Player.Mounts < 4, Player.Mounts + 1, Player.Mounts)
If (GetAsyncKeyState(&H33) = -32767) Then Player.SetEquipment , , IIf(Player.Orbiter < 4, Player.Orbiter + 1, Player.Orbiter)
If (GetAsyncKeyState(&H34) = -32767) Then Player.Hitpoints = Player.MaxHitpoints
If (GetAsyncKeyState(&H35) = -32767) Then Player.Shield = Player.MaxHitpoints
If (GetAsyncKeyState(&H36) = -32767) Then Player.Lifes = IIf(Player.Lifes < 9, Player.Lifes + 1, Player.Lifes)
If (GetAsyncKeyState(&H37) = -32767) Then Player.Hitpoints = -1
If (GetAsyncKeyState(&H38) = -32767) Then I_oLevel.Position = I_oLevel.LevelLength - 1
If (GetAsyncKeyState(&H39) = -32767) Then DebugMode = Not DebugMode
If (GetAsyncKeyState(&H30) = -32767) Then I_oLevel.Position = IIf(I_oLevel.Position < I_oLevel.LevelLength - 500, I_oLevel.Position + 500, I_oLevel.Position)
L_nKeyDelay = 10
End If
If L_bKeyL Then
Player.DeltaX = Player.DeltaX - 1
If Player.DeltaX < -10 Then Player.DeltaX = -10
L_nKeyDelay = 0
End If
If L_bKeyR Then
Player.DeltaX = Player.DeltaX + 1
If Player.DeltaX > 10 Then Player.DeltaX = 10
L_nKeyDelay = 0
End If
If L_bKeyU Then
Player.DeltaY = Player.DeltaY - 1
If Player.DeltaY < -10 Then Player.DeltaY = -10
L_nKeyDelay = 0
End If
If L_bKeyD Then
Player.DeltaY = Player.DeltaY + 1
If Player.DeltaY > 10 Then Player.DeltaY = 10
L_nKeyDelay = 0
End If
If L_bKeyS Then
Player.Shoot
L_nKeyDelay = 0
End If
If L_bKeyE Then
Mode = 5
I_oMenu.DspOpen = True
I_oMenu.VidOpen = True
If SoundPresent Then Sounds.Add DSInstance.DuplicateSoundBuffer(Frames.Item("IDISPLAY").Sound)
L_nKeyDelay = 0
End If
End If
End If
Else
If L_bKeyL Then
I_oMenu.Execute 1
L_nKeyDelay = 10
End If
If L_bKeyR Then
I_oMenu.Execute 2
L_nKeyDelay = 10
End If
If L_bKeyU Then
I_oMenu.Execute 3
L_nKeyDelay = 10
End If
If L_bKeyD Then
I_oMenu.Execute 4
L_nKeyDelay = 10
End If
If L_bKeyS Then
I_oMenu.Execute 0
L_nKeyDelay = 10
End If
If L_bKeyE Then
I_oMenu.Execute 5
L_nKeyDelay = 10
End If
End If
End If
End Sub
Private Function HardwareCheck() As Boolean
HardwareCheck = True
If GetDeviceCaps(fZooom.hdc, 8) < 800 Then HardwareCheck = False
If GetDeviceCaps(fZooom.hdc, 10) < 600 Then HardwareCheck = False
If GetDeviceCaps(fZooom.hdc, 24) > -1 Then HardwareCheck = False
End Function
Private Sub LoadSettings()
If Dir(App.Path + "\zooom.cfg") <> "" Then
Open App.Path + "\zooom.cfg" For Input As #8
Input #8, Detail, Difficulty, Joystick, JoystickDead, I_nMusicVolume, I_nWaveVolume
Close #8
End If
End Sub
Private Sub SaveSettings()
Open App.Path + "\zooom.cfg" For Output As #8
Write #8, Me.Detail, Me.Difficulty, Me.Joystick, Me.JoystickDead, Me.MusicVolume, Me.WaveVolume
Close #8
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -