Commit 161b5021 authored by mercury233's avatar mercury233

add time_compensator

parent 4541d3f0
...@@ -628,6 +628,9 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -628,6 +628,9 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
start_duel(pduel, opt); start_duel(pduel, opt);
if(host_info.time_limit) { if(host_info.time_limit) {
time_elapsed = 0; time_elapsed = 0;
#ifdef YGOPRO_SERVER_MODE
time_compensator = 60;
#endif
timeval timeout = { 1, 0 }; timeval timeout = { 1, 0 };
event_add(etimer, &timeout); event_add(etimer, &timeout);
} }
...@@ -1876,8 +1879,15 @@ void SingleDuel::TimeConfirm(DuelPlayer* dp) { ...@@ -1876,8 +1879,15 @@ void SingleDuel::TimeConfirm(DuelPlayer* dp) {
if(dp->type != last_response) if(dp->type != last_response)
return; return;
players[last_response]->state = CTOS_RESPONSE; players[last_response]->state = CTOS_RESPONSE;
#ifdef YGOPRO_SERVER_MODE
if(time_elapsed < 10 && time_elapsed <= time_compensator){
time_compensator -= time_elapsed;
time_elapsed = 0;
}
#else
if(time_elapsed < 10) if(time_elapsed < 10)
time_elapsed = 0; time_elapsed = 0;
#endif //YGOPRO_SERVER_MODE
} }
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
void SingleDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* dp) void SingleDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* dp)
......
...@@ -76,6 +76,9 @@ protected: ...@@ -76,6 +76,9 @@ protected:
unsigned char match_result[3]; unsigned char match_result[3];
unsigned short time_limit[2]; unsigned short time_limit[2];
unsigned short time_elapsed; unsigned short time_elapsed;
#ifdef YGOPRO_SERVER_MODE
unsigned short time_compensator;
#endif
}; };
} }
......
...@@ -633,6 +633,9 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -633,6 +633,9 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
start_duel(pduel, opt); start_duel(pduel, opt);
if(host_info.time_limit) { if(host_info.time_limit) {
time_elapsed = 0; time_elapsed = 0;
#ifdef YGOPRO_SERVER_MODE
time_compensator = 60;
#endif
timeval timeout = { 1, 0 }; timeval timeout = { 1, 0 };
event_add(etimer, &timeout); event_add(etimer, &timeout);
} }
...@@ -1955,8 +1958,15 @@ void TagDuel::TimeConfirm(DuelPlayer* dp) { ...@@ -1955,8 +1958,15 @@ void TagDuel::TimeConfirm(DuelPlayer* dp) {
if(dp != cur_player[last_response]) if(dp != cur_player[last_response])
return; return;
cur_player[last_response]->state = CTOS_RESPONSE; cur_player[last_response]->state = CTOS_RESPONSE;
#ifdef YGOPRO_SERVER_MODE
if(time_elapsed < 10 && time_elapsed <= time_compensator){
time_compensator -= time_elapsed;
time_elapsed = 0;
}
#else
if(time_elapsed < 10) if(time_elapsed < 10)
time_elapsed = 0; time_elapsed = 0;
#endif //YGOPRO_SERVER_MODE
} }
#ifdef YGOPRO_SERVER_MODE #ifdef YGOPRO_SERVER_MODE
void TagDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* dp) void TagDuel::RefreshMzone(int player, int flag, int use_cache, DuelPlayer* dp)
......
...@@ -73,6 +73,9 @@ protected: ...@@ -73,6 +73,9 @@ protected:
unsigned char turn_count; unsigned char turn_count;
unsigned short time_limit[2]; unsigned short time_limit[2];
unsigned short time_elapsed; unsigned short time_elapsed;
#ifdef YGOPRO_SERVER_MODE
unsigned short time_compensator;
#endif
}; };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment