From: Arun Persaud Date: Wed, 3 Feb 2010 04:19:43 +0000 (-0800) Subject: highlight the call if this is the last round where you can make this call X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=commitdiff_plain;h=e2d7a3291f85403b4faf6f8be7e30caeefb0c1a3 highlight the call if this is the last round where you can make this call also added some more comments --- diff --git a/css/standard022.css b/css/standard023.css similarity index 99% rename from css/standard022.css rename to css/standard023.css index 79dfeea..7c84507 100644 --- a/css/standard022.css +++ b/css/standard023.css @@ -649,4 +649,8 @@ div.table div img.gravatar, img.gravatar { width: 4em; height: 4em; border: 3px solid #aaa; -} \ No newline at end of file +} + +.highcall { + background-color: #fc3; +} diff --git a/include/functions.php b/include/functions.php index 63216eb..eca0155 100644 --- a/include/functions.php +++ b/include/functions.php @@ -708,19 +708,36 @@ function sort_comp_low_high($a,$b) function can_call($what,$hash) { + /* figure out if a person can make a call: + $what in 0,30,60,90,120 = points of the call + $hash = the hash of the person who wants to make the call + + return values: + 0 can't make that call + 1 can make the call + 2 can make the call, but this is the last chance to do so... + */ + global $RULES; + /* get some information + */ $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); + $oldcall = DB_get_call_by_hash($hash); /* did the person already made a call? */ + $pcall = DB_get_partner_call_by_hash($hash); /* did the partner already made a call */ + - if( ($pcall!=NULL && $what >= $pcall) || - ($oldcall!=NULL && $what >=$oldcall) ) + /* you're call must be better than the one you or your partner already made + */ + if( ($pcall!=NULL && ($what >= $pcall)) + || ($oldcall!=NULL && ($what >=$oldcall)) ) { return 0; } + /* for some rules we need to know how many cards people have + */ $NRcards = count(DB_get_hand($hash)); $NRallcards = 0; @@ -730,7 +747,8 @@ function can_call($what,$hash) $NRallcards += count(DB_get_hand($user)); }; - /* in case of a wedding, everything will be delayed by an offset */ + /* in case of a wedding, everything will be delayed by an offset + */ $offset = 0; if($gametype=="wedding") { @@ -739,18 +757,34 @@ function can_call($what,$hash) return 0; }; + /* now check if the call is allowed depending on the rule set + */ switch ($RULES["call"]) { case "1st-own-card": - if( 4-($what/30) >= 12 - ($NRcards + $offset)) + /* calls can be made before/while you play your card... + * first card = 120, second card = 90, etc. + */ + if( 4-($what/30) == 12 - ($NRcards + $offset)) + return 2; + if( 4-($what/30) > 12 - ($NRcards + $offset)) return 1; break; case "5th-card": - if( 27+4*($what/30) <= $NRallcards + $offset*4) + /* you can make the first call anytime during the first trick + */ + if( 27+4*($what/30) == $NRallcards + $offset*4) + return 2; + if( 27+4*($what/30) < $NRallcards + $offset*4) return 1; break; case "9-cards": + /* you can call 120 with 12 cards, 90 with 9 or more cards, 60 with 6 or more, etc. + * you can't skip a call though + */ + /* figure out last call + */ if($oldcall!=NULL && $pcall!=NULL) $mincall = ($oldcall>$pcall) ? $pcall : $oldcall; else if($oldcall!=NULL) @@ -760,26 +794,51 @@ function can_call($what,$hash) else $mincall = -1; - if( 12 <= ($NRcards + $offset)) + + if( 12 == ($NRcards + $offset)) + { + return 2; + } + else if( 12 < ($NRcards + $offset)) { return 1; } - else if ( 9 <= ($NRcards + $offset)) + else if ( 9 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall==120) ) + return 2; + } + else if ( 9 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall==120) ) return 1; } - else if ( 6 <= ($NRcards + $offset)) + else if ( 6 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall<=90 && $what<=60 ) ) + return 2; + } + else if ( 6 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall<=90 && $what<=60 ) ) return 1; } - else if ( 3 <= ($NRcards + $offset)) + else if ( 3 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall<=60 && $what<=30 ) ) + return 2; + } + else if ( 3 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall<=60 && $what<=30 ) ) return 1; } - else if ( 0 <= ($NRcards + $offset)) + else if ( 0 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall<=30 && $what==0 ) ) + return 2; + } + else if ( 0 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall<=30 && $what==0 ) ) return 1; @@ -822,7 +881,7 @@ function display_table () $call = $r[5]; $hash = $r[7]; $timezone = $r[8]; - $email = $r[9]; + $email = $r[9]; $wins = DB_get_number_of_tricks($gameid,$pos); date_default_timezone_set($defaulttimezone); $lastlogin = strtotime($r[6]); diff --git a/include/game.php b/include/game.php index 30abe7d..de19cab 100644 --- a/include/game.php +++ b/include/game.php @@ -1420,7 +1420,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 +1456,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 +1484,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 +1502,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 diff --git a/include/output.php b/include/output.php index 9e87de3..57b3152 100644 --- a/include/output.php +++ b/include/output.php @@ -247,30 +247,61 @@ function output_check_for_sickness($me,$mycards) function output_form_calls($me,$myparty) { - if( can_call(120,$me) ) + $highstart = ""; + $highend = ""; + + $tmp = can_call(120,$me); + if( $tmp ) + { + if($tmp==2) echo $highstart; + if($myparty=='re') + echo "re (120):"; + else if ($myparty=='contra') + echo "contra (120):"; + else + echo " re/contra (120):"; + echo " "; + if($tmp==2) echo $highend; + echo "
\n"; + } + $tmp = can_call(90,$me); + if( $tmp ) + { + if($tmp==2) echo $highstart; + echo " 90:". + " "; + if($tmp==2) echo $highend; + echo "
\n"; + } + $tmp = can_call(60,$me); + if( $tmp ) + { + if($tmp==2) echo $highstart; + echo " 60:". + " "; + if($tmp==2) echo $highend; + echo "
\n"; + } + $tmp = can_call(30,$me); + if( $tmp ) + { + if($tmp==2) echo $highstart; + echo " 30:". + " "; + if($tmp==2) echo $highend; + echo "
\n"; + } + $tmp = can_call(0,$me); + if( $tmp ) { - if($myparty=='re') - echo "re (120):"; - else if ($myparty=='contra') - echo "contra (120):"; - else - echo " re/contra (120):"; - echo "
"; + if($tmp==2) echo $highstart; + echo " 0:". + " "; + if($tmp==2) echo $highend; + echo "
\n". + " no call:". + "
"; } - if( can_call(90,$me) ) - echo " 90:". - "
"; - if( can_call(60,$me) ) - echo " 60:". - "
"; - if( can_call(30,$me) ) - echo " 30:". - "
"; - if( can_call(0,$me) ) - echo " 0:". - "
". - " no call:". - "
"; } function output_check_want_to_play($me) @@ -301,7 +332,7 @@ function output_header() e-Doko - + diff --git a/index.php b/index.php index 9702800..d92f478 100644 --- a/index.php +++ b/index.php @@ -2,7 +2,7 @@ error_reporting(E_ALL); /* start a session, if it is not already running. - * This way people don't have to log in all the times. + * This way people don't have to log in all the times. * The session variables can also be read out from different * php scripts, so that the code can be easily split up across several files */ @@ -50,11 +50,11 @@ switch($action) require './include/reminder.php'; break; case 'logout': - require './include/logout.php'; + require './include/logout.php'; require './include/welcome.php'; break; case 'login': - require './include/login.php'; + require './include/login.php'; require './include/user.php'; break; case 'register':