$thiz->asta_pla_n= -1;
$thiz->asta_card = -1;
$thiz->asta_pnt = -1;
- $thiz->mult = 1;
+ $thiz->mult = 0;
$thiz->points = array( );
$thiz->points_n = 0;
$thiz->bunch_create();
$thiz->mazzo = rand(0,PLAYERS_N-1);
$thiz->points_n = 0;
- $thiz->mult = 1;
+ $thiz->mult = 0;
$thiz->old_win = -1;
$thiz->old_reason = "";
return ($thiz);
}
+ function asta2mult($asta_pnt)
+ {
+ if ($asta_pnt > 110)
+ return (6);
+ else if ($asta_pnt > 100)
+ return (5);
+ else if ($asta_pnt > 90)
+ return (4);
+ else if ($asta_pnt > 80)
+ return (3);
+ else if ($asta_pnt > 70)
+ return (2);
+ else
+ return (1);
+ }
+
+ function multer($is_new)
+ {
+ if ($is_new) {
+ return (pow(2, $this->mult) * $this->asta2mult($this->asta_pnt));
+ }
+ else {
+ return (pow(2, $this->old_mult) * $this->asta2mult($this->old_asta_pnt));
+ }
+ }
+
// function bunch_create_old() function AND
// {
/* MOVED INTO SPAWN
$this->mazzo = rand(0,PLAYERS_N-1);
$this->points_n = 0;
- $this->mult = 1;
+ $this->mult = 0;
$this->old_win = -1;
$this->old_reason = "";
*/
return ($ret);
}
- protected function blocking_error($is_unrecoverable)
+ static function blocking_error($is_unrecoverable)
{
log_crit("BLOCKING_ERROR UNREC: ".($is_unrecoverable ? "TRUE" : "FALSE"));
return (sprintf(($is_unrecoverable ? 'xstm.stop(); ' : '').'window.onbeforeunload = null; window.onunload = null; document.location.assign("../index.php");'));
var $the_end;
var $tok;
- static function page_manager($room, $header_out, $path, $method, $addr, $get, $post, $cookie)
- {
- switch ($path) {
- case "":
- case "index.php":
- ob_start();
- bin5_index_main($room, $header_out, $addr, $get, $post, $cookie);
- $content = ob_get_contents();
- ob_end_clean();
-
- force_no_cache($header_out);
-
- $pgflush = new PageFlush($new_socket, $curtime, 20, $header_out, $content);
-
- if ($pgflush->try_flush($curtime) == FALSE) {
- // Add $pgflush to the pgflush array
- array_push($pages_flush, $pgflush);
- }
- break;
- }
- return TRUE;
- }
+ var $delay_mgr;
function Bin5 ($room, $table_idx, $table_token, $get, $post, $cookie) {
$this->user = array();
$this->table_token = $table_token;
$this->garbage_timeout = 0;
+ $this->delay_mgr = new Delay_Manager((GARBAGE_TIMEOUT *3.0) / 2.0);
+
log_wr("Bin5 constructor end");
}
/* Garbage collector degli utenti in timeout */
$ismod = FALSE;
$curtime = time();
+
+ $delta = $this->delay_mgr->delta_get($curtime);
+
if ($force || $this->garbage_timeout < $curtime) {
for ($i = 0 ; $i < BIN5_MAX_PLAYERS ; $i++) {
$user_cur = $this->user[$i];
($user_cur->stat == 'table' && ($user_cur->subst == 'shutdowned' || $user_cur->subst == 'shutdowner')))
continue;
- if ($user_cur->lacc + EXPIRE_TIME_RD < $curtime) { // Auto logout dell'utente
+ if ($user_cur->lacc + EXPIRE_TIME_RD < ($curtime - $delta)) { // Auto logout dell'utente
log_rd2($user_cur->sess." bin5 AUTO LOGOUT.");
if ($user_cur->stat == 'table') {
$ismod = TRUE;
}
+ $this->delay_mgr->lastcheck_set($curtime);
return ($ismod);
}
$dt, $user->flags, xcape($user->name), xcape($user_mesg));
$user_cur->step_inc();
}
- log_legal($curtime, 'xxx', $user, ($user->stat == 'room' ? 'room' : 'table '.$user->table_orig),$user_mesg);
+ log_legal($curtime, $user->ip, $user, ($user->stat == 'room' ? 'room' : 'table '.$user->table_orig),$user_mesg);
}
}
printf("NEW_SOCKET (root): %d\n", intval($new_socket));
$enc = get_encoding($header);
- if (isset($header['User-Agent']) && strstr($header['User-Agent'], "MSIE")) {
- $transp_type = "htmlfile";
+ if (isset($header['User-Agent'])) {
+ if (strstr($header['User-Agent'], "MSIE")) {
+ $transp_type = "htmlfile";
+ }
+ else {
+ $transp_type = "xhr";
+ }
}
else {
$transp_type = "iframe";
$content = ob_get_contents();
ob_end_clean();
- $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
+ $s_a_p->pendpage_try_addflush($enc, $new_socket, 20, $header_out, $content);
return TRUE;
break;
else {
$content = "Bin5 Load data error";
}
- $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
+ $s_a_p->pendpage_try_addflush($enc, $new_socket, 20, $header_out, $content);
return TRUE;
break;
|| ($bri = $s_a_p->app->match_get($table_idx, $table_token)) == NULL
|| (($user = $bri->get_user($cookie['sess'], $idx)) == FALSE)) {
- $content = Bin5_user::stream_fini($s_a_p->rndstr, TRUE);
- $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
+ $content = Bin5_user::stream_fini($transp_type, $s_a_p->rndstr, TRUE);
+ $s_a_p->pendpage_try_addflush($enc, $new_socket, 20, $header_out, $content);
return TRUE;
break;
}
-function asta2mult($asta_pnt)
-{
- if ($asta_pnt > 110)
- return (5);
- else if ($asta_pnt > 100)
- return (4);
- else if ($asta_pnt > 90)
- return (3);
- else if ($asta_pnt > 80)
- return (2);
- else if ($asta_pnt > 70)
- return (1);
- else
- return (0);
-}
// rendiamo qui l'elenco dei punti come return della func
function calculate_points(&$table)
$table->old_asta_pnt = $table->asta_pnt;
$table->old_mult = $table->mult;
+ // count points for the temporary 2 teams
for ($i = 0 ; $i < (BIN5_PLAYERS_N == 5 ? 40 : 24) ; $i++) {
// for ($i = 0 ; $i < 40 ; $i++) {
$ctt = $table->card[$i]->value % 10;
log_wr(sprintf("PRO: [%d]", $pro));
-
- if ($table->asta_pnt == 61 && $pro == 60) { // PATTA !
+ // PATTA case !
+ if ($table->asta_pnt == 61 && $pro == 60) {
$table->points[$table->points_n % MAX_POINTS] = array();
for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
$table->points[$table->points_n % MAX_POINTS][$i] = 0;
else
$sig = -1;
- $gamult = asta2mult($table->asta_pnt);
-
$table->points[$table->points_n % MAX_POINTS] = array();
for ($i = 0 ; $i < BIN5_PLAYERS_N ; $i++) {
if ($i == $table->asta_win)
log_wr(sprintf("PRO: pt[%d][%d] = %d", $table->points_n % MAX_POINTS, $i, $pt));
- $pt = $pt * $sig * ($gamult + $table->mult) * ($pro == 120 ? 2 : 1);
+ $pt = $pt * $sig * $table->multer(TRUE) * ($pro == 120 ? 2 : 1);
- log_wr(sprintf("PRO:[%d][%d][%d]", $sig, $table->mult, ($pro == 120 ? 2 : 1)));
+ log_wr(sprintf("PRO:[%d][%d][%d]", $sig, $table->multer(TRUE), ($pro == 120 ? 2 : 1)));
$table->points[$table->points_n % MAX_POINTS][$i] = $pt;
$table->total[$i] += $pt;
}
$table->points_n++;
$table->old_pnt = $pro;
- $table->mult = 1;
+ $table->mult = 0;
return($ret);
}
$ret .= "setTimeout(preload_images, 500, g_preload_img_arr, g_imgct);";
}
if (!$is_again)
- $ret .= table_wellcome($user);
+ $ret .= table_welcome($user);
if ($is_transition && !$is_again) { // appena seduti al tavolo, play della mucca
$ret .= playsound("cow.mp3");
($wol == 1 ? $mlang_bin5_bin5['info_win'][$G_lang] : ($wol == 0 ? $mlang_bin5_bin5['info_peer'][$G_lang] : $mlang_bin5_bin5['info_lost'][$G_lang])));
}
}
- if (($table->old_mult + asta2mult($table->old_asta_pnt)) > 1) {
- $noty .= sprintf($mlang_bin5_bin5['info_omul'][$G_lang], multoval($table->old_mult + asta2mult($table->old_asta_pnt)));
+ $old_multer = $table->multer(FALSE);
+ if ($old_multer > 1) {
+ $noty .= sprintf($mlang_bin5_bin5['info_omul'][$G_lang], multoval($old_multer));
}
$noty .= "<hr><br>";
}
$noty .= sprintf($mlang_bin5_bin5['info_turn'][$G_lang], $unam);
}
- if (($table->mult + asta2mult($table->asta_pnt)) > 1) {
- $noty .= sprintf($mlang_bin5_bin5['info_mult'][$G_lang], multoval($table->mult + asta2mult($table->asta_pnt)));
+ $multer = $table->multer(TRUE);
+ if ($multer > 1) {
+ $noty .= sprintf($mlang_bin5_bin5['info_mult'][$G_lang], multoval($multer) );
}
$noty .= "<hr><br>";
$ret .= show_notify($noty, 3000, $mlang_bin5_bin5['btn_bkgame'][$G_lang], 500, 400);
return ($ret);
}
-function table_wellcome($user)
+function table_welcome($user)
{
GLOBAL $table_wellarr, $G_lang;
$ret = "";