1) ? "" Gamestate - ? ?
, , , . , gamestate .
2) , Gamestate getters/seters, , , , , , / . , . ?
. , , , , - . LogicManager Renderer , Gamestate . .
, , . GameStateData GameStateAccess. GameStateData , . GameStateAccess GameStateData . GameStateAccess GameStateData . . , , GameStateAccess .
: , , GameStateAccess, , , . , , , - , , , GameStateAccess , , , .
++ 11, :
class GameStateData {
private:
std::mutex _mtx;
int _val;
friend class GameStateAccess;
};
GameStateData global_state;
class GameStateAccess {
private:
GameStateData& _data;
std::lock_guard<std::mutex> _lock;
public:
GameStateAccess(GameStateData& data)
: _data(data), _lock(data._mtx) {}
int getValue() const { return _data._val; }
void setValue(int val) { _data._val = val; }
};
void LogicManager::performStateUpdate {
int valueIncrement = computeValueIncrement();
{ GameStateAccess gs(global_state);
int oldValue = gs.getValue();
int newValue = oldValue + valueIncrement;
gs.setValue(newValue);
}
cleanup();
}
3) , "bool run", ,
while(gs->run){
....
}
run false, quit EventManager. ? ?
, . , , , .
std::atomic .
4) .. ? gs->objects->entitylist.at(2)->move(); -> . ?
. , . gs->objects->entitylist.at(2) , , . , , - , .