define(PLAYERS_N, 3);
define(MAX_POINTS, 5);
define(MAX_PLAYERS, (20 + (PLAYERS_N * TABLES_N)));
-define(SHM_DIMS, (50000 * MAX_PLAYERS));
-// define(COMM_N, 6);
+define(SHM_DIMS, (50000 + 10000 * TABLES_N + 15000 * MAX_PLAYERS));
define(COMM_N, 12);
define(COMM_GEN_N, 50);
define(SESS_LEN, 13);
$G_false = FALSE;
$G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 );
-$G_brisk_version = "spawn-0.0.3";
+$G_brisk_version = "spawn-0.0.9";
-$root_wellarr = Array ( 'Benvenuto in brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: nuovo layout che permette più tavoli, più tavoli.',
+$root_wellarr = Array ( 'Benvenuto in brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: chiuso il <b>bug</b> dei <b>tavoli bianchi</b>, versione beta.',
'Se vuoi iscriverti alla <a target="_blank" href="http://www.milug.org/cgi-bin/mailman/listinfo/ml-briscola">Mailing List</a>, cliccala!' );
$table_wellarr = 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.');
$this->stat = 'take'; // Card stat
$this->owner = $newown;
}
-}
+} // end class Card
class Table {
var $player;
{
GLOBAL $G_false;
- if (($thiz = new Table()) == FALSE)
+ if (($thiz =& new Table()) == FALSE)
return ($G_false);
$thiz->player = array();
$thiz->player_n = 0;
- $thiz->card = &$thiz->bunch_create();
+ $thiz->card = FALSE;
$thiz->asta_pla = array(); // TRUE: in auction, FALSE: out of the auction
$thiz->asta_pla_n= -1;
$thiz->asta_card = -1;
{
GLOBAL $G_false;
- if (($thiz = new Table()) == FALSE)
+ if (($thiz =& new Table()) == FALSE)
return ($G_false);
$thiz->player = array();
return ($G_false);
$thiz->player_n = $from->player_n;
- $thiz->card = $from->card;
+ $thiz->card = &$thiz->bunch_create();
$thiz->mazzo = $from->mazzo;
$thiz->gstart = $from->gstart;
$thiz->turn = $from->turn;
return ($ct);
}
-} // End class Table
+} // end class Table
class User {
var $name; // name of the user
{
GLOBAL $G_false;
- if (($thiz = new User()) == FALSE)
+ if (($thiz =& new User()) == FALSE)
return ($G_false);
$thiz->name = $from->name;
return (FALSE);
}
-}
+} // end class User
+
function step_get($sess) {
$fp = FALSE;
if (($sem = Briskin5::lock_data($table_idx)) != FALSE) {
log_main("bin5 lock data success");
+ $no_recovery = FALSE;
if (($bri = &Briskin5::load_data($table_idx)) != FALSE) {
if ($table_cur->table_token != $bri->table_token) {
log_main("ERROR: not matching table_token. Room: ".$table_cur->table_token." Table: ".$bri->table_token);
log_main("ERROR: not matching table_start. Room: ".$table_cur->table_start." Table: ".$bri->table_start);
+ $no_recovery = TRUE;
$bri = FALSE;
}
}
if ($bri != FALSE) {
+ //
+ // SPAWN: JOIN
+ //
log_main("garbage_manager: bri loaded successfully.");
$bri->garbage_manager(TRUE);
/*
* DESTROY OF FINISHED TABLE && MOVE PLAYER TO ROOM AGAIN
*/
+ log_main("garbage_manager: INSIDE THE END.");
+
for ($i = 0 ; $i < $bri_table->player_n ; $i++) {
// stat must be "table" by definition
$user_cur =& $this->user[$table_cur->player[$i]];
$bri_user =& $bri->user[$i];
-
+
$user_cur->subst = $bri_user->subst;
$user_cur->step = $bri_user->step;
- $user_cur->trans_step = $bri_user->step;
$user_cur->lacc = $bri_user->lacc;
$user_cur->laccwr = $bri_user->lacc;
+ $user_cur->bantime = $bri_user->bantime;
}
- $this->room_join_wakeup(&$user_cur);
+ $this->room_join_wakeup(&$user_cur, FALSE, 0);
$table_cur->table_token = "";
Briskin5::destroy_data($table_idx);
Briskin5::save_data(&$bri);
}
} // else if (($bri = &Briskin5::load_data($table_idx)) != FALSE) {
- else {
+ else if ($no_recovery == FALSE) {
log_main("ERROR: table ".$table_idx." unrecoverable join");
+
+ for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
+ $user_cur = &$this->user[$table_cur->player[$i]];
+ $user_cur->subst = "shutdowner";
+ $user_cur->step_inc();
+
+ $ret = sprintf('stat = "%s"; subst = "%s";', $cur_user->stat, $cur_user->subst);
+ $ret .= "gst.st = ".($user_cur->step+1)."; ";
+ $ret .= show_notify("<br>I dati del tavolo n° ".$user_cur->table." sono inconsistenti, verranno resettati.<br><br>Torni in piedi.<br><br>", 2000, "Chiudi.", 400, 110);
+ $user_cur->comm[$user_cur->step % COMM_N] = $ret;
+ $user_cur->step_inc();
+ }
+
+ $this->room_join_wakeup(&$user_cur, TRUE, -2);
+ $table_cur->table_token = "";
}
+
+ Briskin5::unlock_data($sem);
} // bri::lock_data
} // if ($table_cur->player_n == PLAYERS_N) {
} // for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) {
}
}
- function room_join_wakeup(&$user, $update_lacc = FALSE)
+ function room_join_wakeup(&$user, $update_lacc = FALSE, $trans_delta)
{
$table_idx = $user->table;
$table = &$this->table[$table_idx];
$curtime = time();
$user_wup = array();
$user_wup_n = 0;
+ $user_tab = array();
+ $user_tab_n = 0;
log_main("JOIN WAKEUP: from table [".$user->table."] nplayers_n: ".$this->table[$user->table]->player_n);
for ($i = 0 ; $i < $table->player_n ; $i++) {
$user_cur->table = -1;
$user_wup[$user_wup_n++] = &$user_cur;
}
+ $user_tab[$user_tab_n++] = &$user_cur;
}
}
$act_content = table_act_content(FALSE, 0, $table_idx, $user_cur->table);
$ret .= sprintf('$("table_act%d").innerHTML = "%s";', $table_idx, $act_content);
- for ($wup_idx = 0 ; $wup_idx < $user_wup_n ; $wup_idx++)
- if ($user_cur == $user_wup[$wup_idx])
+ for ($tab_idx = 0 ; $tab_idx < $user_tab_n ; $tab_idx++)
+ if ($user_cur == $user_tab[$tab_idx])
break;
- log_main("JOIN_WAKEUP wup_idx ".$wup_idx." wup_n ".$user_wup_n);
+ // for users that wakeup the room will be reconstructed by index_rd.php
+ if ($tab_idx < $user_tab_n) {
+ log_main("PRE show_room username: ".$user_cur->name." STEP: ".$user_cur->step);
+ $user_cur->trans_step = $user_cur->step + 1 + $trans_delta;
+ $user_cur->comm[$user_cur->step % COMM_N] = "";
+ $user_cur->step_inc();
+ $user_cur->comm[$user_cur->step % COMM_N] = show_room(&$this, ($user_cur->step + 1), &$user_cur);
+ $user_cur->step_inc();
+ log_main("POST show_room username: ".$user_cur->name." STEP: ".$user_cur->step);
- if ($wup_idx < $user_wup_n) {
- log_main("JOIN_WAKEUP less");
- // set the new status
- $ret .= 'subst = "standup"; ';
- // clean the action buttons in other tables
- for ($e = 0 ; $e < TABLES_N ; $e++) {
- if ($this->table[$e]->player_n < PLAYERS_N)
- $ret .= sprintf('$("table_act%d").innerHTML = "%s";', $e, table_act_content(TRUE, 0, $e, $user_cur->table));
- }
- log_main("JOIN_WAKEUP end less");
- }
- else {
- log_main("JOIN_WAKEUP more");
- $act_content = table_act_content(($user_cur->subst == 'standup'), $table->player_n, $table_idx, $user_cur->table);
- $ret .= sprintf('$("table_act%d").innerHTML = "%s";', $table_idx, $act_content);
- log_main("JOIN_WAKEUP end more");
+ continue;
}
+ log_main("JOIN_WAKEUP wup_idx ".$wup_idx." wup_n ".$user_wup_n);
+
+ log_main("JOIN_WAKEUP more");
+ $act_content = table_act_content(($user_cur->subst == 'standup'), $table->player_n, $table_idx, $user_cur->table);
+ $ret .= sprintf('$("table_act%d").innerHTML = "%s";', $table_idx, $act_content);
+ log_main("JOIN_WAKEUP end more");
}
log_wr("ROOM_JOIN_WAKEUP: ".$ret);
$user_cur->comm[$user_cur->step % COMM_N] = $ret;
}
$this->user[$idx]->name = $name_new;
$this->user[$idx]->stat_set("room");
- // MOP $this->user[$idx]->step_set(0);
+ $this->user[$idx]->step_set(0);
+ while (array_pop($this->user[$idx]->comm) != NULL);
$this->user[$idx]->subst = "standup";
$this->user[$idx]->lacc = $curtime;
$this->user[$idx]->laccwr = $curtime;
{
GLOBAL $G_false, $sess;
- if (($tok = ftok(FTOK_PATH."/main", "B")) == -1) {
+ if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
echo "FTOK FAILED";
exit;
}
// var_dump($room);
- if (($tok = ftok(FTOK_PATH."/main", "B")) == -1)
+ if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1)
return (FALSE);
do {
// echo "LOCK: ".FTOK_PATH."/main";
// exit;
- if (($tok = ftok(FTOK_PATH."/main", "B")) == -1) {
+ if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
echo "FTOK FAILED";
exit;
}
$ssess = "XXXX";
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_only2.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("ONL2: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
$ssess = "XXXX";
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_only.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("ONLY: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
$ssess = "XXXX";
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_main.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("MAIN: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_rd.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("READ: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
$ssess = $sess;
- // if (($fp = @fopen("/tmp/brisk_rd2.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("REA2: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_send.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("SEND: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
$ssess = "XXXX";
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_lock.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("LOCK: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_wr.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("WRIT: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
else
$ssess = $sess;
-
- // if (($fp = @fopen("/tmp/brisk_load.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("LOAD: [%s] [%s]\n", $ssess, $log));
fclose($fp);
}
if ((BRISK_DEBUG & DBG_AUTH) == 0)
return;
- // if (($fp = @fopen("/tmp/brisk_auth.log", 'a')) != FALSE) {
- if (($fp = @fopen("/tmp/brisk.log", 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/brisk.log", 'a')) != FALSE) {
fwrite($fp, sprintf("AUTH: [%s] [%d] [%s]\n", $sess, time(), $log));
fclose($fp);
}
{
GLOBAL $_SERVER;
- if (($fp = @fopen(LEGAL_PATH, 'a')) != FALSE) {
+ if (($fp = @fopen(LEGAL_PATH."/legal.log", 'a')) != FALSE) {
/* Unix time | session | nickname | IP | where was | mesg */
fwrite($fp, sprintf("%ld|%s|%s|%s|%s|%s|\n", $timecur, $sess, $name, $_SERVER['REMOTE_ADDR'], $where , $mesg));
fclose($fp);
function lock_banlist()
{
- if (($tok = ftok(FTOK_PATH."/main", "L")) == -1) {
+ if (($tok = @ftok(FTOK_PATH."/main", "L")) == -1) {
echo "FTOK FAILED";
exit;
}
return ($ret);
}
-function show_room(&$room, &$user)
+function show_room(&$room, $user_step, &$user)
{
- $ret = sprintf('gst.st = %d;', $user->step);
+ log_main("show_room: username: ".$user->name);
+
+
+ $ret = sprintf('gst.st = %d;', $user_step);
$ret .= sprintf('stat = "%s";', $user->stat);
$ret .= root_wellcome($user);