NEW FEATURE+BUGFIX: changed calling re/contra
authorArun Persaud <arun@nubati.net>
Fri, 29 Jun 2007 17:18:51 +0000 (19:18 +0200)
committerArun Persaud <arun@nubati.net>
Thu, 19 Jul 2007 05:53:13 +0000 (22:53 -0700)
you can call re/contra, etc. now even if it is not your turn.
Also fixed rule where you can say 90 with 9 cards, etc. so that
you need to say 120 to say 90, 90 to say 60, etc.

db.php
functions.php
index.php
output.php

diff --git a/db.php b/db.php
index 21a77f85e846198a16438cea097c47f3f342d5fb..03de7f449569b9d8411d442c41cb5f994ed3f3c4 100644 (file)
--- a/db.php
+++ b/db.php
@@ -842,4 +842,45 @@ function DB_get_current_playid($gameid)
   return "";
 }
 
+function DB_get_call_by_hash($hash)
+{
+  $queryresult = mysql_query("SELECT point_call FROM Hand WHERE hash='$hash'");
+  
+  $r = mysql_fetch_array($queryresult,MYSQL_NUM);
+  if($r)
+    return $r[0];
+  
+  return NULL;
+}
+
+function DB_get_partner_call_by_hash($hash)
+{
+  $partner = DB_get_partner_hash_by_hash($hash);
+  
+  if($partner)
+    {
+      $queryresult = mysql_query("SELECT point_call FROM Hand WHERE hash='$partner'");
+      
+      $r = mysql_fetch_array($queryresult,MYSQL_NUM);
+      if($r)
+       return $r[0];
+    }
+  
+  return NULL;
+}
+
+function DB_get_partner_hash_by_hash($hash)
+{
+  $gameid = DB_get_gameid_by_hash($hash);
+  $party  = DB_get_party_by_hash($hash);
+  
+  $queryresult = mysql_query("SELECT hash FROM Hand WHERE game_id='$gameid' AND party='$party' AND hash<>'$hash'");
+  
+  $r = mysql_fetch_array($queryresult,MYSQL_NUM);
+  if($r)
+    return $r[0];
+
+  return NULL;
+}
+
 ?>
\ No newline at end of file
index 66cc57f548fced0ada347dba319c02d9f280b4fb..af34345f6303a053c4f5705776a60097860d3c6a 100644 (file)
@@ -526,10 +526,16 @@ function can_call($what,$hash)
 {
   global $RULES;
 
-  /*TODO: check if this already has been call by teammate */
-  
   $gameid   = DB_get_gameid_by_hash($hash);
   $gametype = DB_get_gametype_by_gameid($gameid);
+  $oldcall  = DB_get_call_by_hash($hash);
+  $pcall    = DB_get_partner_call_by_hash($hash);
+
+  if( ($pcall!=NULL && $what >= $pcall) || 
+      ($oldcall!=NULL && $what >=$oldcall) )
+    {
+      return 0;
+    }
 
   $NRcards  = count(DB_get_hand($hash));
   
@@ -560,8 +566,40 @@ function can_call($what,$hash)
        return 1;
       break;
     case "9-cards":
-      if( ($what/10) <= $NRcards + $offset)
-       return 1;
+      
+      if($oldcall!=NULL && $pcall!=NULL)
+       $mincall = ($oldcall>$pcall) ? $pcall : $oldcall;
+      else if($oldcall!=NULL)
+       $mincall = $oldcall;
+      else if ($pcall!=NULL)
+       $mincall = $pcall;
+      else
+       $mincall = -1;
+
+      if( 12 <= ($NRcards + $offset))
+       {
+         return 1;
+       }
+      else if ( 9 <= ($NRcards + $offset))
+       {
+         if( ($mincall>=0 && $mincall==120) )
+           return 1;
+       }
+      else if ( 6 <= ($NRcards + $offset))
+       {
+         if( ($mincall>=0 && $mincall<=90 && $what<=60 ) )
+           return 1;
+       }
+      else if ( 3 <= ($NRcards + $offset))
+       {
+         if( ($mincall>=0 && $mincall<=60 && $what<=30 ) )
+           return 1;
+       }
+      else if ( 0 <= ($NRcards + $offset))
+       {
+         if( ($mincall>=0 && $mincall<=30 && $what==0 ) )
+           return 1;
+       };
       break;
     }
 
index 1d6dffff64d99a928f23f33ecb975eea503e26fe..08ae14cdd9cc4ca5a285dabff11dc7178be014cf 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1564,24 +1564,8 @@ else if(myisset("me"))
                display_link_card($card,$PREF["cardset"]);
            }
          
-         if( can_call(120,$me) )
-             echo " re/contra (120):".
-               " <input type=\"radio\" name=\"call120\" value=\"yes\" /> ";
-         if( can_call(90,$me) )
-             echo " 90:".
-               " <input type=\"radio\" name=\"call90\" value=\"yes\" /> ";
-         if( can_call(60,$me) )
-             echo " 60:".
-               " <input type=\"radio\" name=\"call60\" value=\"yes\" /> ";
-         if( can_call(30,$me) )
-             echo " 30:".
-               " <input type=\"radio\" name=\"call30\" value=\"yes\" /> ";
-         if( can_call(0,$me) )
-             echo " 0:".
-               " <input type=\"radio\" name=\"call0\" value=\"yes\" /> ".
-               " no call:".
-               " <input type=\"radio\" name=\"call0\" value=\"no\" /> ";
-
+         output_form_calls($me);
+         
          echo "<br />\nA short comment:<input name=\"comment\" type=\"text\" size=\"30\" maxlength=\"100\" />\n";
          echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />\n";
          echo "<input type=\"submit\" value=\"submit\" />\n";
@@ -1594,6 +1578,7 @@ else if(myisset("me"))
            display_card($card,$PREF["cardset"]);
 
          echo "<form  action=\"index.php?me=$me\" method=\"post\">\n";
+         output_form_calls($me);
          echo "<br />\nA short comment:<input name=\"comment\" type=\"text\" size=\"30\" maxlength=\"100\" />\n";
          echo "<input type=\"hidden\" name=\"me\" value=\"$me\" />\n";
          echo "<input type=\"submit\" value=\"submit\" />\n";
index 9919a97a56f754f3a73f91dfb3feda2538b4a6f1..89aedff9d802509517a1ba412e3a40b42716d779 100644 (file)
@@ -240,6 +240,28 @@ function output_check_for_sickness($me,$mycards)
   return;
 }
 
+function output_form_calls($me)
+{
+  if( can_call(120,$me) )
+    echo " re/contra (120):".
+      " <input type=\"radio\" name=\"call120\" value=\"yes\" /> <br />";
+  if( can_call(90,$me) )
+    echo " 90:".
+      " <input type=\"radio\" name=\"call90\" value=\"yes\" /> <br />";
+  if( can_call(60,$me) )
+    echo " 60:".
+      " <input type=\"radio\" name=\"call60\" value=\"yes\" /> ";
+  if( can_call(30,$me) )
+    echo " 30:".
+      " <input type=\"radio\" name=\"call30\" value=\"yes\" /> ";
+  if( can_call(0,$me) )
+    echo " 0:".
+      " <input type=\"radio\" name=\"call0\" value=\"yes\" /> ".
+      " no call:".
+      " <input type=\"radio\" name=\"call0\" value=\"no\" /> ";
+}
+
+
 function output_check_want_to_play($me)
 {
    ?>