Subversion Repositories Games.Carmageddon

Rev

Rev 1 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 pmbaty 1
#ifndef _OPPONENT_H_
2
#define _OPPONENT_H_
3
 
4
#include "dr_types.h"
5
 
6
#define CAR_SPEC_IS_OPPONENT(CAR_SPEC) (VEHICLE_TYPE_FROM_ID((CAR_SPEC)->car_ID) == eVehicle_opponent)
7
#define CAR_SPEC_IS_ROZZER(CAR_SPEC) (VEHICLE_TYPE_FROM_ID((CAR_SPEC)->car_ID) == eVehicle_rozzer)
8
 
9
#define CAR_SPEC_GET_SPEED_FACTOR(CAR_SPEC) (CAR_SPEC_IS_ROZZER(CAR_SPEC) ? gCop_speed_factor : gOpponent_speed_factor)
10
 
11
extern br_actor* gOppo_path_actor;
12
extern br_model* gOppo_path_model;
13
extern br_material* gMat_dk_yel;
14
extern br_material* gMat_md_yel;
15
extern br_material* gMat_lt_yel;
16
extern br_material* gMat_dk_red;
17
extern br_material* gMat_lt_red;
18
extern br_material* gMat_dk_grn;
19
extern br_material* gMat_lt_grn;
20
extern br_material* gMat_dk_blu;
21
extern br_material* gMat_lt_blu;
22
extern br_material* gMat_dk_turq;
23
extern br_material* gMat_lt_turq;
24
extern br_material* gMat_dk_gry;
25
extern br_material* gMat_md_gry;
26
extern br_material* gMat_lt_gry;
27
extern int gMellow_opponents;
28
extern int gTest_toggle;
29
extern int gAlready_elasticating;
30
extern int gVertices_used_in_non_edit_paths;
31
extern int gFaces_used_in_non_edit_paths;
32
extern int gMats_allocated;
33
extern int gOppo_paths_shown;
34
extern int gMade_path_filename;
35
extern int gBIG_APC_index;
36
extern char* gPath_section_type_names[3];
37
extern int gMin_bangness;
38
extern int gMax_bangness;
39
extern tU32 gNext_elastication;
40
extern tU32 gNext_write_during_elastication;
41
extern char* gCop_name;
42
extern char* gDrone_name;
43
extern int gChallenger_index__opponent; // suffix added to avoid duplicate symbol
44
extern int gSFS_count;
45
extern int gSFS_total_cycles;
46
extern int gSFS_max_cycles;
47
extern float gOpponent_nastyness_frigger;
48
extern char gOppo_path_filename[256];
49
extern br_scalar gIn_view_distance;
50
extern tU8* gBit_per_node;
51
extern int gGrudge_reduction_per_period;
52
extern int gSFS_cycles_this_time;
53
extern br_scalar gMinimum_yness_before_knackerisation;
54
extern int gWanky_arse_tit_fuck;
55
extern br_scalar gHead_on_cos_value;
56
extern tU32 gNext_grudge_reduction;
57
extern br_scalar gCop_pursuit_speed_percentage_multiplier;
58
extern br_scalar gDefinite_cop_pursuit_speed;
59
extern int gAcknowledged_start;
60
extern int gStart_jumped;
61
extern int gNum_of_opponents_getting_near;
62
extern int gNumber_of_cops_before_faffage;
63
extern int gFirst_frame;
64
extern tU32 gAcme_frame_count;
65
extern br_scalar gDefinite_no_cop_pursuit_speed;
66
extern int gNum_of_opponents_completing_race;
67
extern int gNum_of_opponents_pursuing;
68
extern int gActive_car_list_rebuild_required;
69
extern br_scalar gFrame_period_for_this_munging_in_secs;
70
extern int gBig_bang;
71
extern int gProcessing_opponents;
72
extern tU32 gFrame_period_for_this_munging;
73
extern tU32 gTime_stamp_for_this_munging;
74
extern tS16 gMobile_section;
75
 
76
void PointActorAlongThisBloodyVector(br_actor* pThe_actor, br_vector3* pThe_vector);
77
 
