-
Notifications
You must be signed in to change notification settings - Fork 148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix for a CBA_missionTime initialization race condition #1047
Conversation
Bismarck wrote:
// increase CBA_missionTime variable every frame
if (isMultiplayer) then {
// multiplayer - no accTime in MP
if (isServer) then {
// multiplayer server
[QFUNC(missionTimePFH), {
if (time != GVAR(lastTime)) then {
CBA_missionTime = CBA_missionTime + (_tickTime - GVAR(lastTickTime));
GVAR(lastTime) = time; // used to detect paused game
};
GVAR(lastTickTime) = _tickTime;
}] call CBA_fnc_compileFinal;
addMissionEventHandler ["PlayerConnected", {
(_this select 4) publicVariableClient "CBA_missionTime";
}];
} else {
CBA_missionTime = -1;
// multiplayer client
0 spawn {
"CBA_missionTime" addPublicVariableEventHandler {
CBA_missionTime = _this select 1;
GVAR(lastTickTime) = diag_tickTime; // prevent time skip on clients
[QFUNC(missionTimePFH), {
if (time != GVAR(lastTime)) then {
CBA_missionTime = CBA_missionTime + (_tickTime - GVAR(lastTickTime));
GVAR(lastTime) = time; // used to detect paused game
};
GVAR(lastTickTime) = _tickTime;
}] call CBA_fnc_compileFinal;
};
};
};
} else {
// single player
[QFUNC(missionTimePFH), {
if (time != GVAR(lastTime)) then {
CBA_missionTime = CBA_missionTime + (_tickTime - GVAR(lastTickTime)) * accTime;
GVAR(lastTime) = time; // used to detect paused game
};
GVAR(lastTickTime) = _tickTime;
}] call CBA_fnc_compileFinal;
};
|
When merged this pull request will: