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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _GLOBAL_SYNCED_H
#define _GLOBAL_SYNCED_H
#include "System/creg/creg_cond.h"
#include "System/GlobalRNG.h"
class CGameSetup;
class CTeam;
class CPlayer;
/**
* @brief Global synced data
*
* Class contains globally accessible
* data that remains synced.
*/
class CGlobalSynced
{
public:
CR_DECLARE_STRUCT(CGlobalSynced)
CGlobalSynced(); //!< Constructor
~CGlobalSynced(); //!< Destructor
void ResetState();
void LoadFromSetup(const CGameSetup*);
// Lua should never see the pre-simframe value
int GetLuaSimFrame() { return (frameNum > 0) ? frameNum : 0; }
int GetTempNum() { return tempNum++; }
// remains true until first SimFrame call
bool PreSimFrame() const { return (frameNum == -1); }
public:
/**
* @brief frame number
*
* Stores the current frame number
*/
int frameNum;
/**
* @brief speed factor
*
* Contains the actual gamespeed factor
* used by the game. The real gamespeed
* can be up to this but is lowered if
* clients can't keep up (lag protection)
*/
float speedFactor;
/**
* @brief wanted speed factor
*
* Contains the aimed speed factor.
* The total simframes
* per second calculate as follow:
* wantedSimFPS = speedFactor * GAME_SPEED;
*/
float wantedSpeedFactor;
/**
* @brief paused
*
* Holds whether the game is paused
*/
bool paused;
/**
* @brief god mode
*
* Whether god-mode is enabled, which allows all players (even spectators)
* to control all units.
*/
bool godMode;
/**
* @brief cheat enabled
*
* Whether cheating is enabled
*/
bool cheatEnabled;
/**
* @brief disable helper AIs
*
* Whether helper AIs are allowed, including LuaUI control widgets
*/
bool noHelperAIs;
/**
* @brief definition editing enabled
*
* Whether editing of unit-, feature- and weapon-defs through Lua is enabled.
*/
bool editDefsEnabled;
/**
* @brief LuaGaia control
*
* Whether or not LuaGaia is enabled
*/
bool useLuaGaia;
private:
/**
* @brief temp num
*
* Used for getting temporary but unique numbers
* (increase after each use)
*/
int tempNum;
};
extern CGlobalSynced* gs;
extern CGlobalSyncedRNG gsRNG;
#endif // _GLOBAL_SYNCED_H
|