Browse Source

Merge pull request #173 from Hoikas/time

Time Fixes
Branan Purvine-Riley 13 years ago
parent
commit
9137df7763
  1. 8
      Sources/Plasma/Apps/plClient/winmain.cpp
  2. 10
      Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp
  3. 5
      Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.cpp
  4. 2
      Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h

8
Sources/Plasma/Apps/plClient/winmain.cpp

@ -367,6 +367,14 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
// Handle messages
switch (message) {
case WM_TIMECHANGE:
// To prevent cheating and keep things better synchronized,
// we will completely re-eval the offsets on the next NetMsg we
// get from the server
if (plNetClientMgr* nc = plNetClientMgr::GetInstance())
nc->ResetServerTimeOffset(true);
break;
case WM_KEYDOWN :
case WM_LBUTTONDOWN :
case WM_RBUTTONDOWN :

10
Sources/Plasma/FeatureLib/pfPython/cyMisc.cpp

@ -648,19 +648,19 @@ time_t cyMisc::ConvertGMTtoDni(time_t gtime)
plUnifiedTime utime = plUnifiedTime();
utime.SetSecs(dtime);
// check for daylight savings time in New Mexico and adjust
if ( utime.GetMonth() >= 4 && utime.GetMonth() < 11 )
if ( utime.GetMonth() >= 3 && utime.GetMonth() < 11 )
{
plUnifiedTime dstStart = plUnifiedTime();
dstStart.SetGMTime(utime.GetYear(),4,1,2,0,0);
// find first Sunday after 4/1 (first sunday of April)
dstStart.SetGMTime(utime.GetYear(),3,7,2,0,0);
// find first Sunday after 3/7 (second Sunday of March)
int days_to_go = 7 - dstStart.GetDayOfWeek();
if (days_to_go == 7)
days_to_go = 0;
time_t dstStartSecs = dstStart.GetSecs() + days_to_go * kOneDay;
plUnifiedTime dstEnd = plUnifiedTime();
dstEnd.SetGMTime(utime.GetYear(),10,25,1,0,0);
// find first sunday after 10/25 (last sunday of Oct.)
dstEnd.SetGMTime(utime.GetYear(),11,1,1,0,0);
// find first sunday after 11/1 (first Sunday of November)
days_to_go = 7 - dstEnd.GetDayOfWeek();
if (days_to_go == 7)
days_to_go = 0;

5
Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.cpp

@ -506,9 +506,10 @@ void plNetClientMgr::UpdateServerTimeOffset(plNetMessage* msg)
}
}
void plNetClientMgr::ResetServerTimeOffset()
void plNetClientMgr::ResetServerTimeOffset(bool delayed)
{
fServerTimeOffset = 0;
if (!delayed)
fServerTimeOffset = 0;
fTimeSamples = 0;
fLastTimeUpdate = 0;
}

2
Sources/Plasma/PubUtilLib/plNetClient/plNetClientMgr.h

@ -383,7 +383,7 @@ public:
void StoreSDLState(const plStateDataRecord* sdRec, const plUoid& uoid, uint32_t sendFlags, uint32_t writeOptions);
void UpdateServerTimeOffset(plNetMessage* msg);
void ResetServerTimeOffset();
void ResetServerTimeOffset(bool delayed=false);
private:
plNetClientComm fNetClientComm;

Loading…
Cancel
Save