X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Ffunctions.php;h=466b4ae34f631d7c6a08414ebbbdd079aa0943b9;hp=82b4bb6bbcde05c2fe2b74779d304b22d35062e5;hb=b568d14fe83e919b41452d8ae5b57a7dedc671cf;hpb=47fc7e1eec3fc99633a9085c9292ddf1ad065efd
diff --git a/include/functions.php b/include/functions.php
index 82b4bb6..466b4ae 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -177,14 +177,27 @@ function compare_cards($a,$b,$game)
return 1;
if($b == 19 || $b == 20 )
return 0;
- };
- if($RULES['schweinchen']=='second' && $GAME['schweinchen-second'])
+ }
+ else if($RULES['schweinchen']=='second' && $GAME['schweinchen-second'])
{
if($a == 19 || $a == 20 )
return 1;
if($b == 19 || $b == 20 )
return 0;
- };
+ }
+ else if($RULES['schweinchen']=='secondaftercall' && $GAME['schweinchen-who'] && $GAME['schweinchen-second'] )
+ {
+ /* check if a call was made either by the player or his partner. If so activate Schweinchen rule. */
+ if(DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) )
+ {
+ if($a == 19 || $a == 20 )
+ return 1;
+ if($b == 19 || $b == 20 )
+ return 0;
+ }
+ /* if not, do nothing and the foxes are just handeled as normal trump */
+ }
+ ;
case "heart":
case "spade":
case "club":
@@ -595,21 +608,39 @@ function set_gametype($gametype)
function mysort($cards,$gametype)
{
- usort ( $cards, "sort_comp" );
+ global $PREF;
+ if(isset($PREF['sorting']))
+ if($PREF['sorting']=='high-low')
+ usort ( $cards, 'sort_comp_high_low' );
+ else
+ usort ( $cards, 'sort_comp_low_high' );
+ else
+ usort ( $cards, 'sort_comp_high_low' );
return $cards;
}
-function sort_comp($a,$b)
+function sort_comp_high_low($a,$b)
{
global $CARDS;
$ALL = array();
- $ALL = array_merge($CARDS["trump"],$CARDS["diamonds"],$CARDS["clubs"],
- $CARDS["hearts"],$CARDS["spades"]);
+ $ALL = array_merge($CARDS['trump'],$CARDS['diamonds'],$CARDS['clubs'],
+ $CARDS['hearts'],$CARDS['spades']);
return pos_array($a,$ALL)-pos_array($b,$ALL);
}
+function sort_comp_low_high($a,$b)
+{
+ global $CARDS;
+
+ $ALL = array();
+ $ALL = array_merge($CARDS['trump'],$CARDS['diamonds'],$CARDS['clubs'],
+ $CARDS['hearts'],$CARDS['spades']);
+
+ return -pos_array($a,$ALL)+pos_array($b,$ALL);
+}
+
function can_call($what,$hash)
{
global $RULES;
@@ -844,14 +875,14 @@ function display_table ()
}
-function display_user_menu()
+function display_user_menu($id)
{
- global $WIKI,$myid,$INDEX;
+ global $WIKI,$INDEX;
$result = DB_query("SELECT Hand.hash,Hand.game_id,Game.player from Hand".
" LEFT JOIN Game On Hand.game_id=Game.id".
- " WHERE Hand.user_id='$myid'".
- " AND ( Game.player='$myid' OR ISNULL(Game.player) )".
+ " WHERE Hand.user_id='$id'".
+ " AND ( Game.player='$id' OR ISNULL(Game.player) )".
" AND Game.status<>'gameover'".
" ORDER BY Game.session" );
@@ -865,7 +896,8 @@ function display_user_menu()
}
$i++;
- echo "game ".DB_format_gameid($r[1])."
\n";
+ echo "game ".DB_format_gameid($r[1])."
\n";
if($i>4)
{
echo "...
\n";
@@ -996,7 +1028,9 @@ function format_score_table_ascii($score)
if(sizeof($score)==0)
return "";
- // if(sizeof($score)>5) $header.= " ... \n";
+ /* truncate table if we have too many games */
+ $max = sizeof($score);
+ if($max>6) $output.=" (table truncated to last 6 games)\n";
/* output header */
foreach($score[0]['players'] as $id=>$points)
@@ -1004,18 +1038,16 @@ function format_score_table_ascii($score)
$name = DB_get_name('userid',$id); /*TODO*/
$output.= " ".substr($name,0,2)." |";
}
- $output.=" P |\n ";
+ $output.=" P |\n";
$output.= "------+------+------+------+------+\n";
- $max = sizeof($score);
+ /* output score for each game */
$i=0;
-
- if($i<$max-6) $output.=" ...\n";
-
foreach($score as $game)
{
$i++;
if($i-1<$max-6) continue;
+
foreach($game['players'] as $id=>$points)
$output.=str_pad($points,6," ",STR_PAD_LEFT)."|";
$output.=str_pad($game['points'],4," ",STR_PAD_LEFT);
@@ -1038,24 +1070,29 @@ function format_score_table_html($score,$userid)
if(sizeof($score)==0)
return "";
- $output = "
No | "; + $output.= "No | "; foreach($score[0]['players'] as $id=>$points) { $name = DB_get_name('userid',$id); /*TODO*/ $output.= "".substr($name,0,2)." | "; } - $output.="P | \nP | \n \n \n \n"; $i=0; foreach($score as $game) { $i++; - $output.="
---|---|---|---|---|
$i | "; + /* create link to old games only if you are logged in and its your game*/ + if(isset($_SESSION['id']) && $_SESSION['id']==$userid) + $output.="$i | "; + else + $output.="$i | "; + foreach($game['players'] as $id=>$points) $output.="".$points." | "; $output.="".$game['points']; @@ -1066,12 +1103,12 @@ function format_score_table_html($score,$userid) $output.=" |