$mtc_sql = sprintf("UPDATE %sbin5_matches SET (mazzo_next, mult_next) = (%d, %d) WHERE ttok = '%s' RETURNING *;",
$G_dbpfx, $table->mazzo, $table->mult, $sql_ttok);
if (($mtc_pg = $this->query($mtc_sql)) == FALSE || pg_numrows($mtc_pg) != 1) {
+
// match not exists, insert it
$mtc_sql = sprintf("INSERT INTO %sbin5_matches (ttok, tidx, mazzo_next, mult_next) VALUES ('%s', %d, %d, %d) RETURNING *;",
$G_dbpfx, $sql_ttok, $tidx, $table->mazzo, $table->mult);
log_crit(sprintf("bin5_points_save: failed at insert match [%s]", $mtc_sql));
break;
}
+ $mtc_obj = pg_fetch_object($mtc_pg,0);
+
for ($i = 0 ; $i < $n ; $i++) {
$ord_sql = sprintf("INSERT INTO %sbin5_table_orders (mcode, ucode, pos) VALUES (%d, %d, %d);",
- $G_dbpfx, $G_dbpfx, $sql_ttok, $ucode[$i], $i);
+ $G_dbpfx, $mtc_obj->code, $ucodes[$i], $i);
if (($ord_pg = $this->query($ord_sql)) == FALSE || pg_affected_rows($ord_pg) != 1 ) {
log_crit(sprintf("bin5_points_save: failed at insert table order [%s]", $ord_sql));
break;
if ($i < $n)
break;
}
- $mtc_obj = pg_fetch_object($mtc_pg,0);
+ else {
+ $mtc_obj = pg_fetch_object($mtc_pg,0);
+ }
/*
* games management
$gam_sql = sprintf("INSERT INTO %sbin5_games (mcode, tstamp, asta_pnt, pnt, asta_win, friend, mazzo, mult)
VALUES (%d, to_timestamp(%d), %d, %d, %d, %d, %d, %d) RETURNING *;",
$G_dbpfx, $mtc_obj->code, $date,
- ($table->old_asta_win == -1 ? -1 : $ucodes[$table->old_asta_win]),
- ($table->old_friend == -1 ? -1 : $ucodes[$table->old_friend]),
- $table->old_asta_pnt, $table->old_mult, $table->old_pnt);
+ $table->old_asta_pnt, $table->old_pnt,
+ $table->old_asta_win,
+ $table->old_friend,
+ $table->old_mazzo, $table->old_mult);
if (($gam_pg = $this->query($gam_sql)) == FALSE || pg_affected_rows($gam_pg) != 1) {
log_crit(sprintf("bin5_points_save: failed at insert game [%s]", $gam_sql));
break;
$this->mazzo = ($this->mazzo + $delta) % BIN5_PLAYERS_N;
}
+ function mult_inc($val)
+ {
+ $this->old_mult = $this->mult;
+ $this->mult += $val;
+ }
+
+ function mult_set($val)
+ {
+ $this->old_mult = $this->mult;
+ $this->mult = $val;
+ }
function hand_points($idx)
{
if ($action == BIN5_RULES_ALLPASS) { // return TRUE if all correct
$this->old_reason = "Hanno passato tutti.";
+ $this->old_asta_win = -1;
$this->old_pnt = 0;
- $this->mult += 1;
+ $this->mult_inc(1);
for ($i = 0 ; $i < PLAYERS_N ; $i++) {
$pts[$i] = 0;
}
log_wr(sprintf("GIOCO FINITO !!!"));
$this->old_reason = sprintf("Ha lasciato %s perché aveva al massimo 2 punti.", xcape($user->name));
+ $this->old_asta_win = $user->table_pos;
$this->old_pnt = 0;
- $this->mult += 1;
+ $this->mult_inc(1);
for ($i = 0 ; $i < PLAYERS_N ; $i++) {
$pts[$i] = 0;
}
$this->points_n++;
$this->old_pnt = $pro;
- $this->mult += 1;
+ $this->mult_inc(1);
// return($pts);
break;
}
$this->points_n++;
$this->old_pnt = $pro;
- $this->mult = 0;
+ $this->old_asta_win = $this->asta_win;
+ $this->mult_set(0);
// return($pts);
} while (0);
$plist .= $codes;
log_legal($curtime, $user->ip, $user, "STAT:BRISKIN5:FINISH_GAME", $plist);
- $this->old_mazzo = $this->mazzo;
$this->old_asta_pnt = $this->asta_pnt;
- $this->old_mult = $this->mult;
- // $this->old_pnt and $this->old_reason are specific
- $this->old_asta_win = $this->asta_win;
+ // $this->old_mazzo is managed by ->game_next();
+ // $this->old_mult, $this->old_pnt, $this->old_reason and $this->old_asta_win are specific
+
$this->old_friend = $this->friend;
if ($user->table_orig < TABLES_AUTH_N) {