X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Fgame.php;h=6b6d6ba82a26e1a6835dc45b2271160ac0ffd593;hp=621b0b04d8e12b5c53748282c255ae5c4551c073;hb=0b5b9bc1e0f67e7405d2b33da3a37d28e8325d7e;hpb=a1c07dccbae02ae3663cb30bed875cfe904587a6 diff --git a/include/game.php b/include/game.php index 621b0b0..6b6d6ba 100644 --- a/include/game.php +++ b/include/game.php @@ -53,6 +53,7 @@ $mypos = DB_get_pos_by_hash($me); $myhand = DB_get_handid('hash',$me); $myparty = DB_get_party_by_hash($me); $session = DB_get_session_by_gameid($gameid); +$playid = DB_get_current_playid($gameid); /* might be -1 at beginning of the game */ /* get prefs and save them in a variable*/ $PREF = DB_get_PREF(isset($_SESSION['id'])?$_SESSION['id']:$myid); @@ -128,51 +129,67 @@ if( $mystatus!='gameover' ) DB_insert_note($note,$gameid,$myid); }; -/* handle calls, output a comment to show when the call was made */ -/* initialize comments */ -$comment = ''; - -/* get information needed to submit comment */ -$playid = DB_get_current_playid($gameid); - -/* set comment */ -if($comment != '') - DB_insert_comment($comment,$playid,$myid); -/* clear up */ -unset($comment); -/* end check for calls */ +/***************************************************************** + * handle calls part1: check what was called, set everything up + * we only can submit it to the database at the end, since the playid + * might change if a player plays a card + *****************************************************************/ +/* initialize comments */ +$commentCall = ''; /* check for calls, set comment */ -if(myisset('call') && $_REQUEST['call'] == '120' && can_call(120,$me)) - { - $result = DB_query("UPDATE Hand SET point_call='120' WHERE hash='$me' "); - if($myparty=='re') - $comment .= "Re"; - else if($myparty=='contra') - $comment .= "Contra"; - } -if(myisset('call') && $_REQUEST['call'] == '90' && can_call(90,$me)) +if( myisset('call') ) { - $result = DB_query("UPDATE Hand SET point_call='90' WHERE hash='$me' "); - $comment .= "No 90"; - } -if(myisset('call') && $_REQUEST['call'] == '60' && can_call(60,$me)) - { - $result = DB_query("UPDATE Hand SET point_call='60' WHERE hash='$me' "); - $comment .= "No 60"; - } -if(myisset('call') && $_REQUEST['call'] == '30' && can_call(30,$me)) - { - $result = DB_query("UPDATE Hand SET point_call='30' WHERE hash='$me' "); - $comment .= "No 30"; - } -if(myisset('call') && $_REQUEST['call'] == '0' && can_call(0,$me)) - { - $result = DB_query("UPDATE Hand SET point_call='0' WHERE hash='$me' "); - $comment .= "Zero"; + if($_REQUEST['call'] == '120' && can_call(120,$me)) + { + $result = DB_query("UPDATE Hand SET point_call='120' WHERE hash='$me' "); + if($myparty=='re') + $commentCall = "Re"; + else if($myparty=='contra') + $commentCall = "Contra"; + } + else if($_REQUEST['call'] == '90' && can_call(90,$me)) + { + $result = DB_query("UPDATE Hand SET point_call='90' WHERE hash='$me' "); + $commentCall = "No 90"; + } + else if($_REQUEST['call'] == '60' && can_call(60,$me)) + { + $result = DB_query("UPDATE Hand SET point_call='60' WHERE hash='$me' "); + $commentCall = "No 60"; + } + else if($_REQUEST['call'] == '30' && can_call(30,$me)) + { + $result = DB_query("UPDATE Hand SET point_call='30' WHERE hash='$me' "); + $commentCall = "No 30"; + } + else if($_REQUEST['call'] == '0' && can_call(0,$me)) + { + $result = DB_query("UPDATE Hand SET point_call='0' WHERE hash='$me' "); + $commentCall = "Zero"; + } } +/********************************************************** + * handle comments unless we play a card at the same time * + * (if we play a card, we need to update playid) * + **********************************************************/ + + +/* get time from the last action of the game */ +$r = DB_query_array("SELECT mod_date from Game WHERE id='$gameid' " ); +$gameend = time() - strtotime($r[0]); + +/* handle comments in case player didn't play a card, allow comments a week after the end of the game */ +if( (!myisset('card') && $mystatus!='gameover') || ($mystatus=='gameover' && ($gameend < 60*60*24*7)) ) + if(myisset('comment')) + { + $comment = $_REQUEST['comment']; + + if($comment != '') + DB_insert_comment($comment,$playid,$gameid,$myid); + }; /***************************************************************** @@ -183,12 +200,12 @@ if(myisset('call') && $_REQUEST['call'] == '0' && can_call(0,$me)) if( $gamestatus != 'gameover' && isset($_SESSION['id']) ) { /* game isn't over, only valid user can get here, so show menu */ - display_user_menu($myid); + display_user_menu($myid, $me); } else if( $mystatus == 'gameover' && isset($_SESSION['id']) ) { /* user is looking at someone else's game, show the menu for the correct user */ - display_user_menu($_SESSION['id']); + display_user_menu($_SESSION['id'],$me); } else { @@ -343,24 +360,9 @@ switch($mystatus) case 'check': /* output sickness of other playes, in case they already selected and are sitting in front of the current player */ echo "\n\n"; /* end div trick, end li trick , end tricks*/ + echo " \n\n"; /* end div trick, end li trick , end tricks*/ /* end displaying sickness */ break; case 'poverty': @@ -372,13 +374,8 @@ switch($mystatus) $mygametype = DB_get_gametype_by_gameid($gameid); - echo "
  • Pre\n". - "
    \n"; - - /* get information so show the cards that have been handed over in a poverty game */ - output_exchanged_cards(); - - echo "
    \n
  • \n\n\n"; /* end div trick, end li trick , end ul tricks */ + echo "
  • Pre\n"; + echo "
  • \n\n\n"; /* end div trick, end li trick , end ul tricks */ } /* end output pre-game trick */ break; @@ -405,6 +402,7 @@ switch($mystatus) /* output tricks */ while($r = DB_fetch_array($result)) { + $trick=$r[0]; if($trick!=$lasttrick) echo "
  • "._('Trick')." $trickNR
  • \n"; else if($trick==$lasttrick) @@ -417,8 +415,8 @@ switch($mystatus) echo "
  • "._('Score')."
  • \n"; /* output previous/next buttons */ - echo "
  • "._('prev')."
  • \n"; - echo "
  • "._('next')."
  • \n"; + echo "
  • \n"; + echo "
  • \n"; echo "\n\n"; @@ -437,6 +435,79 @@ echo "
    \n"; /* display the table and the names */ display_table_begin(); + +/****************************** + * Output pre-trick if needed * + ******************************/ + +switch($mystatus) + { + case 'start': + break; + case 'init': + case 'check': + /* output sickness of other playes, in case they already selected and are sitting in front of the current player */ + echo "\n
    \n"; + echo "
    \n"; + + for($pos=1;$pos<5;$pos++) + { + $usersick = DB_get_sickness_by_pos_and_gameid($pos,$gameid); + $userid = DB_get_userid('gameid-position',$gameid,$pos); + $userstatus = DB_get_hand_status_by_userid_and_gameid($userid,$gameid); + + if($userstatus=='start' || $userstatus=='init') + echo "
    still needs
    to decide
    \n"; /* show this to everyone */ + else + if($usersick!=NULL) /* in the init-phase we only showed players with $pos<$mypos, now we can show all */ + echo "
    sick
    \n"; + else + echo "
    healthy
    \n"; + } + + /* display all comments on the top right (card1)*/ + $comments = DB_get_pre_comment($gameid); + /* display card */ + echo "
    \n"; + /* display comments */ + foreach( $comments as $comment ) + echo " ".$comment[1].": ".$comment[0]."\n"; + echo "
    \n"; /* end div card */ + + + echo "
    \n
    \n"; /* end div trick, end li trick , end tricks*/ + /* end displaying sickness */ + + break; + case 'poverty': + /* output pre-game trick in case user reloads, + * only needs to be done when a team has been formed */ + if($myparty=='re' || $myparty=='contra') + { + echo "\n
    \n"; + + $mygametype = DB_get_gametype_by_gameid($gameid); + + echo "
    \n"; + + /* get information so show the cards that have been handed over in a poverty game */ + output_exchanged_cards(); + + echo "
    \n
    \n\n"; /* end div trick, end li trick , end ul tricks */ + } + /* end output pre-game trick */ + break; + case 'play': + case 'gameover': + + /* taken care further down */ + break; + default: + } + + + + /* mystatus gets the player through the different stages of a game. * start: does the player want to play? * init: check for sickness @@ -1264,22 +1335,6 @@ switch($mystatus) * only play a card after everyone is ready to play */ } - - /* get time from the last action of the game */ - $r = DB_query_array("SELECT mod_date from Game WHERE id='$gameid' " ); - $gameend = time() - strtotime($r[0]); - - /* handle comments in case player didn't play a card, allow comments a week after the end of the game */ - if( (!myisset('card') && $mystatus=='play') || ($mystatus=='gameover' && ($gameend < 60*60*24*7)) ) - if(myisset('comment')) - { - $comment = $_REQUEST['comment']; - $playid = DB_get_current_playid($gameid); - - if($comment != '') - DB_insert_comment($comment,$playid,$myid); - }; - /* get everything relevant to display the tricks */ $result = DB_query("SELECT Hand_Card.card_id as card,". " Hand.position as position,". @@ -1311,6 +1366,7 @@ switch($mystatus) /* output vorbehalte */ $mygametype = DB_get_gametype_by_gameid($gameid); $mygamesolo = DB_get_solo_by_gameid($gameid); + $show_pre_game_comments=1; if($mygametype != 'normal') /* only show when needed */ if(!( $mygametype == 'solo' && $mygamesolo == 'silent') ) { @@ -1318,10 +1374,28 @@ switch($mystatus) /* get information so show the cards that have been handed over in a poverty game */ output_exchanged_cards(); + $show_pre_game_comments=0; echo " \n"; /* end div trick, end li trick */ } + if($show_pre_game_comments==1) + { + /* display all comments on the top right (card1)*/ + $comments = DB_get_pre_comment($gameid); + + if(sizeof($comments)) + { + echo "
    \n"; + /* display card */ + echo "
    \n"; + /* display comments */ + foreach( $comments as $comment ) + echo " ".$comment[1].": ".$comment[0]."\n"; + echo "
    \n"; /* end div card */ + echo "
    \n"; /* end div trick, end li trick */ + } + } /* output tricks */ while($r = DB_fetch_array($result)) @@ -1369,6 +1443,14 @@ switch($mystatus) /* display card */ echo "
    \n"; + /* for the first card, we also need to display calls from other players */ + if($seq==1 && $trickNR==1) + { + $commentPreCalls=DB_get_pre_comment_call($gameid); + foreach ($commentPreCalls as $pre ) + $comment .= $pre[1].": ".$pre[0]."
    "; + } + /* display comments */ if($comment!='') echo " ".$comment."\n"; @@ -1451,7 +1533,7 @@ switch($mystatus) (DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) )) ) { - DB_insert_comment('Schweinchen! ',$playid,$myid); + DB_insert_comment('Schweinchen! ',$playid,$gameid,$myid); $commentSchweinchen = 'Schweinchen! '; } if ($debug) @@ -1611,9 +1693,11 @@ switch($mystatus) { $comment = $_REQUEST['comment']; if($comment != '') - DB_insert_comment($comment,$playid,$myid); + DB_insert_comment($comment,$playid,$gameid,$myid); if($commentSchweinchen) $comment = $commentSchweinchen . $comment; + if($commentCall != '') + $comment = $commentCall . $comment; }; /* display played card */ @@ -2162,6 +2246,18 @@ if( sizeof($messages) ) echo "
    \n\n"; } +/**************************** + * commit commentCall to DB * + ****************************/ + +if($commentCall != '') + { + /* treat before game calls special, so that we can show them on the first trick and not the pre-phase */ + if($playid == -1) + $playid = -2; + + DB_insert_comment($commentCall,$playid,$gameid,$myid); + } /*********************************************** * Comments, re/contra calls, user menu ***********************************************/ @@ -2177,7 +2273,7 @@ $r = DB_query_array("SELECT mod_date from Game WHERE id='$gameid' " ); $gameend = time() - strtotime($r[0]); /* comment box */ -if($gamestatus == 'play' || $gameend < 60*60*24*7) +if($gamestatus == 'play' || $gamestatus == 'pre' || $gameend < 60*60*24*7) { echo ' '._('A short comment').":\n"; } @@ -2190,7 +2286,7 @@ if($gamestatus == 'play' ) } /* play-card button */ -if($gamestatus == 'play' || $gameend < 60*60*24*7) +if($gamestatus == 'play' || $gamestatus == 'pre' || $gameend < 60*60*24*7) { echo " \n"; }