X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fbriskin5%2FObj%2Fbriskin5.phh;h=d1bbbcc566f102c670cd7d39aa3363217f6d1c36;hb=a83aff42b8b01a66aba1bfa42e9d7722fc8e1455;hp=faf8c1bd7941e3f71d416e37c25708a486def21a;hpb=fdcd2271540f3e2d18886aaa413ae17ec2d131ec;p=brisk.git diff --git a/web/briskin5/Obj/briskin5.phh b/web/briskin5/Obj/briskin5.phh index faf8c1b..d1bbbcc 100644 --- a/web/briskin5/Obj/briskin5.phh +++ b/web/briskin5/Obj/briskin5.phh @@ -114,16 +114,6 @@ $mlang_bin5_bin5 = array( $table_wellarr = Array( 'it' => Array ( 'Benvenuto al tavolo. Se almeno tre giocatori non sbloccano l\'uscita cliccando il lucchetto, chi esce non può risedersi a un qualunque tavolo per '.floor(BAN_TIME/60).' minuti.'), 'en' => Array ( 'EN Benvenuto al tavolo. Se almeno tre giocatori non sbloccano l\'uscita cliccando il lucchetto, chi esce non può risedersi a un qualunque tavolo per '.floor(BAN_TIME/60).' minuti.') ); -function rules_id2name($id) -{ - if ($id == 1) - return 'Rules_old_rules'; - else if ($id == 2) - return 'Rules_no_draw'; - - return 'Rules_unknown'; -} - function multoval($mult) { GLOBAL $G_lang; @@ -138,6 +128,10 @@ function multoval($mult) return (sprintf(($G_lang == 'en' ? "%d-ple" : "%d-plo"), $mult)); } +function dom_select_rules() +{ + printf(""); +} class Card { var $value; /* 0 - 39 card value */ @@ -432,6 +426,7 @@ class Bin5_table extends Table { $user_cur->asta_card = -2; $user_cur->asta_pnt = -1; $user_cur->handpt = $this->hand_points($i); + $this->rules->tourn_points($user_cur, $i); } log_rd2("GEND 4"); } @@ -619,7 +614,6 @@ class Bin5_table extends Table { /* reload of the page with the new layout */ for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) { $user_cur = &$bri->user[$this->player[$i]]; - $user_cur->continue_set(BIN5_USER_CONTINUE_INIT); $user_cur->trans_step = $user_cur->step + 1; $user_cur->comm[$user_cur->step % COMM_N] = sprintf('gst.st_loc++; gst.st=%d; xstm.stop(); window.onunload = null ; window.onbeforeunload = null ; document.location.assign("index.php");|', $user_cur->step+1); @@ -647,7 +641,7 @@ class Bin5_table extends Table { } } - function rules_change(&$bri, $user, $rules_code_s) + function rules_change(&$bri, $user, $rules_id_s) { // // Rules: update version following loaded tcode @@ -656,39 +650,57 @@ class Bin5_table extends Table { $curtime = time(); do { - /* - verify if match_id and user are both valid to accept - the match_continue request - */ - $rules_id = (int)$match_code_s; + if ($this->match_id != -1) { + $msg = sprintf("Stai già giocando la partita con codice %d.", $this->match_id); + break; + } + + $rules_id = (int)$rules_id_s; // FIXME: from dynamic rules list if ($rules_id != 1 && $rules_id != 2 && $rules_id != 4) { $msg = "queste regole non esistono o non sono attive"; break; } - if ($this->match_id != -1) { - $msg = "Non si possono cambiare regole dopo che si è già ultimata una mano."; + if ($user->rules_get() == $rules_id) { + $msg = "hai già richiesto di usare queste regole"; break; } - // set the match_id for the current user - $user->rules_set($rules_id); + /* - the user is in the list, add the match_id to his profile + and check if he is the N'th to require continue - */ - // XXXXXXXXXXX - $tot_sel_rules = 0; + $rules_tot = 0; for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) { - if ($bri->user[$this->player[$i]]->rules_get() == BIN5_USER_RULES_INIT) { + $user_cur = &$bri->user[$this->player[$i]]; + + if ($user == $user_cur) { + $rules_tot += 1; continue; } - if ($bri->user[$this->player[$i]]->rules_get() != $rules_id) { + if ($user_cur->rules_get() == BIN5_USER_CONTINUE_INIT) + continue; + + if ($user_cur->rules_get() != $rules_id) break; - } - $tot_sel_rules++; + $rules_tot += 1; + } + if ($i < BIN5_PLAYERS_N) { + // FIXME_LANG + $msg = sprintf("L'utente %s voleva già usare le %s.", + xcape($user_cur->name), xcape(rules_id2descr($user_cur->rules_get()))); + break; } + + // set the match_id for the current user + $user->rules_set($rules_id); + $ret = TRUE; // not all players set the continue match than we exit - if ($i < BIN5_PLAYERS_N) { - $msg = sprintf("L'utente %s vorrebbe utilizzare le %s.", + if ($rules_tot < BIN5_PLAYERS_N) { + // FIXME_LANG + $msg = sprintf("L'utente %s vorrebbe usare le %s.", xcape($user->name), xcape(rules_id2descr($rules_id))); break; } @@ -696,50 +708,18 @@ class Bin5_table extends Table { /* - all users decide to continue the same match, update all infos and rearrange users to the right positions on the table - */ - /* reset users table order */ - for ($i = 0 ; $i < BIN5_PLAYERS_N - 1 ; $i++) { - if ($bri->user[$this->player[$i]]->code == $ucodes[$i]) { - continue; - } - for ($e = $i + 1 ; $e < BIN5_PLAYERS_N ; $e++) { - if ($bri->user[$this->player[$e]]->code == $ucodes[$i]) { - $swap = $this->player[$i]; - $this->player[$i] = $this->player[$e]; - $this->player[$e] = $swap; - $bri->user[$this->player[$i]]->table_pos = $i; - $bri->user[$this->player[$e]]->table_pos = $e; - } - } - } - for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) { - fprintf(STDERR, "USERZ: [%s]\n", $bri->user[$this->player[$i]]->name); - } - - // update database info to be aligned with current table (ttok and table_idx - if (($bdb = BriskDB::create()) != FALSE) { - if ($bdb->match_continue($match_id, $this, $user->table_orig) == FALSE) { - unset($bdb); - $msg = "aggiornamento dei dati della partita fallito"; - break; - } - unset($bdb); - } - /* update rules engine */ - $rules_name = rules_id2name($match_data['tcode']); + $rules_name = rules_id2name($rules_id); $this->rules = new $rules_name($this); - /* bunch and multiplier status set */ - $this->mazzo = $match_data['mazzo_next']; - $this->mult = $match_data['mult_next']; - $this->match_id = $match_id; - $this->game_init(&$bri->user); + // $this->game_init(&$bri->user); /* reload of the page with the new layout */ for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) { $user_cur = &$bri->user[$this->player[$i]]; - $user_cur->continue_set(BIN5_USER_CONTINUE_ALREADY); + $this->rules->tourn_points($user_cur, $i); + $user_cur->rules_set(BIN5_USER_CONTINUE_INIT); $user_cur->trans_step = $user_cur->step + 1; $user_cur->comm[$user_cur->step % COMM_N] = sprintf('gst.st_loc++; gst.st=%d; xstm.stop(); window.onunload = null ; window.onbeforeunload = null ; document.location.assign("index.php");|', $user_cur->step+1); $user_cur->step_inc(); @@ -764,8 +744,7 @@ class Bin5_table extends Table { $user_cur->comm[$user_cur->step % COMM_N] .= nickserv_msg($dt, $msg); $user_cur->step_inc(); } - } - + } // end function rules_change } // end class Bin5_table @@ -774,6 +753,7 @@ class Bin5_table extends Table { define('BIN5_USER_FLAG_RING_ENDAUCT', 0x01); define('BIN5_USER_CONTINUE_INIT', -1); +define('BIN5_USER_RULES_INIT', -1); class Bin5_user extends User { var $asta_card; // var $asta_pnt; // @@ -782,6 +762,9 @@ class Bin5_user extends User { var $privflags; // Flags for briskin5 only var $continue; // Id of the match that the user would continue + var $rules; // Id of rules required by user + + var $asta_tourn_pts; // array with tournment points for each suit const BASE = "../"; @@ -799,6 +782,7 @@ class Bin5_user extends User { $thiz->exitislock = TRUE; $thiz->privflags = 0; $thiz->continue = BIN5_USER_CONTINUE_INIT; + $thiz->rules = BIN5_USER_RULES_INIT; return ($thiz); } @@ -819,6 +803,7 @@ class Bin5_user extends User { $this->exitislock = $from->exitislock; $this->privflags = $from->privflags; $this->continue = $from->continue; + $this->rules = $from->rules; } /* CLONE NOT USED @@ -854,6 +839,7 @@ class Bin5_user extends User { $thiz->handpt = -1; $thiz->exitislock = TRUE; $thiz->continue = BIN5_USER_CONTINUE_INIT; + $thiz->rules = BIN5_USER_RULES_INIT; log_wr("Bin5 constructor"); @@ -1100,6 +1086,15 @@ class Bin5_user extends User { return ($this->continue); } + function rules_set($rules_id) + { + $this->rules = $rules_id; + } + + function rules_get() { + return ($this->rules); + } + } // end class Bin5_user @@ -1345,6 +1340,12 @@ class Bin5 { $match_id = substr($user_mesg, 6); $table->match_continue($this, $user, $match_id); } + else if (strncmp($user_mesg, "/rules ", 7) == 0) { + log_main($user->sess." chatt_send BEGIN"); + + $rules_id = substr($user_mesg, 7); + $table->rules_change($this, $user, $rules_id); + } else { for ($i = 0 ; $i < ($user->stat == 'room' ? BIN5_MAX_PLAYERS : BIN5_PLAYERS_N) ; $i++) { if ($user->stat == 'room') { @@ -1619,7 +1620,7 @@ function show_table(&$bri, &$user, $sendstep, $is_transition, $is_again) if (!$is_again) $ret .= table_welcome($user); - if ($is_transition && !$is_again) { // appena seduti al tavolo, play della mucca + if ($is_transition && !$is_again) { // just sit, play cow $ret .= playsound("cow.mp3"); } @@ -1817,7 +1818,8 @@ function show_table_info(&$bri, &$table, $table_pos) // TAG: POINTS_MANAGEMENT $pnt_min = $table->points_n - MAX_POINTS < 0 ? 0 : $table->points_n - MAX_POINTS; - $noty = sprintf(''); + $noty = sprintf('

%s.

\n', xcape(ucfirst(rules_id2descr($table->rules->id_get())))); + $noty .= sprintf('
'); // Names. for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++)