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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#include "GlobalSynced.h"
#include <assert.h>
#include <cstring>
#include "ExternalAI/SkirmishAIHandler.h"
#include "Game/GameSetup.h"
#include "Sim/Misc/TeamHandler.h"
#include "Sim/Misc/GlobalConstants.h"
#include "System/SafeUtil.h"
#include "System/Log/FramePrefixer.h"
#ifdef SYNCCHECK
#include "System/Sync/SyncChecker.h"
#endif
/**
* @brief global synced
*
* Global instance of CGlobalSynced
*/
CGlobalSynced gsOBJ;
CGlobalSyncedRNG gsRNG;
CGlobalSynced* gs = &gsOBJ;
CR_BIND(CGlobalSynced, )
CR_REG_METADATA(CGlobalSynced, (
CR_MEMBER(frameNum),
CR_MEMBER(tempNum),
CR_MEMBER(godMode),
CR_MEMBER(speedFactor),
CR_MEMBER(wantedSpeedFactor),
CR_MEMBER(paused),
CR_MEMBER(cheatEnabled),
CR_MEMBER(noHelperAIs),
CR_MEMBER(editDefsEnabled),
CR_MEMBER(useLuaGaia)
))
void CGlobalSynced::Kill()
{
log_framePrefixer_setFrameNumReference(nullptr);
}
void CGlobalSynced::ResetState() {
frameNum = -1; // first real frame is 0
tempNum = 1;
godMode = 0;
#ifdef SYNCCHECK
// reset checksum
CSyncChecker::NewFrame();
#endif
speedFactor = 1.0f;
wantedSpeedFactor = 1.0f;
paused = false;
cheatEnabled = false;
noHelperAIs = false;
editDefsEnabled = false;
useLuaGaia = true;
gsRNG.SetSeed(18655, true);
log_framePrefixer_setFrameNumReference(&frameNum);
}
void CGlobalSynced::LoadFromSetup(const CGameSetup* setup)
{
noHelperAIs = setup->noHelperAIs;
useLuaGaia = setup->useLuaGaia;
teamHandler.ResetState();
teamHandler.LoadFromSetup(setup);
skirmishAIHandler.ResetState();
skirmishAIHandler.LoadFromSetup(*setup);
}
|