1 |
VERSION 1.0 CLASS |
2 |
BEGIN |
3 |
MultiUse = -1 'True |
4 |
Persistable = 0 'NotPersistable |
5 |
DataBindingBehavior = 0 'vbNone |
6 |
DataSourceBehavior = 0 'vbNone |
7 |
MTSTransactionMode = 0 'NotAnMTSObject |
8 |
END |
9 |
Attribute VB_Name = "Class_Player" |
10 |
Attribute VB_GlobalNameSpace = False |
11 |
Attribute VB_Creatable = True |
12 |
Attribute VB_PredeclaredId = False |
13 |
Attribute VB_Exposed = False |
14 |
Option Explicit |
15 |
|
16 |
' --- public ---------------------------------------------------------------------------------------------- |
17 |
|
18 |
Enum Enum_PlayerControlFlags |
19 |
|
20 |
ePCF_Forward = 1 |
21 |
ePCF_Backward = 2 |
22 |
ePCF_Left = 4 |
23 |
ePCF_Right = 8 |
24 |
ePCF_Break = 16 |
25 |
ePCF_Horn = 32 |
26 |
|
27 |
End Enum |
28 |
|
29 |
Enum Enum_PlayerTypes |
30 |
|
31 |
ePT_LocalHuman |
32 |
ePT_LocalRobot |
33 |
ePT_Remote |
34 |
|
35 |
End Enum |
36 |
|
37 |
Public bOffroad As Boolean |
38 |
|
39 |
Public lPlayerControlFlags As Enum_PlayerControlFlags |
40 |
|
41 |
Public lPlayerID As Long |
42 |
|
43 |
Public lPlayerType As Enum_PlayerTypes ' What type is the player (local human, local bot, remote player) |
44 |
|
45 |
Public lRoundCount As Long |
46 |
|
47 |
Public lTrackSegment As Long |
48 |
|
49 |
Public sgAcceleration As Single |
50 |
Public sgAngleY As Single |
51 |
|
52 |
Public sgRoundBestTime As Single |
53 |
Public sgRoundTime As Single |
54 |
|
55 |
Public sgSpeed As Single |
56 |
Public sgSpeedRate As Single |
57 |
Public sgSteeringWheelPosition As Single |
58 |
|
59 |
Public strName As String |
60 |
Public strPlayerKey As String |
61 |
|
62 |
' --- private -------------------------------------------------------------------------------------------- |
63 |
|
64 |
Private prvtpVecPlayerPosition As D3DVECTOR |
65 |
|
66 |
Private prvCol_DSSoundBuffers As New Collection |
67 |
Private prvCol_DS3DBuffers As New Collection |
68 |
' |
69 |
|
70 |
Public Function AddSoundFromFile(strWaveFilePath As String) |
71 |
|
72 |
Dim clDSSoundBuffer As DirectSoundSecondaryBuffer8 |
73 |
Dim clDS3DBuffer As DirectSound3DBuffer8 |
74 |
|
75 |
Dim tpSoundBufferDescription As DSBUFFERDESC |
76 |
|
77 |
Dim tpDSBufferDescription As DSBUFFERDESC |
78 |
|
79 |
With tpSoundBufferDescription |
80 |
|
81 |
.lFlags = DSBCAPS_CTRL3D Or DSBCAPS_LOCSOFTWARE Or DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLFREQUENCY |
82 |
.guid3DAlgorithm = "" |
83 |
|
84 |
End With |
85 |
|
86 |
'"App.Path + "\Audio\motor1.wav" |
87 |
Set clDSSoundBuffer = clSystem.DS8.CreateSoundBufferFromFile(strWaveFilePath, tpSoundBufferDescription) |
88 |
|
89 |
clDSSoundBuffer.SetVolume -8192 |
90 |
|
91 |
Set clDS3DBuffer = clDSSoundBuffer.GetDirectSound3DBuffer |
92 |
|
93 |
prvCol_DSSoundBuffers.Add clDSSoundBuffer |
94 |
prvCol_DS3DBuffers.Add clDS3DBuffer |
95 |
|
96 |
End Function |
97 |
|
98 |
Property Get DS3DBuffer(lIndex As Long) As DirectSound3DBuffer8 |
99 |
|
100 |
Set DS3DBuffer = prvCol_DS3DBuffers(lIndex) |
101 |
|
102 |
End Property |
103 |
|
104 |
Property Get DSSoundBuffer(lIndex As Long) As DirectSoundSecondaryBuffer8 |
105 |
|
106 |
Set DSSoundBuffer = prvCol_DSSoundBuffers(lIndex) |
107 |
|
108 |
End Property |
109 |
|
110 |
Public Function CreatePlayer(lPlayerType As Long, strName As String) As Class_Player |
111 |
|
112 |
Set CreatePlayer = New Class_Player |
113 |
|
114 |
With CreatePlayer |
115 |
|
116 |
.lPlayerType = lPlayerType |
117 |
|
118 |
.sgAcceleration = 0 |
119 |
.sgSteeringWheelPosition = 0 |
120 |
|
121 |
.sgAngleY = 0 |
122 |
|
123 |
.sgSpeed = 0 |
124 |
.sgSpeedRate = 0 |
125 |
|
126 |
.strName = strName |
127 |
|
128 |
.SetPosition clScene.VecPlayerStartPosition |
129 |
|
130 |
.AddSoundFromFile App.Path + "\Audio\motor1.wav" |
131 |
.AddSoundFromFile App.Path + "\Audio\brake1.wav" |
132 |
.AddSoundFromFile App.Path + "\Audio\horn1.wav" |
133 |
|
134 |
End With |
135 |
|
136 |
End Function |
137 |
|
138 |
Public Function GetPosition() As D3DVECTOR |
139 |
|
140 |
GetPosition = prvtpVecPlayerPosition |
141 |
|
142 |
End Function |
143 |
|
144 |
Public Function SetPosition(tpVecPosition As D3DVECTOR) |
145 |
|
146 |
Dim l As Long |
147 |
Dim clDS3DBuffer As DirectSound3DBuffer8 |
148 |
|
149 |
prvtpVecPlayerPosition = tpVecPosition |
150 |
|
151 |
For l = 1 To prvCol_DS3DBuffers.Count |
152 |
|
153 |
Set clDS3DBuffer = prvCol_DS3DBuffers(l) |
154 |
|
155 |
clDS3DBuffer.SetPosition tpVecPosition.X, tpVecPosition.Y, tpVecPosition.Z, DS3D_IMMEDIATE |
156 |
|
157 |
Next l |
158 |
|
159 |
End Function |
160 |
|
161 |
Private Sub Class_Terminate() |
162 |
|
163 |
Dim clDSSoundBuffer As DirectSoundSecondaryBuffer8 |
164 |
|
165 |
While prvCol_DSSoundBuffers.Count > 0 |
166 |
|
167 |
Set clDSSoundBuffer = prvCol_DSSoundBuffers(1) |
168 |
|
169 |
clDSSoundBuffer.Stop |
170 |
|
171 |
prvCol_DSSoundBuffers.Remove 1 |
172 |
prvCol_DS3DBuffers.Remove 1 |
173 |
|
174 |
Wend |
175 |
|
176 |
End Sub |