78
void ProcessCurrentObjective(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
79
 
80
tS16 ReallocExtraPathNodes(int pHow_many_then);
81
 
82
tS16 ReallocExtraPathSections(int pHow_many_then);
83
 
84
int PointVisibleFromHere(br_vector3* pFrom, br_vector3* pTo);
85
 
86
tS16 FindNearestPathNode(br_vector3* pActor_coords, br_scalar* pDistance);
87
 
88
tS16 FindNearestPathSection(br_vector3* pActor_coords, br_vector3* pPath_direction, br_vector3* pIntersect, br_scalar* pDistance);
89
 
90
tS16 FindNearestGeneralSection(tCar_spec* pPursuee, br_vector3* pActor_coords, br_vector3* pPath_direction, br_vector3* pIntersect, br_scalar* pDistance);
91
 
92
void DeadStopCar(tCar_spec* pCar_spec);
93
 
94
void TurnOpponentPhysicsOn(tOpponent_spec* pOpponent_spec);
95
 
96
void TurnOpponentPhysicsOff(tOpponent_spec* pOpponent_spec);
97
 
98
void NewObjective(tOpponent_spec* pOpponent_spec, tOpponent_objective_type pObjective_type, ...);
99
 
100
void CalcRaceRoute(tOpponent_spec* pOpponent_spec);
101
 
102
void TopUpRandomRoute(tOpponent_spec* pOpponent_spec, int pSections_to_add);
103
 
104
int SearchForSection(tRoute_section* pTemp_store, tRoute_section* pPerm_store, int* pNum_of_perm_store_sections, tS16 pTarget_section, int pDepth, br_scalar pDistance_so_far, tOpponent_spec* pOpponent_spec);
105
 
106
void CalcGetNearPlayerRoute(tOpponent_spec* pOpponent_spec, tCar_spec* pPlayer);
107
 
108
void CalcReturnToStartPointRoute(tOpponent_spec* pOpponent_spec);
109
 
110
void ClearOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec);
111
 
112
int AddToOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec, tS16 pSection_no, int pDirection);
113
 
114
int ShiftOpponentsProjectedRoute(tOpponent_spec* pOpponent_spec, int pPlaces);
115
 
116
void StunTheBugger(tOpponent_spec* pOpponent_spec, int pMilliseconds);
117
 
118
void UnStunTheBugger(tOpponent_spec* pOpponent_spec);
119
 
