12#ifndef TT_INCLUDE__COMBATMANAGER_H
13#define TT_INCLUDE__COMBATMANAGER_H
14#include "engine_string.h"
15#include "ReferencerClass.h"
16#include "VehicleGameObj.h"
17#define COMBAT_CAMERA CombatManager::Get_Camera()
18#define COMBAT_STAR CombatManager::Get_The_Star()
19#define COMBAT_SCENE CombatManager::Get_Scene()
20#define COMBAT_DAZZLE_LAYER CombatManager::Get_Dazzle_Layer()
23class CombatNetworkHandlerClass {
25 virtual bool Can_Damage(ArmedGameObj * p_armed_damager, PhysicalGameObj * p_phys_victim) = 0;
26 virtual float Get_Damage_Factor(ArmedGameObj * p_armed_damager, PhysicalGameObj * p_phys_victim) = 0;
27 virtual void On_Soldier_Kill(SoldierGameObj * p_soldier, SoldierGameObj * p_victim) = 0;
28 virtual void On_Soldier_Death(SoldierGameObj * p_soldier) = 0;
29 virtual bool Is_Gameplay_Permitted(
void) = 0;
32class CombatMiscHandlerClass {
34 virtual void Mission_Complete(
bool success ) = 0;
35 virtual void Star_Killed(
void ) = 0;
38class SimpleSceneClass;
42class GameCombatNetworkHandlerClass;
48class MessageWindowClass;
49class SoundEnvironmentClass;
50class PhysicsSceneClass;
52class DazzleLayerClass;
53class CombatDazzleClass;
54class CombatMiscHandlerClass;
61 static void Init(
bool render_available);
62 static void Shutdown();
63 static void Scene_Init();
64 static void Pre_Load_Level(
bool);
65 static void Load_Level_Threaded(
char const*,
bool);
66 static bool Is_Load_Level_Complete();
67 static bool Is_Loading_Level();
68 static void Post_Load_Level();
69 static void Unload_Level();
70 static void Generate_Control();
73 static void Handle_Input();
74 static bool Save(ChunkSaveClass&);
75 static bool Load(ChunkLoadClass&);
76 static void Init_Dazzle_Layer(
bool render_available);
77 static void Shutdown_Dazzle_Layer();
78 static void Set_I_Am_Server(
bool yes) { IAmServer = yes; }
79 static void Set_I_Am_Client(
bool yes) { IAmClient = yes; }
81 static bool I_Am_Server() {
return IAmServer; }
82 static bool Are_Observers_Active(
void ) {
return AreObserversActive; }
83 static bool Is_First_Load(
void ) {
return IsFirstLoad; }
85 static bool I_Am_Client() {
return IAmClient; }
86 static bool I_Am_Only_Client() {
return IAmClient && !IAmServer; }
87 static bool I_Am_Only_Server() {
return IAmServer && !IAmClient; }
88 static bool I_Am_Client_Server() {
return IAmClient && IAmServer;}
89 static void Set_Friendly_Fire_Permitted(
bool yes ) { FriendlyFirePermitted = yes; }
90 static bool Is_Friendly_Fire_Permitted(
void ) {
return FriendlyFirePermitted; }
91 static void Set_Beacon_Placement_Ends_Game(
bool yes ){ BeaconPlacementEndsGame = yes; }
92 static bool Does_Beacon_Placement_Ends_Game(
void ) {
return BeaconPlacementEndsGame; }
93 static void Set_My_Id(
int id ) { MyId = id; }
94 static int Get_My_Id(
void ) {
return MyId; }
95 static void Set_Last_Round_Trip_Ping_Ms( DWORD ping ) { LastRoundTripPingMs = ping; }
96 static DWORD Get_Last_Round_Trip_Ping_Ms(
void ) {
return LastRoundTripPingMs; }
97 static void Set_Avg_Round_Trip_Ping_Ms( DWORD ping ) { AvgRoundTripPingMs = ping; }
98 static DWORD Get_Avg_Round_Trip_Ping_Ms(
void ) {
return AvgRoundTripPingMs; }
99 static void Set_Combat_Network_Handler( CombatNetworkHandlerClass * handler ) { NetworkHandler = handler; }
100 static bool Can_Damage(ArmedGameObj*, PhysicalGameObj*);
101 static float Get_Damage_Factor(ArmedGameObj*, PhysicalGameObj*);
102 static void On_Soldier_Kill(SoldierGameObj *attacker, SoldierGameObj *victim);
103 static void On_Soldier_Death(SoldierGameObj*);
104 static bool Is_Gameplay_Permitted();
105 static void Set_Combat_Misc_Handler( CombatMiscHandlerClass * handler ) { MiscHandler = handler; }
106 static void Mission_Complete(
bool);
107 static void Star_Killed();
108 static void Set_The_Star(SoldierGameObj*,
bool);
109 static SoldierGameObj *Get_The_Star(
void ) {
return (SoldierGameObj *)TheStar.Get_Ptr(); }
110 static void Update_Star();
111 static void Update_Star_Targeting();
112 static bool Is_Star_Determining_Target(
void) {
return IsStarDeterminingTarget;}
113 static void Set_Is_Star_Determining_Target(
bool flag) {IsStarDeterminingTarget = flag;}
114 static PhysicsSceneClass* Get_Scene();
115 static SimpleSceneClass* Get_Background_Scene(
void ) {
return BackgroundScene; }
116 static CCameraClass* Get_Camera(
void ) {
return MainCamera; }
117 static SoundEnvironmentClass* Get_Sound_Environment(
void ) {
return SoundEnvironment; }
118 static void Set_Camera_Profile(
char const*);
119 static void Set_Camera_Vehicle( VehicleGameObj * obj,
int seat = 0 );
120 bool Is_In_Camera_Frustrum(Vector3&);
121 static void Set_Observers_Active(
bool onoff ) { AreObserversActive = onoff; }
122 static void Set_First_Load(
bool onoff ) { IsFirstLoad = onoff; }
123 static void Do_Skeleton_Slider_Demo();
124 static void Toggle_Skeleton_Slider_Demo(
void ) { EnableSkeletonSliderDemo = !EnableSkeletonSliderDemo; }
125 static bool Is_Skeleton_Slider_Demo_Enabled(
void ) {
return EnableSkeletonSliderDemo; }
126 static DazzleLayerClass *Get_Dazzle_Layer(
void) {
return DazzleLayer; }
127 static void Set_First_Person(
bool on_off ) { FirstPerson = on_off; }
128 static bool Is_First_Person(
void ) {
return FirstPerson; }
129 static void Set_First_Person_Default(
bool on_off ) { FirstPersonDefault = on_off; }
130 static bool Get_First_Person_Default(
void ) {
return FirstPersonDefault; }
131 static void Set_Difficulty_Level(
int level ) { DifficultyLevel = level; }
132 static int Get_Difficulty_Level(
void ) {
return DifficultyLevel; }
133 static bool Are_Transitions_Automatic(
void ) {
return AutoTransitions; }
134 static void Set_Transitions_Automatic(
bool state ) { AutoTransitions = state; }
135 static MessageWindowClass *Get_Message_Window (
void) {
return MessageWindow; }
136 static void Show_Star_Damage_Direction(
int direction ) { StarDamageDirection |= 1 << (direction&7); }
137 static int Get_Star_Damage_Direction(
void ) {
return StarDamageDirection; }
138 static void Clear_Star_Damage_Direction(
void ) { StarDamageDirection = 0; }
139 static int Get_Sync_Time(
void ) {
return SyncTime; }
140 static bool Is_Game_Paused(
void ) {
return IsGamePaused; }
141 static void Register_Star_Killer(ArmedGameObj*);
142 static const char *Get_Start_Script(
void ) {
return StartScript; }
143 static const char *Get_Respawn_Script(
void ) {
return RespawnScript; }
144 static void Set_Start_Script(
const char *
string ) { StartScript = string; }
145 static void Set_Respawn_Script(
const char *
string ) { RespawnScript = string; }
146 static void Request_Autosave(
bool state =
true ) { AutosaveRequested = state; }
147 static bool Is_Autosave_Requested(
void ) {
return AutosaveRequested; }
148 static int Get_Reload_Count(
void ) {
return ReloadCount; }
149 static bool Is_Hit_Reticle_Enabled(
void ) {
return HitReticleEnabled; }
150 static void Toggle_Hit_Reticle_Enabled(
void ) { HitReticleEnabled = !HitReticleEnabled; }
151 static const char * Get_Last_LSD_Name(
void ) {
return LastLSDName; };
152 static void Set_Last_LSD_Name(
const char * name ) { LastLSDName = name; };
153 static int Get_Load_Progress(
void ) {
return LoadProgress; };
154 static void Inc_Load_Progress(
void ) { LoadProgress++; };
155 static void Set_Load_Progress(
int set ) { LoadProgress = set; };
159 static const ReferencerClass& getTheStarReference() {
return TheStar; }
161 static REF_DECL(
bool, IAmServer);
162 static REF_DECL(
bool, AreObserversActive);
163 static REF_DECL(
bool, IsFirstLoad);
165 static REF_DECL(
bool, IAmClient);
166 static REF_DECL(
bool, IAmOnlyClient);
167 static REF_DECL(
bool, IAmOnlyServer);
168 static REF_DECL(
int, MyId);
169 static REF_DECL(uint, SyncTime);
170 static REF_DECL(
bool, IsGamePaused);
171 static REF_DECL(
bool, IsLevelInitialized);
172 static REF_DECL(
bool, FriendlyFirePermitted);
173 static REF_DECL(
bool, BeaconPlacementEndsGame);
174 static REF_DECL(
bool, FirstPerson);
175 static REF_DECL(
bool, FirstPersonDefault);
176 static REF_DECL(CCameraClass*, MainCamera);
177 static REF_DECL(SimpleSceneClass*, BackgroundScene);
178 static REF_DECL(SoundEnvironmentClass*, SoundEnvironment);
179 static REF_DECL(DazzleLayerClass*, DazzleLayer);
180 static REF_DECL(MessageWindowClass*, MessageWindow);
181 static REF_DECL(ReferencerClass, TheStar);
182 static REF_DECL(
bool, IsStarDeterminingTarget);
183 static REF_DECL(
bool, EnableSkeletonSliderDemo);
184 static REF_DECL(
int, DifficultyLevel);
185 static REF_DECL(
bool, AutoTransitions);
186 static REF_DECL(
int, StarDamageDirection);
187 static REF_DECL(
int, StarKillerID);
188 static REF_DECL(CombatNetworkHandlerClass*, NetworkHandler);
189 static REF_DECL(CombatMiscHandlerClass*, MiscHandler);
190 static REF_DECL(StringClass, StartScript);
191 static REF_DECL(StringClass, RespawnScript);
192 static REF_DECL(
int, ReloadCount);
193 static REF_DECL(
bool, HitReticleEnabled);
194 static REF_DECL(
bool, IsGameplayPermitted);
197 COMBAT_MODE_FIRST_PERSON,
198 COMBAT_MODE_THIRD_PERSON,
200 COMBAT_MODE_IN_VEHICLE,
201 COMBAT_MODE_ON_LADDER,
204 COMBAT_MODE_SNAP_SHOT,
206 static REF_DECL(
int, CombatMode);
207 static REF_DECL(
bool, AutosaveRequested);
208 static void Set_Combat_Mode(
int);
209 static void Update_Combat_Mode();
210 static REF_DECL(
int, LastRoundTripPingMs);
211 static REF_DECL(
int, AvgRoundTripPingMs);
212 static REF_DECL(StringClass, LastLSDName);
213 static REF_DECL(
int, LoadProgress);
214 static REF_DECL(
bool, MultiplayRenderingAllowed);
215 static CombatDazzleClass _TheCombatDazzleHandler;