1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _GLOBAL_UNSYNCED_H
#define _GLOBAL_UNSYNCED_H
#include "System/creg/creg_cond.h"
#include "System/float3.h"
class CPlayer;
class CGameSetup;
/**
* @brief Globally accessible unsynced data
*
* Contains globally accessible data that does not remain synced
*/
class CGlobalUnsynced {
CR_DECLARE(CGlobalUnsynced);
CGlobalUnsynced();
~CGlobalUnsynced();
public:
int usRandInt(); //!< Unsynced random int
float usRandFloat(); //!< Unsynced random float
float3 usRandVector(); //!< Unsynced random vector
void LoadFromSetup(const CGameSetup* setup);
void SetMyPlayer(const int myNumber);
CPlayer* GetMyPlayer();
/**
* @brief minimum FramesPerSecond
*
* Defines how many Frames per second
* should be rendered. To reach it we
* will delay simframes.
*/
static const int minFPS = 2;
/**
* @brief simulation drawing balance
*
* Defines how much percent of the time
* for simulation is minimum spend for
* drawing.
* This is important when reconnecting,
* i.e. it means that 15% of the total
* cpu time is spend for drawing and 85%
* for reconnecting/simulation.
*/
static const float reconnectSimDrawBalance;
/**
* @brief simulation frames per second
*
* Should normally be:
* simFPS ~= GAME_SPEED * gs->userSpeedFactor;
* Only differs if the client lags or reconnects.
*/
float simFPS;
/**
* @brief average frame time (in ms)
*/
float avgSimFrameTime;
float avgDrawFrameTime;
/**
* @brief mod game time
*
* How long the game has been going on
* (modified with game's speed factor)
*/
float modGameTime;
/**
* @brief game time
*
* How long the game has been going on
* in real time
*/
float gameTime;
/**
* @brief start time
*
* The value of gameTime when the game was started
*/
float startTime;
/**
* @brief my player num
*
* Local player's number
*/
int myPlayerNum;
/**
* @brief my team
* @note changes when changing spectated team
*
* Local player's team
*/
int myTeam;
/**
* @brief my ally team
* @note changes when changing spectated team
*
* Local player's ally team
*/
int myAllyTeam;
/**
* @brief my team used when playing
* @note changes only from TEAMMSG_JOIN_TEAM and SetMyPlayer
* @note if we never joined any team, it's set to -1
*
* Local player's team
*/
int myPlayingTeam;
/**
* @brief my ally team
* @note changes only from TEAMMSG_JOIN_TEAM and SetMyPlayer
* @note if we never joined any team, it's set to -1
*
* Local player's ally team
*/
int myPlayingAllyTeam;
/**
* @brief spectating
*
* Whether this player is spectating
* (can't give orders, and can see everything if spectateFullView is true)
*/
bool spectating;
/**
* @brief spectatingFullView
*
* Whether this player is a spectator, and can see everything
* (if set to false, visibility is determined by the current team)
*/
bool spectatingFullView;
/**
* @brief spectatingFullSelect
*
* Can all units be selected when spectating?
*/
bool spectatingFullSelect;
/**
* @brief fpsMode
*
* if true, player is controlling a unit in FPS mode
*/
bool fpsMode;
/**
* @brief global quit
*
* Global boolean indicating whether the user
* wants to quit
*/
volatile bool globalQuit;
private:
/**
* @brief rand seed
*
* Stores the unsynced random seed
*/
int usRandSeed;
};
extern CGlobalUnsynced* gu;
#endif /* _GLOBAL_UNSYNCED_H */
|