120
void ProcessCompleteRace(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
121
 
122
void StartRecordingTrail(tCar_spec* pPursuee);
123
 
124
void RecordNextTrailNode(tCar_spec* pPursuee);
125
 
126
tS16 FindNearestTrailSection(tOpponent_spec* pOpponent_spec, tCar_spec* pPursuee, br_vector3* pSection_v, br_vector3* pIntersect, br_scalar* pDistance);
127
 
128
tS16 CalcNextTrailSection(tOpponent_spec* pOpponent_spec, int pSection);
129
 
130
void ProcessPursueAndTwat(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
131
 
132
void ProcessRunAway(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
133
 
134
void ProcessWaitForSomeHaplessSod(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
135
 
136
void ProcessReturnToStart(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
137
 
138
void ProcessLevitate(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
139
 
140
void ProcessGetNearPlayer(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
141
 
142
void ProcessFrozen(tOpponent_spec* pOpponent_spec, tProcess_objective_command pCommand);
143
 
144
int HeadOnWithPlayerPossible(tOpponent_spec* pOpponent_spec);
145
 
146
int AlreadyPursuingCar(tOpponent_spec* pOpponent_spec, tCar_spec* pPursuee);
147
 
148
int LastTwatteeAPlayer(tOpponent_spec* pOpponent_spec);
149
 
150
int LastTwatterAPlayer(tOpponent_spec* pOpponent_spec);
151
 
152
void ObjectiveComplete(tOpponent_spec* pOpponent_spec);
153
 
154
void TeleportOpponentToNearestSafeLocation(tOpponent_spec* pOpponent_spec);
155
 
156
void ChooseNewObjective(tOpponent_spec* pOpponent_spec, int pMust_choose_one);
157
 
158
void ProcessThisOpponent(tOpponent_spec* pOpponent_spec);
159
 
160
int IsNetCarActive(br_vector3* pPoint);
161
 
162
void RebuildActiveCarList(void);
163
 
164
void ForceRebuildActiveCarList(void);
165
 
166
void StartToCheat(tOpponent_spec* pOpponent_spec);
167
 
168
void OiStopCheating(tOpponent_spec* pOpponent_spec);
169
 
170
int TeleportCopToStart(tOpponent_spec* pOpponent_spec);
171
 
172
void CalcDistanceFromHome(tOpponent_spec* pOpponent_spec);
173
 
174
int MassageOpponentPosition(tOpponent_spec* pOpponent_spec, int pMassage_count);
175
 
176
int RematerialiseOpponentOnThisSection(tOpponent_spec* pOpponent_spec, br_scalar pSpeed, tS16 pSection_no);
177
 
178
int RematerialiseOpponentOnNearestSection(tOpponent_spec* pOpponent_spec, br_scalar pSpeed);
179
 
180
int RematerialiseOpponent(tOpponent_spec* pOpponent_spec, br_scalar pSpeed);
181
 
182
void CalcPlayerConspicuousness(tOpponent_spec* pOpponent_spec);
183
 
184
void CalcOpponentConspicuousnessWithAViewToCheatingLikeFuck(tOpponent_spec* pOpponent_spec);
185
 
186
void ChallengeOccurred(int pChallenger_index, int pAccepted);
187
 
188
void LoadCopCars(void);
189
 
190
void LoadInOppoPaths(FILE* pF);
191
 
192
void DisposeOpponentPaths(void);
193
 
194
void MungeOpponents(tU32 pFrame_period);
195
 
196
void SetInitialCopPositions(void);
197
 
198
void InitOpponents(tRace_info* pRace_info);
199
 
200
void DisposeOpponents(void);
201
 
202
void WakeUpOpponentsToTheFactThatTheStartHasBeenJumped(int pWhat_the_countdown_was);
203
 
204
void ReportMurderToPoliceDepartment(tCar_spec* pCar_spec);
205
 
206
int GetCarCount(tVehicle_type pCategory);
207
 
208
tCar_spec* GetCarSpec(tVehicle_type pCategory, int pIndex);
209
 
210
char* GetDriverName(tVehicle_type pCategory, int pIndex);
211
 
212
tOpponent_spec* GetOpponentSpecFromCarSpec(tCar_spec* pCar_spec);
213
 
214
tCar_spec* GetCarSpecFromGlobalOppoIndex(int pIndex);
215
 
216
int GetOpponentsRealSection(tOpponent_spec* pOpponent_spec, int pSection_no);
217
 
218
int GetOpponentsFirstSection(tOpponent_spec* pOpponent_spec);
219
 
220
int GetOpponentsNextSection(tOpponent_spec* pOpponent_spec, tS16 pCurrent_section);
221
 
222
tS16 GetOpponentsSectionStartNode(tOpponent_spec* pOpponent_spec, tS16 pSection);
223
 
224
tS16 GetOpponentsSectionFinishNode(tOpponent_spec* pOpponent_spec, tS16 pSection);
225
 
226
br_vector3* GetOpponentsSectionStartNodePoint(tOpponent_spec* pOpponent_spec, tS16 pSection);
227
 
228
br_vector3* GetOpponentsSectionFinishNodePoint(tOpponent_spec* pOpponent_spec, tS16 pSection);
229
 
230
br_scalar GetOpponentsSectionWidth(tOpponent_spec* pOpponent_spec, tS16 pSection);
231
 
232
int GetOpponentsSectionMinSpeed(tOpponent_spec* pOpponent_spec, tS16 pSection, int pTowards_finish);
233
 
234
int GetOpponentsSectionMaxSpeed(tOpponent_spec* pOpponent_spec, tS16 pSection, int pTowards_finish);
235
 
236
void InitOpponentPsyche(int pOpponent_index);
237
 
238
void ClearTwattageOccurrenceVariables(tOpponent_spec* pOpponent_spec);
239
 
240
void TwoCarsHitEachOther(tCar_spec* pA_car, tCar_spec* pAnother_car);
241
 
242
void RecordOpponentTwattageOccurrence(tCar_spec* pTwatter, tCar_spec* pTwattee);
243
 
244
void ToggleOpponentTest(void);
245
 
246
void ToggleOpponentProcessing(void);
247
 
248
void ToggleMellowOpponents(void);
249
 
250
void RepairOpponentsSystems(void);
251
 
252
void CopyVertex__opponent(br_vertex* pDest_vertex, br_vertex* pSrc_vertex);
253
 
254
void CopyFace__opponent(br_face* pDest_face, br_face* pSrc_face);
255
 
256
void DeleteSection(tS16 pSection_to_delete);
257
 
258
void DeleteNode(tS16 pNode_to_delete, int pAnd_sections);
259
 
260
void DeleteOrphanNodes(void);
261
 
262
void InsertThisNodeInThisSectionHere(tS16 pInserted_node, tS16 pSection_no, br_vector3* pWhere);
263
 
264
void TrackElasticateyPath(void);
265
 
266
void RecalcNearestPathSectionSpeed(int pMax_not_min, int pAdjustment);
267
 
268
void RecalcNearestPathSectionWidth(br_scalar pAdjustment);
269
 
270
void CalcNegativeXVector(br_vector3* pNegative_x_vector, br_vector3* pStart, br_vector3* pFinish, br_scalar pLength);
271
 
272
void MakeVertexAndOffsetIt(br_model* pModel, int pVertex_num, br_scalar pX, br_scalar pY, br_scalar pZ, br_vector3* pOffset);
273
 
274
void MakeFaceAndTextureIt(br_model* pModel, int pFace_num, int pV0, int pV1, int pV2, br_material* pMaterial);
275
 
276
void MakeSection(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3* pStart, br_vector3* pFinish, br_scalar pWidth, br_material* pMaterial_centre_lt, br_material* pMaterial_centre_dk, br_material* pMaterial_edges_start_lt, br_material* pMaterial_edges_start_dk, br_material* pMaterial_edges_finish_lt, br_material* pMaterial_edges_finish_dk);
277
 
278
void MakeCube(br_uint_16 pFirst_vertex, br_uint_16 pFirst_face, br_vector3* pPoint, br_material* pMaterial_1, br_material* pMaterial_2, br_material* pMaterial_3);
279
 
280
void CalcNumberOfFacesAndVerticesForOppoPathModel(br_uint_16* pFace_index_ptr, br_uint_16* pVertex_index_ptr);
281
 
282
void ReallocModelFacesAndVertices(br_model* pModel, int pNum_faces, int pNum_vertices);
283
 
284
br_material* CreateSimpleMaterial(int pColour_index);
285
 
286
void AllocateMatsForOppoPathModel(void);
287
 
288
void RebuildOppoPathModel(void);
289
 
290
int ConsistencyCheck(void);
291
 
292
void ShowOppoPaths(void);
293
 
294
void WriteOutOppoPaths(void);
295
 
296
int NewNodeOKHere(void);
297
 
298
void ShowHideOppoPaths(void);
299
 
300
void DropElasticateyNode(void);
301
 
302
void InsertAndElasticate(void);
303
 
304
void InsertAndDontElasticate(void);
305
 
306
void DropDeadEndNode(void);
307
 
308
void DropNodeOnNodeAndStopElasticating(void);
309
 
310
void WidenOppoPathSection(void);
311
 
312
void NarrowOppoPathSection(void);
313
 
314
void IncreaseSectionMinSpeed(void);
315
 
316
void DecreaseSectionMinSpeed(void);
317
 
318
void IncreaseSectionMaxSpeed(void);
319
 
320
void DecreaseSectionMaxSpeed(void);
321
 
322
void PullOppoPoint(void);
323
 
324
void ShowNodeInfo(void);
325
 
326
void ShowSectionInfo1(void);
327
 
328
void ShowSectionInfo2(void);
329
 
330
void DeleteOppoPathSection(void);
331
 
332
void DeleteOppoPathNodeAndSections(void);
333
 
334
void DeleteOppoPathNodeAndJoin(void);
335
 
336
void ReverseSectionDirection(void);
337
 
338
void CycleSectionType(void);
339
 
340
void ToggleOneWayNess(void);
341
 
342
void CopStartPointInfo(void);
343
 
344
void DropCopStartPoint(void);
345
 
346
void DeleteCopStartPoint(void);
347
 
348
void CycleCopStartPointType(void);
349
 
350
#endif