BUGFIX: gametype was displayed in pre-phase of the game
[e-DoKo.git] / include / game.php
index 6b6d6ba82a26e1a6835dc45b2271160ac0ffd593..93144a6e4c9f75e0d8fb87d83f674b7fc98bc2b3 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/* Copyright 2006, 2007, 2008, 2009, 2010 Arun Persaud <arun@nubati.net>
+/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Arun Persaud <arun@nubati.net>
  *
  *   This file is part of e-DoKo.
  *
@@ -57,6 +57,9 @@ $playid   = DB_get_current_playid($gameid); /* might be -1 at beginning of the g
 
 /* get prefs and save them in a variable*/
 $PREF = DB_get_PREF(isset($_SESSION['id'])?$_SESSION['id']:$myid);
+/* set language chosen in preferences, will become active on the next reload (see index.php)*/
+$_SESSION['language'] = $PREF['language'];
+
 
 /* get rule set for this game */
 $RULES = DB_get_RULES($gameid);
@@ -323,7 +326,7 @@ if($session)
 
     /* check for solo, add game type to session number */
     echo "    Game $session.$j";
-    if($GT !='normal')
+    if($gamestatus != 'pre' && $GT !='normal' )
       echo " ($GT)";
     if(isset($_SESSION['id']) && $_SESSION['id']==$myid)
       {
@@ -520,8 +523,9 @@ switch($mystatus)
 
 /* Depending on the situation we set
  *   cards_status (see functions.php for possible options)
+ *   most of the times we need to just show the cards, so we make this the default
  */
-$cards_status = CARDS_EMPTY;
+$card_status = CARDS_SHOW;
 
 /* Also collect message that should be displayed to the user, so that we can show
  * them after showing the table. This makes the html flow more consistent and easier
@@ -537,7 +541,7 @@ switch($mystatus)
      * ask if player wants to join the game *
      ****************************************/
 
-    /* don't ask if user has autosetup set to yest */
+    /* don't ask if user has autosetup set to yes */
     $skip = 0;
     if($PREF['autosetup']=='yes') $skip = 1;
 
@@ -545,7 +549,10 @@ switch($mystatus)
       {
        /* asks the player, if he wants to join the game */
        output_check_want_to_play($me);
+
+       /* don't show the cards before the user joined the game */
        $card_status = CARDS_EMPTY;
+
        break;
       }
     else
@@ -563,6 +570,8 @@ switch($mystatus)
                mymail($user,$gameid,GAME_CANCELED,$email_message);
              }
 
+           $card_status = CARDS_EMPTY;
+
            /* update game status */
            cancel_game('noplay',$gameid);
            break;
@@ -588,7 +597,7 @@ switch($mystatus)
                    DB_set_player_by_gameid($gameid,$user);
                    break;
                  }
-             };
+             }
          }
       }
   case 'init':
@@ -600,8 +609,6 @@ switch($mystatus)
        $mycards = DB_get_hand($me);
        output_check_for_sickness($me,$mycards);
 
-       $card_status = CARDS_SHOW;
-
        break;
       }
     else
@@ -619,8 +626,6 @@ switch($mystatus)
            $messages[] = "You selected more than one sickness, please go back ".
              "and answer the <a href=\"$INDEX?action=game&amp;me=$me&amp;in=yes\">question</a> again.";
 
-           $card_status = CARDS_SHOW;
-
            break;
          }
        else
@@ -715,15 +720,6 @@ switch($mystatus)
          'Seems like this is not the case, so you need to wait a bit... '.
          'you will get an email once that is the case, please use the link in '.
          'that email to continue the game.');
-
-       /* display cards, if player was just at the init-phase he will still see the cards from there
-        * we can put this one here, since the last player to finish the init state won't get here and
-        * will still see his card anyway from the init-phase
-        */
-       if($mystatus=='check')
-         {
-           $card_status = CARDS_SHOW;
-         }
       }
     else
       {
@@ -962,7 +958,6 @@ switch($mystatus)
                  }
              }
          }
-       $card_status = CARDS_SHOW;
       }
     break;
 
@@ -1007,9 +1002,6 @@ switch($mystatus)
     /* get hand */
     $mycards = DB_get_hand($me);
 
-    /* default: show cards, will be overwritten, if we need to give back cards */
-    $card_status = CARDS_SHOW;
-
     /* check if user need to give more cards back */
     if( ($myparty=='re' || $myparty=='contra') && count($mycards)>12)
       {
@@ -1329,8 +1321,6 @@ switch($mystatus)
        $messages[] = _('You finished the setup, but not everyone else finished it... '.
          'You need to wait for the others. Just wait for an email.');
 
-       $card_status = CARDS_SHOW;
-
        break; /* not sure this works... the idea is that you can
                * only  play a card after everyone is ready to play */
       }
@@ -1681,6 +1671,7 @@ switch($mystatus)
 
                /* who is the next player? */
                $next = $winner;
+               $firstcard = ''; /* unset firstcard, so followsuit doesn't trigger with the last trick */
              }
            else
              {
@@ -2070,7 +2061,8 @@ switch($mystatus)
 
     echo "</div>\n"; /* end ul tricks*/
 
-    if($myturn && !myisset('card') && $mystatus=='play' )
+    if(   ($myturn && !myisset('card') && $mystatus=='play') /* it's my turn*/
+         || ($myturn && myisset('card') && $next==$mypos && $mystatus=='play')  /* a card has been played and player won the trick*/)
       {
        $card_status = CARDS_MYTURN;
       }
@@ -2094,7 +2086,7 @@ switch($mystatus)
     /* check if game is over, display results */
     if(DB_get_game_status_by_gameid($gameid)=='play')
       {
-       echo _('The game is over for you... other people still need to play though');
+       $messages[] = _('The game is over for you... other people still need to play though');
       }
     break;
   default: