Tiberian Technologies Scripts Reference Revision: 9000
Loading...
Searching...
No Matches
CombatManager.h
1/* Renegade Scripts.dll
2 Copyright 2013 Tiberian Technologies
3
4 This file is part of the Renegade scripts.dll
5 The Renegade scripts.dll is free software; you can redistribute it and/or modify it under
6 the terms of the GNU General Public License as published by the Free
7 Software Foundation; either version 2, or (at your option) any later
8 version. See the file COPYING for more details.
9 In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
10 Only the source code to the module(s) containing the licenced code has to be released.
11*/
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()
21
22
23class CombatNetworkHandlerClass {
24public:
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;
30};
31
32class CombatMiscHandlerClass {
33public:
34 virtual void Mission_Complete( bool success ) = 0;
35 virtual void Star_Killed( void ) = 0;
36};
37
38class SimpleSceneClass;
39class SoldierGameObj;
40class CCameraClass;
41class ReferencerClass;
42class GameCombatNetworkHandlerClass;
43class ArmedGameObj;
44class PhysicalGameObj;
45class ChunkSaveClass;
46class ChunkLoadClass;
47class Vector3;
48class MessageWindowClass;
49class SoundEnvironmentClass;
50class PhysicsSceneClass;
51class SceneClass;
52class DazzleLayerClass;
53class CombatDazzleClass;
54class CombatMiscHandlerClass;
55
56
57class CombatManager
58{
59public:
60#ifndef TTLE_EXPORTS
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();
71 static void Think();
72 static void Render();
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; }
80#endif
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; }
84#ifndef TTLE_EXPORTS
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; };
156#endif
157private:
158#ifndef TTLE_EXPORTS
159 static const ReferencerClass& getTheStarReference() { return TheStar; }
160#endif
161 static REF_DECL(bool, IAmServer);
162 static REF_DECL(bool, AreObserversActive);
163 static REF_DECL(bool, IsFirstLoad);
164#ifndef TTLE_EXPORTS
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);
195 typedef enum {
196 COMBAT_MODE_NONE,
197 COMBAT_MODE_FIRST_PERSON,
198 COMBAT_MODE_THIRD_PERSON,
199 COMBAT_MODE_SNIPING,
200 COMBAT_MODE_IN_VEHICLE,
201 COMBAT_MODE_ON_LADDER,
202 COMBAT_MODE_DIEING,
203 COMBAT_MODE_CORPSE,
204 COMBAT_MODE_SNAP_SHOT,
205 };
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;
216#endif
217};
218
219#endif