Subversion Repositories Games.Carmageddon

Rev

Rev 18 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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