From 71889f7daa1f3d1da8f43d3772f3b450f5fda428 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Sun, 17 Mar 2024 11:34:11 -0400 Subject: [PATCH] Add score to session save data --- api/savedata-defs.go | 2 ++ api/savedata.go | 9 +++++---- db/savedata.go | 10 ++++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/api/savedata-defs.go b/api/savedata-defs.go index be8dbcc..e4ffa7b 100644 --- a/api/savedata-defs.go +++ b/api/savedata-defs.go @@ -63,6 +63,7 @@ type SessionSaveData struct { Arena ArenaData `json:"arena"` PokeballCounts PokeballCounts `json:"pokeballCounts"` Money int `json:"money"` + Score int `json:"score"` WaveIndex int `json:"waveIndex"` BattleType BattleType `json:"battleType"` Trainer TrainerData `json:"trainer"` @@ -92,6 +93,7 @@ type SessionHistoryData struct { Party []PokemonData `json:"party"` Modifiers []PersistentModifierData `json:"modifiers"` Money int `json:"money"` + Score int `json:"score"` WaveIndex int `json:"waveIndex"` BattleType BattleType `json:"battleType"` GameVersion string `json:"gameVersion"` diff --git a/api/savedata.go b/api/savedata.go index b22adfa..400d194 100644 --- a/api/savedata.go +++ b/api/savedata.go @@ -268,9 +268,10 @@ func (s *Server) HandleSavedataClear(w http.ResponseWriter, r *http.Request) { return } - session, err := GetSessionSaveData(uuid, slotId) + var session SessionSaveData + err = json.NewDecoder(r.Body).Decode(&session) if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + http.Error(w, fmt.Sprintf("failed to decode request body: %s", err), http.StatusBadRequest) return } @@ -278,9 +279,9 @@ func (s *Server) HandleSavedataClear(w http.ResponseWriter, r *http.Request) { newCompletion := false if sessionCompleted { - newCompletion, err = db.TryAddSeedCompletion(uuid, session.Seed, int(session.GameMode)) + newCompletion, err = db.TryAddSeedCompletion(uuid, session.Seed, int(session.GameMode), session.Score) if err != nil { - log.Print("failed to mark seed as completed") + log.Printf("failed to mark seed as completed: %s", err.Error()) } } diff --git a/db/savedata.go b/db/savedata.go index 8743567..3dca9b7 100644 --- a/db/savedata.go +++ b/db/savedata.go @@ -1,24 +1,26 @@ package db -func TryAddSeedCompletion(uuid []byte, seed string, mode int) (bool, error) { +func TryAddSeedCompletion(uuid []byte, seed string, mode int, score int) (bool, error) { if len(seed) < 24 { for range 24 - len(seed) { seed += "0" } } + newCompletion := true + var count int err := handle.QueryRow("SELECT COUNT(*) FROM seedCompletions WHERE uuid = ? AND seed = ?", uuid, seed).Scan(&count) if err != nil { return false, err } else if count > 0 { - return false, nil + newCompletion = false } - _, err = handle.Exec("INSERT INTO seedCompletions (uuid, seed, mode, timestamp) VALUES (?, ?, ?, UTC_TIMESTAMP())", uuid, seed, mode) + _, err = handle.Exec("INSERT INTO seedCompletions (uuid, seed, mode, score, timestamp) VALUES (?, ?, ?, ?, UTC_TIMESTAMP()) ON DUPLICATE KEY UPDATE score = ?, timestamp = IF(score < ?, UTC_TIMESTAMP(), timestamp)", uuid, seed, mode, score, score, score) if err != nil { return false, err } - return true, nil + return newCompletion, nil }