From 827cf9b1db2abe2e726ac97063f90445244cf99f Mon Sep 17 00:00:00 2001 From: "Matteo Nastasi (mop)" Date: Tue, 7 Mar 2017 18:50:28 +0100 Subject: [PATCH] add NEXTAUCT checkpoint to engine rules machinery --- web/briskin5/Obj/briskin5.phh | 20 ++++++++++---------- web/briskin5/Obj/rules.phh | 1 + web/briskin5/Obj/rules_old_rules.phh | 17 ++++++++++++++++- web/briskin5/Obj/rules_together17.phh | 1 - web/briskin5/index_wr.php | 23 +++++++++++++++-------- 5 files changed, 42 insertions(+), 20 deletions(-) diff --git a/web/briskin5/Obj/briskin5.phh b/web/briskin5/Obj/briskin5.phh index 3eadc14..9523cd4 100644 --- a/web/briskin5/Obj/briskin5.phh +++ b/web/briskin5/Obj/briskin5.phh @@ -174,19 +174,19 @@ class Card { } // 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 diff --git a/web/briskin5/Obj/rules.phh b/web/briskin5/Obj/rules.phh index 4b14773..9618bf7 100644 --- a/web/briskin5/Obj/rules.phh +++ b/web/briskin5/Obj/rules.phh @@ -30,6 +30,7 @@ define('BIN5_RULES_FINISH', 0); 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"); diff --git a/web/briskin5/Obj/rules_old_rules.phh b/web/briskin5/Obj/rules_old_rules.phh index 29d9833..957b8be 100644 --- a/web/briskin5/Obj/rules_old_rules.phh +++ b/web/briskin5/Obj/rules_old_rules.phh @@ -125,6 +125,18 @@ class Rules_old_rules extends Rules { 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; @@ -135,7 +147,10 @@ class Rules_old_rules extends Rules { 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; diff --git a/web/briskin5/Obj/rules_together17.phh b/web/briskin5/Obj/rules_together17.phh index c5221ef..3613398 100644 --- a/web/briskin5/Obj/rules_together17.phh +++ b/web/briskin5/Obj/rules_together17.phh @@ -49,7 +49,6 @@ class Rules_together17 extends Rules_no_draw { function tourn_points_max($user) { - $mx = 0; for ($i = 0 ; $i < 4 ; $i++) { error_log("tourn_pts_max "); diff --git a/web/briskin5/index_wr.php b/web/briskin5/index_wr.php index e3bd11a..8a5cd79 100644 --- a/web/briskin5/index_wr.php +++ b/web/briskin5/index_wr.php @@ -188,6 +188,7 @@ function bin5_index_wr_main(&$bin5, $remote_addr_full, $get, $post, $cookie) if ($user->table_pos != $index_cur || !$table->asta_pla[$index_cur]) { + // FIXME_LANG $ret_s = 'grave inconsistenza'; break; } @@ -197,18 +198,19 @@ function bin5_index_wr_main(&$bin5, $remote_addr_full, $get, $post, $cookie) 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"; @@ -221,9 +223,14 @@ function bin5_index_wr_main(&$bin5, $remote_addr_full, $get, $post, $cookie) $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]) { @@ -233,7 +240,7 @@ function bin5_index_wr_main(&$bin5, $remote_addr_full, $get, $post, $cookie) } } - + /* 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); -- 2.17.1