X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Fgame.php;h=377d0aa017dba09776f81d21718274fc7c1f8769;hp=3ed94973ab4ede24e6e4a8437cf1ae84e5a026d7;hb=193099c75801f128beb8f3bb9541a3cb70f24002;hpb=d26d08d532e38dcd42a159cfd295b0f87d82d9a2 diff --git a/include/game.php b/include/game.php index 3ed9497..377d0aa 100644 --- a/include/game.php +++ b/include/game.php @@ -25,7 +25,8 @@ if(!$myid) global $GAME,$RULES,$CARDS; /* the user has done something, update the timestamp */ -DB_update_user_timestamp($myid); +if(isset($_SESSION['id'])) + DB_update_user_timestamp($_SESSION['id']); /* get some information from the DB */ $gameid = DB_get_gameid_by_hash($me); @@ -33,10 +34,11 @@ $myname = DB_get_name('hash',$me); $mystatus = DB_get_status_by_hash($me); $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); /* get prefs and save them in a variable*/ -$PREF = DB_get_PREF($myid); +$PREF = DB_get_PREF(isset($_SESSION['id'])?$_SESSION['id']:$myid); /* get rule set for this game */ $RULES = DB_get_RULES($gameid); @@ -65,7 +67,7 @@ if( $gamestatus == 'pre' ) else { /* in a game Schweinchen is not valid in all types of games */ - if( $gametype == 'normal' || $gametype == 'silent' || $gametype=='trump' ) + if( $gametype == 'normal' || $gametype == 'silent' || $gametype=='trump' || $gametype=='wedding') if( in_array($RULES['schweinchen'],array('both','second','secondaftercall')) ) $ok=1; } @@ -108,35 +110,123 @@ if( $mystatus!='gameover' ) if($note != '') DB_insert_note($note,$gameid,$myid); }; -output_user_notes($myid,$gameid,$mystatus); -/* handle calls */ +/* make sure that we don't show the notes to the wrong person + * (e.g. other people looking at an old game) + */ +if( $mystatus != 'gameover' || + ( $mystatus == 'gameover' && + isset($_SESSION['id']) && + $myid == $_SESSION['id'])) + output_user_notes($myid,$gameid,$mystatus); + +/* handle calls, output a comment to show when the call was made */ +/* initialize comments */ +$comment = ''; + +/* 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' "); + { + $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)) - $result = DB_query("UPDATE Hand SET point_call='90' WHERE hash='$me' "); + { + $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' "); + { + $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' "); + { + $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' "); + { + $result = DB_query("UPDATE Hand SET point_call='0' WHERE hash='$me' "); + $comment .= "Zero"; + } + +/* 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 */ + /* output extra division in case this game is part of a session */ if($session) { echo "
\n"; - echo "
Rules (+icons for rules) \n"; - echo "
\n"; + echo "
Rules: "; + switch($RULES['dullen']) + { + case 'none': + echo " \"not\n"; break; + case 'firstwins': + echo " \"ten\n"; break; + case 'secondwins': + echo " \"second\n"; break; + } + switch($RULES['schweinchen']) + { + case 'none': + echo " \"no\n"; break; + case 'both': + echo " \"two\n"; break; + case 'second': + echo " \"second\n"; break; + case 'secondaftercall': + echo " \"second\n"; break; + } + switch($RULES['call']) + { + case '1st-own-card': + echo " \"1st-own-card\"\n"; break; + case '5th-card': + echo " \"5th-card\"\n"; break; + case '9-cards': + echo " \"9-cards\"\n"; break; + } + echo "
\n"; echo " 10ofhearts : {$RULES['dullen']}
\n"; echo " schweinchen: {$RULES['schweinchen']}
\n"; echo " call: {$RULES['call']}
\n"; - echo "
\n
\n"; - echo "
Score \n"; + echo "
\n
\n"; + + /* show score */ $score = generate_score_table($session); + $tmpscore= $score; + $finalscore = array_pop($tmpscore); + $finalscore = $finalscore['players']; + + echo "
Score: \n"; + foreach($finalscore as $user=>$value) + { + $name = DB_get_name('userid',$user); + echo " ".substr($name,0,2).": $value "; + } echo format_score_table_html($score,$myid); echo "
\n"; + + /* figure out which game in a session we are in and link to the previous and next game if possible */ $hashes = DB_get_hashes_by_session($session,$myid); + $next = NULL; $i = 1; foreach($hashes as $hash) { @@ -146,8 +236,27 @@ if($session) $lasthash=$hash; } $i--; - echo "This is game number $j of $i in session $session."; - echo "
\n"; + + if($j>1) + $previous = $hashes[$j-2]; + else + $previous = NULL; + if($j<$i) + $next = $hashes[$j]; + else + $next = NULL; + + if(isset($_SESSION['id']) && $_SESSION['id']==$myid) + { + if($previous) + echo "previous game    \n"; + echo "This is game number $j of $i in session $session.\n"; + if($next) + echo "   next game \n"; + } + else + echo "This is game number $j of $i in session $session."; + echo "\n
\n"; } /* display the table and the names */ @@ -264,7 +373,7 @@ switch($mystatus) $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 */ + echo "
still needs
to decide
\n"; /* show this to everyone */ else if($usersick!=NULL && $pos<=$mypos ) /* only show this for people sitting before the player */ echo "
sick
\n"; @@ -381,7 +490,7 @@ switch($mystatus) $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 */ + 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"; @@ -673,9 +782,6 @@ switch($mystatus) * it is easier to check B) first */ - /* output pre game in case user reloads */ - - set_gametype($gametype); /* this sets the $CARDS variable */ $myparty = DB_get_party_by_hash($me); @@ -693,6 +799,7 @@ switch($mystatus) { $result = DB_query("UPDATE Hand_Card SET hand_id='$partnerhand'". " WHERE hand_id='$myhand' AND card_id=".DB_quote_smart($exchange)); + DB_add_exchanged_card(DB_quote_smart($exchange),$myhand,$partnerhand); }; } @@ -700,6 +807,25 @@ switch($mystatus) $mycards = DB_get_hand($me); $mycards = mysort($mycards,$gametype); + /* 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