} // end class Card
class Bin5_table extends Table {
- var $card; // il mazzo di carte
- var $mazzo; // chi e' di mazzo
- var $gstart;
- var $turn;
+ var $card; // il mazzo di carte
+ var $mazzo; // chi e' di mazzo
+ var $gstart; // first player of the current game
+ var $turn; // turn in the game (absolute, not modularized)
- var $asta_pla;
- var $asta_pla_n;
- var $asta_card;
- var $asta_pnt;
+ var $asta_pla; // array(); TRUE: in auction, FALSE: out of the auction
+ var $asta_pla_n; // number of players in auction
+ var $asta_card; // current card for auction
+ var $asta_pnt; // current point for auction
var $mult;
- var $points; // points array
- var $points_n; // number of row of points
+ var $points; // points array
+ var $points_n; // number of row of points
var $total;
var $asta_win; // the caller idx position at table
define('BIN5_RULES_ABANDON', 1);
define('BIN5_RULES_ALLPASS', 2);
define('BIN5_RULES_ASTA', 3);
+define('BIN5_RULES_NEXTAUCT', 4);
require_once("rules_base.phh");
require_once("rules_old_rules.phh");
return FALSE;
}
+ function rules_nextauct(&$bri, $curtime, $action, $user, $maxcard)
+ {
+ if (($this->table->asta_pla_n > ($maxcard > -1 ? 1 : 0)) &&
+ !($this->table->asta_card == 9 && $this->table->asta_pnt == 120)) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+
+ }
+
function engine(&$bri, $curtime, $action, $user, &$opt1 = NULL, &$opt2 = NULL, &$opt3 = NULL)
{
GLOBAL $G_all_points, $G_dbasetype;
if ($action == BIN5_RULES_ASTA) {
return ($this->rules_asta($bri, $curtime, $action, $user, &$opt1, $opt2, $opt3));
}
- if ($action == BIN5_RULES_ALLPASS) { // return TRUE if all correct
+ else if ($action == BIN5_RULES_NEXTAUCT) {
+ return ($this->rules_nextauct($bri, $curtime, $action, $user, $opt1));
+ }
+ else if ($action == BIN5_RULES_ALLPASS) { // return TRUE if all correct
$table->old_act = $action;
$table->old_asta_win = -1;
$table->old_pnt = 0;
function tourn_points_max($user)
{
-
$mx = 0;
for ($i = 0 ; $i < 4 ; $i++) {
error_log("tourn_pts_max ");
if ($user->table_pos != $index_cur ||
!$table->asta_pla[$index_cur]) {
+ // FIXME_LANG
$ret_s = 'grave inconsistenza';
break;
}
log_wr("CI SIAMO a_card ".$a_card." asta_card ".$table->asta_card);
- // Abbandono dell'asta
+ /* user action management */
if (!$table->rules->engine(&$bin5, $curtime, BIN5_RULES_ASTA, $user,
$ret_s, $a_card, $a_pnt)) {
- break;
- }
+ break;
+ }
/* next step */
$showst = "show_astat(";
for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
$user_cur = &$bin5->user[$table->player[$i]];
$showst .= sprintf("%s%d", ($i == 0 ? "" : ", "),
- ($user_cur->asta_card < 9 ? $user_cur->asta_card : $user_cur->asta_pnt));
+ ($user_cur->asta_card < 9 ? $user_cur->asta_card :
+ $user_cur->asta_pnt));
}
if (BIN5_PLAYERS_N == 3)
$showst .= ",-2,-2";
$maxcard = $user_cur->asta_card;
}
- if (($table->asta_pla_n > ($maxcard > -1 ? 1 : 0)) &&
- !($table->asta_card == 9 && $table->asta_pnt == 120)) {
- log_wr("ALLOPPA QUI");
+ /*
+ * IF not max points AND
+ * (asta_pla_n > 1 if someone bet OR
+ * asta_pla_n > 0 if someone NOT bet)
+ * THEN advance auction
+ */
+ if ($table->rules->engine(&$bin5, $curtime, BIN5_RULES_NEXTAUCT, $maxcard)) {
+ /* search the next player in auction and put it in gstart field */
for ($i = 1 ; $i < BIN5_PLAYERS_N ; $i++) {
$index_next = ($table->gstart + $i) % BIN5_PLAYERS_N;
if ($table->asta_pla[$index_next]) {
}
}
-
+ /* set client side view */
for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
$user_cur = &$bin5->user[$table->player[$i]];
$ret = sprintf('gst.st = %d; %s', $user_cur->step+1, $showst);