diff options
author | Arun Persaud <arun@nubati.net> | 2009-03-16 22:06:21 -0700 |
---|---|---|
committer | Arun Persaud <arun@nubati.net> | 2009-03-29 10:47:55 -0700 |
commit | 6206ef89ad9a9a1a541ecb67971815d11f12199b (patch) | |
tree | 86af68a4ce38a5c88d3c491a707b6df8c9ded337 /include/game.php | |
parent | 3fd01c7b9fa78fb08ca1ad61c1de850b9a6b9870 (diff) | |
download | e-DoKo-6206ef89ad9a9a1a541ecb67971815d11f12199b.tar.gz e-DoKo-6206ef89ad9a9a1a541ecb67971815d11f12199b.tar.bz2 e-DoKo-6206ef89ad9a9a1a541ecb67971815d11f12199b.zip |
BUGFIX: store canceled games, don't delete them
deleting the games could result in the same people getting the same hand redealt over and over again.
By just keeping track of the hands in the game table, this problem should be gone.
Fixed issue #50.
Diffstat (limited to 'include/game.php')
-rw-r--r-- | include/game.php | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/include/game.php b/include/game.php index 6d47fc9..1dc4802 100644 --- a/include/game.php +++ b/include/game.php @@ -217,7 +217,7 @@ if($session) echo " <div class=\"sessionscore\">"; if($finalscore) - { + { echo "Score: \n"; /* output the final score on the front page */ foreach($finalscore as $user=>$value) @@ -226,9 +226,9 @@ if($session) echo " ".substr($name,0,2).": $value "; } } - else + else { - /* first game, no score yet */ + /* first game, no score yet */ echo " "; } @@ -311,8 +311,8 @@ switch($mystatus) mymail($user,$subject,$message); } - /* delete everything from the dB */ - DB_cancel_game($me); + /* update game status */ + cancel_game('noplay',$gameid); break; } else @@ -589,7 +589,6 @@ switch($mystatus) else if($nines) { /* cancel game */ - /* TODO: should we keep statistics of this? */ $message = "Hello, \n\n". " the game has been canceled because ".DB_get_name('userid',$nines). " has five or more nines and nobody is playing solo.\n\n". @@ -603,8 +602,8 @@ switch($mystatus) mymail($user,$subject,$message); } - /* delete everything from the dB */ - DB_cancel_game($me); + /* update game status */ + cancel_game('nines',$gameid); echo "The game has been canceled because ".DB_get_name('userid',$nines). " has five or more nines and nobody is playing solo.\n"; @@ -950,8 +949,8 @@ switch($mystatus) mymail($user,$subject,$message); } - /* delete everything from the dB */ - DB_cancel_game($me); + /* update game status */ + cancel_game('trump',$gameid); echo "<p style=\"background-color:red\";>Game ".DB_format_gameid($gameid)." has been canceled.<br /><br /></p>"; return; @@ -1075,6 +1074,27 @@ switch($mystatus) * in case of 'play' there is a break later that skips the last part */ + /* first check if the game has been canceled and display */ + switch($gamestatus) + { + case 'cancel-noplay': + echo "<div class=\"message\"><p>The game has been canceled due to the request of one player.</p><p>If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.</p></div>"; + break; + case 'cancel-timedout': + echo "<div class=\"message\"><p>The game has been canceled because one player wasn't responding.</p><p>If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.</p></div>"; + break; + case 'cancel-nines': + case 'cancel-timedout': + echo "<div class=\"message\"><p>The game has been canceled because one player had too many nines.</p></div>"; + break; + case 'cancel-trump': + echo "<div class=\"message\"><p>The game has been canceled because nobody wanted to take the trump.</p></div>"; + break; + } + /* for these two types, we shouldn't show the cards, since we might want to restart the game */ + if (in_array($gamestatus,array('cancel-noplay','cancel-timedout'))) + break; + /* check if all players are ready to play, * if so, send out email to the startplayer * only need to do this if the game hasn't started yet @@ -2011,7 +2031,10 @@ echo "</div>\n"; echo "</form>\n"; -if($mystatus=='gameover' && DB_get_game_status_by_gameid($gameid)=='gameover' && isset($_SESSION['id']) && $_SESSION['id']==$myid) +$gamestatus = DB_get_game_status_by_gameid($gameid); +if($mystatus=='gameover' && + ($gamestatus =='gameover' || $gamestatus =='cancel-nines' || $gamestatus =='cancel-trump') && + isset($_SESSION['id']) && $_SESSION['id']==$myid) { $session = DB_get_session_by_gameid($gameid); $result = DB_query("SELECT id,create_date FROM Game". @@ -2037,6 +2060,8 @@ if($mystatus=='gameover' && DB_get_game_status_by_gameid($gameid)=='gameover' && else /* rotate normally */ output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid); } + else if($gamestatus == 'cancel-nines' || $gamestatus == 'cancel-trump') + output_ask_for_new_game($names[0],$names[1],$names[2],$names[3],$gameid); else /* rotate normally */ output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid); } |