From: Matteo Nastasi (mop) Date: Thu, 12 Sep 2013 16:31:55 +0000 (+0200) Subject: computation and store of points and match state fixed X-Git-Tag: tournaments-descr-refact~5 X-Git-Url: http://mop.ddnsfree.com/gitweb/?p=brisk.git;a=commitdiff_plain;h=215e2a24fbec8d1a6a95dddf617dea99b05676eb computation and store of points and match state fixed --- diff --git a/web/Obj/dbase_pgsql.phh b/web/Obj/dbase_pgsql.phh index bd4dfb3..f214999 100644 --- a/web/Obj/dbase_pgsql.phh +++ b/web/Obj/dbase_pgsql.phh @@ -315,6 +315,7 @@ class BriskDB $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); @@ -322,9 +323,11 @@ class BriskDB 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; @@ -333,7 +336,9 @@ class BriskDB if ($i < $n) break; } - $mtc_obj = pg_fetch_object($mtc_pg,0); + else { + $mtc_obj = pg_fetch_object($mtc_pg,0); + } /* * games management @@ -341,9 +346,10 @@ class BriskDB $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; diff --git a/web/briskin5/Obj/briskin5.phh b/web/briskin5/Obj/briskin5.phh index e5389da..1a1a899 100644 --- a/web/briskin5/Obj/briskin5.phh +++ b/web/briskin5/Obj/briskin5.phh @@ -405,6 +405,17 @@ class Bin5_table extends Table { $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) { @@ -454,8 +465,9 @@ class Bin5_table extends Table { 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; } @@ -468,8 +480,9 @@ class Bin5_table extends Table { 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; @@ -508,7 +521,7 @@ class Bin5_table extends Table { } $this->points_n++; $this->old_pnt = $pro; - $this->mult += 1; + $this->mult_inc(1); // return($pts); break; @@ -540,7 +553,8 @@ class Bin5_table extends Table { } $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); @@ -567,11 +581,10 @@ class Bin5_table extends Table { $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) {