diff --git a/handlers/elements.go b/handlers/elements.go index 9373713..061edbf 100644 --- a/handlers/elements.go +++ b/handlers/elements.go @@ -50,7 +50,6 @@ func HandleShowColor(w http.ResponseWriter, r *http.Request) { abortWithError(w, err.Error()) return } - // color, exists := fi.Room.WCMap[word] color, exists := fi.Room.FindColor(word) if !exists { abortWithError(w, "word is not found") diff --git a/handlers/game.go b/handlers/game.go index 05851ea..11a286c 100644 --- a/handlers/game.go +++ b/handlers/game.go @@ -76,6 +76,10 @@ func HandleJoinTeam(w http.ResponseWriter, r *http.Request) { abortWithError(w, err.Error()) return } + if fi.Room == nil { + http.Redirect(w, r, "/", 302) + return + } if fi.Room.IsRunning && role == "mime" { err = errors.New("cannot join as mime when game is running") abortWithError(w, err.Error()) diff --git a/handlers/stats.go b/handlers/stats.go index 1946658..fae6de3 100644 --- a/handlers/stats.go +++ b/handlers/stats.go @@ -57,20 +57,20 @@ func updateStatsOnGameOver(ctx context.Context, room *models.Room) { if player.Role == models.UserRoleMime { stats.PlayedAsMime++ if stats.PlayedAsMime > 0 { - gamesWonAsMime := stats.MimeWinrate * float64(stats.PlayedAsMime-1) + gamesWonAsMime := stats.MimeWinrate * float32(stats.PlayedAsMime-1) if player.Team == room.TeamWon { gamesWonAsMime++ } - stats.MimeWinrate = gamesWonAsMime / float64(stats.PlayedAsMime) + stats.MimeWinrate = gamesWonAsMime / float32(stats.PlayedAsMime) } } else if player.Role == models.UserRoleGuesser { stats.PlayedAsGuesser++ if stats.PlayedAsGuesser > 0 { - gamesWonAsGuesser := stats.GuesserWinrate * float64(stats.PlayedAsGuesser-1) + gamesWonAsGuesser := stats.GuesserWinrate * float32(stats.PlayedAsGuesser-1) if player.Team == room.TeamWon { gamesWonAsGuesser++ } - stats.GuesserWinrate = gamesWonAsGuesser / float64(stats.PlayedAsGuesser) + stats.GuesserWinrate = gamesWonAsGuesser / float32(stats.PlayedAsGuesser) } } if err := repo.UpdatePlayerStats(ctx, stats); err != nil { diff --git a/llmapi/stats.go b/llmapi/stats.go index 211b9a1..f977036 100644 --- a/llmapi/stats.go +++ b/llmapi/stats.go @@ -46,20 +46,20 @@ func updateStatsOnGameOver(ctx context.Context, room *models.Room) { if player.Role == models.UserRoleMime { stats.PlayedAsMime++ if stats.PlayedAsMime > 0 { - gamesWonAsMime := stats.MimeWinrate * float64(stats.PlayedAsMime-1) + gamesWonAsMime := stats.MimeWinrate * float32(stats.PlayedAsMime-1) if player.Team == room.TeamWon { gamesWonAsMime++ } - stats.MimeWinrate = gamesWonAsMime / float64(stats.PlayedAsMime) + stats.MimeWinrate = gamesWonAsMime / float32(stats.PlayedAsMime) } } else if player.Role == models.UserRoleGuesser { stats.PlayedAsGuesser++ if stats.PlayedAsGuesser > 0 { - gamesWonAsGuesser := stats.GuesserWinrate * float64(stats.PlayedAsGuesser-1) + gamesWonAsGuesser := stats.GuesserWinrate * float32(stats.PlayedAsGuesser-1) if player.Team == room.TeamWon { gamesWonAsGuesser++ } - stats.GuesserWinrate = gamesWonAsGuesser / float64(stats.PlayedAsGuesser) + stats.GuesserWinrate = gamesWonAsGuesser / float32(stats.PlayedAsGuesser) } } diff --git a/models/main.go b/models/main.go index 6adaf9a..8bab780 100644 --- a/models/main.go +++ b/models/main.go @@ -148,8 +148,8 @@ type PlayerStats struct { OpenedOppositeWords int `db:"opened_opposite_words"` OpenedWhiteWords int `db:"opened_white_words"` OpenedBlackWords int `db:"opened_black_words"` - MimeWinrate float64 `db:"mime_winrate"` - GuesserWinrate float64 `db:"guesser_winrate"` + MimeWinrate float32 `db:"mime_winrate"` + GuesserWinrate float32 `db:"guesser_winrate"` PlayedAsMime int `db:"played_as_mime"` PlayedAsGuesser int `db:"played_as_guesser"` Rating float32 `db:"rating"` diff --git a/repos/card_marks.go b/repos/card_marks.go index 621cf0b..6307825 100644 --- a/repos/card_marks.go +++ b/repos/card_marks.go @@ -39,6 +39,6 @@ func (r *RepoProvider) CardMarksByRoomID(ctx context.Context, roomID string) ([] } func (r *RepoProvider) CardMarksRemoveByRoomID(ctx context.Context, roomID string) error { db := getDB(ctx, r.DB) - _, err := db.ExecContext(ctx, "DELETE FROM card_marks WHERE room_id = ?;", roomID) + _, err := db.ExecContext(ctx, "DELETE FROM card_marks WHERE card_id IN (select id from word_cards where room_id = ?);", roomID) return err } diff --git a/repos/player_stats.go b/repos/player_stats.go index 4e66890..6f44b4c 100644 --- a/repos/player_stats.go +++ b/repos/player_stats.go @@ -37,7 +37,7 @@ func (p *RepoProvider) UpdatePlayerStats(ctx context.Context, stats *models.Play mime_winrate = :mime_winrate, guesser_winrate = :guesser_winrate, played_as_mime = :played_as_mime, - played_as_guesser = :played_as_guesser + played_as_guesser = :played_as_guesser, rating = :rating WHERE username = :username`, stats) return err