Merge branch 'master' of /home/arun/nubati.net/git/e-DoKo
[e-DoKo.git] / include / game.php
index 30abe7d53687d8600f0c0ef51a6cc57c988e5f66..a1c02a0b4f90f4929f6c856254bf3b13ca6a7b30 100644 (file)
@@ -1,4 +1,23 @@
 <?php
+/* Copyright 2006, 2007, 2008, 2009, 2010 Arun Persaud <arun@nubati.net>
+ *
+ *   This file is part of e-DoKo.
+ *
+ *   e-DoKo is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   e-DoKo is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with e-DoKo.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
 /* make sure that we are not called from outside the scripts,
  * use a variable defined in config.php to check this
  */
@@ -24,10 +43,6 @@ if(!$myid)
 
 global $GAME,$RULES,$CARDS;
 
-/* the user has done something, update the timestamp */
-if(isset($_SESSION['id']))
-  DB_update_user_timestamp($_SESSION['id']);
-
 /* get some information from the DB */
 $gameid   = DB_get_gameid_by_hash($me);
 $myname   = DB_get_name('hash',$me);
@@ -288,6 +303,16 @@ display_table();
  * play:     game in progress
  * gameover: are we revisiting a game
  */
+
+/* the user has done something, update the timestamp. Use $myid in
+ * active games and check for session-id in old games (myid might be wrong in that case)
+ */
+if($mystatus!='gameover')
+  DB_update_user_timestamp($myid);
+ else
+   if(isset($_SESSION['id']))
+     DB_update_user_timestamp($_SESSION['id']);
+
 switch($mystatus)
   {
   case 'start':
@@ -1420,7 +1445,10 @@ switch($mystatus)
                $play   = DB_get_cards_by_trick($trickid);
                $winner = get_winner($play,$gametype); /* returns the position */
 
-               /* check if someone caught a fox */
+               /*
+                * check if someone caught a fox
+                *******************************/
+
                /* first check if we should account for solos at all,
                 * since it doesn't make sense in some games
                 */
@@ -1453,7 +1481,10 @@ switch($mystatus)
                          }
                    }
 
-               /* check for karlchen (jack of clubs in the last trick)*/
+               /*
+                * check for karlchen (jack of clubs in the last trick)
+                ******************************************************/
+
                /* same as for foxes, karlchen doesn't always make sense
                 * check what kind of game it is and set karlchen accordingly */
                $ok = 1; /* default: karlchen should be accounted for */
@@ -1478,7 +1509,10 @@ switch($mystatus)
                          DB_query("INSERT INTO Score".
                                   " VALUES( NULL,NULL,$gameid,'$party1',$uid1,NULL,'karlchen')");
                        }
-               /* check for doppelopf (>40 points)*/
+               /*
+                * check for doppelopf (>40 points)
+                ***********************************/
+
                $points = 0;
                foreach($play as $played)
                  {
@@ -1493,6 +1527,10 @@ switch($mystatus)
                             " VALUES( NULL,NULL,$gameid,'$party1',$uid1,NULL,'doko')");
                  }
 
+               /*
+                * set winner (for this trick)
+                */
+
                if($winner>0)
                  DB_query("UPDATE Trick SET winner='$winner' WHERE id='$trickid'");
                else
@@ -1943,7 +1981,15 @@ switch($mystatus)
       {
        $oldcards = DB_get_all_hand($me);
        $oldcards = mysort($oldcards,$gametype);
-       echo "Your cards were: <br />\n";
+
+       if(isset($_SESSION['id']) && $myid==$_SESSION['id'])
+         echo "Your cards were: <br />\n";
+       else
+         {
+           $name = DB_get_name('userid',$myid);
+           echo "$name's were: <br />\n";
+         }
+
        foreach($oldcards as $card)
          display_card($card,$PREF['cardset']);