X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Fgame.php;h=3bbfccd6d7096e5e2829859f65b019e362110ce3;hp=d7e7b9545050f0d20ccb82eb1a0c0ebdbf8de9d5;hb=1132ca2ccda76df5ed2b1bea6b64015d4dc86880;hpb=46319a55bbfaddcf07fed1c19120563807d9670d diff --git a/include/game.php b/include/game.php index d7e7b95..3bbfccd 100644 --- a/include/game.php +++ b/include/game.php @@ -26,6 +26,8 @@ if(!$myid) exit(); } +global $GAME,$RULES,$CARDS; + /* user might get here by clicking on the link in an email, so session might not be set */ if(isset($_SESSION["name"])) output_status($_SESSION["name"]); @@ -57,18 +59,50 @@ if($gametype=="solo") $GT = $gametype." ".$GT; } -/* does anyone have both foxes */ -$GAME["schweinchen"]=0; -for($i=1;$i<5;$i++) +/* do we need to worry about Schweinchen? + * check gametype and rules + * if yes, figure out if someone actually has Schweinchen + * save information in $GAME + */ +$ok=0; +if( $gamestatus == 'pre' ) { - $hash = DB_get_hash_from_game_and_pos($gameid,$i); - $cards = DB_get_all_hand($hash); - if( in_array("19",$cards) && in_array("20",$cards) ) - { - $GAME["schweinchen"]=1; - $GAME["schweinchen-who"]=$hash; - } - }; + /* always need to use Schweinchen to figure out for example who has poverty */ + $ok=1; + } +else + { + /* in a game Schweinchen is not valid in all types of games */ + if( $gametype == 'normal' || $gametype == 'silent' || $gametype=='trump' ) + if( in_array($RULES['schweinchen'],array('both','second','secondaftercall')) ) + $ok=1; + } + +/* these are the defaults */ +$GAME['schweinchen-who'] = NULL; +$GAME['schweinchen-first'] = NULL; +$GAME['schweinchen-second'] = NULL; + +if($ok) +{ + /* need to check for Schweinchen */ + for($i=1;$i<5;$i++) + { + $hash = DB_get_hash_from_game_and_pos($gameid,$i); + $cards = DB_get_all_hand($hash); + if( in_array("19",$cards) && in_array("20",$cards) ) + $GAME['schweinchen-who']=$hash; + }; + $GAME['schweinchen-first'] = 0; /* to keep track if they have been played already */ + $GAME['schweinchen-second'] = 0; +} +/* end check for Schweinchen */ + +/* set the $CARDS variable, needed for sorting the cards + * we set it to normal so that the pre-game phase is handled ok + * and later set it to the correct game type that is played + */ +set_gametype('normal'); /* put everyting in a form */ echo "
\n"; @@ -108,7 +142,11 @@ display_table(); switch($mystatus) { case 'start': - if( !myisset("in") ) + /* don't ask if user has autosetup set to yest */ + $skip = 0; + if($PREF['autosetup']=='yes') $skip = 1; + + if( !myisset("in") && !$skip) { /* asks the player, if he wants to join the game */ output_check_want_to_play($me); @@ -117,7 +155,7 @@ switch($mystatus) else { /* check the result, if player wants to join, got next stage, else cancel game */ - if($_REQUEST["in"] == "no") + if($_REQUEST["in"] == "no" && !$skip) { /* cancel the game */ $message = "Hello, \n\n". @@ -155,6 +193,7 @@ switch($mystatus) /* whos turn is it? */ DB_set_player_by_gameid($gameid,$user); $ok = 0; + break; } }; if($ok) @@ -185,14 +224,14 @@ switch($mystatus) case 'init': /* here we ask the player if he is sick */ $mycards = DB_get_hand($me); - sort($mycards); + $mycards = mysort($mycards,$gametype); /* output sickness of other playes, in case the already selected and are sitting in front of the current player */ echo "\n\n"; /* end ul tricks*/ + echo "
  • prev
  • \n"; + echo "
  • next
  • \n\n"; /* end ul tricks*/ echo "
    Personal notes:
    \n"; $notes = DB_get_notes_by_userid_and_gameid($myid,$gameid); @@ -1589,7 +1761,10 @@ switch($mystatus) foreach($mycards as $card) { - if($followsuit && !same_type($card,$firstcard)) + if( ($followsuit && !same_type($card,$firstcard)) || + ( (int)($card)==19 && ($RULES['schweinchen']=='second'||$RULES['schweinchen']=='secondaftercall') + && $GAME['schweinchen-who']==$me && !$GAME['schweinchen-first'] ) + ) display_card($card,$PREF["cardset"]); else display_link_card($card,$PREF["cardset"]); @@ -1742,8 +1917,15 @@ switch($mystatus) $type = DB_get_gametype_by_gameid($gameid); if($type=="solo") - output_ask_for_new_game($names[0],$names[1],$names[2],$names[3],$gameid); - else + { + $solo = DB_get_solo_by_gameid($gameid); + + if($solo!='silent') /* repeat game with same first player */ + output_ask_for_new_game($names[0],$names[1],$names[2],$names[3],$gameid); + else /* rotate normally */ + output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid); + } + else /* rotate normally */ output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid); } }