mirror of
https://github.com/pagefaultgames/rogueserver.git
synced 2025-04-02 02:57:15 +08:00
ensure uniqueness of daily seed
This commit is contained in:
parent
3a5f6fb116
commit
b803dff3e9
@ -61,22 +61,27 @@ func Init() error {
|
||||
secret = newSecret
|
||||
}
|
||||
|
||||
err = recordNewDaily()
|
||||
seed, err := recordNewDaily()
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
|
||||
log.Printf("Daily Run Seed: %s", Seed())
|
||||
log.Printf("Daily Run Seed: %s", seed)
|
||||
|
||||
scheduler.AddFunc("@daily", func() {
|
||||
_, err = scheduler.AddFunc("@daily", func() {
|
||||
time.Sleep(time.Second)
|
||||
|
||||
err := recordNewDaily()
|
||||
seed, err = recordNewDaily()
|
||||
log.Printf("Daily Run Seed: %s", seed)
|
||||
if err != nil {
|
||||
log.Printf("error while recording new daily: %s", err)
|
||||
}
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
scheduler.Start()
|
||||
|
||||
return nil
|
||||
@ -95,11 +100,6 @@ func deriveSeed(seedTime time.Time) []byte {
|
||||
return hashedSeed[:]
|
||||
}
|
||||
|
||||
func recordNewDaily() error {
|
||||
err := db.TryAddDailyRun(Seed())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
func recordNewDaily() (string, error) {
|
||||
return db.TryAddDailyRun(Seed())
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
@ -302,7 +303,13 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
// doesn't return a save, but it works
|
||||
save, err = savedata.Clear(uuid, slot, daily.Seed(), s)
|
||||
var seed string
|
||||
seed, err = db.GetDailyRunSeed()
|
||||
if err != nil {
|
||||
httpError(w, r, err, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
save, err = savedata.Clear(uuid, slot, seed, s)
|
||||
}
|
||||
if err != nil {
|
||||
httpError(w, r, err, http.StatusInternalServerError)
|
||||
@ -326,7 +333,21 @@ func handleSaveData(w http.ResponseWriter, r *http.Request) {
|
||||
// daily
|
||||
|
||||
func handleDailySeed(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte(daily.Seed()))
|
||||
seed, err := db.GetDailyRunSeed()
|
||||
if err != nil {
|
||||
httpError(w, r, err, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
bytes, err := base64.StdEncoding.DecodeString(seed)
|
||||
if err != nil {
|
||||
httpError(w, r, err, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
_, err = w.Write(bytes)
|
||||
if err != nil {
|
||||
httpError(w, r, err, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func handleDailyRankings(w http.ResponseWriter, r *http.Request) {
|
||||
|
20
db/daily.go
20
db/daily.go
@ -23,13 +23,25 @@ import (
|
||||
"github.com/pagefaultgames/rogueserver/defs"
|
||||
)
|
||||
|
||||
func TryAddDailyRun(seed string) error {
|
||||
_, err := handle.Exec("INSERT INTO dailyRuns (seed, date) VALUES (?, UTC_DATE()) ON DUPLICATE KEY UPDATE date = date", seed)
|
||||
func TryAddDailyRun(seed string) (string, error) {
|
||||
var actualSeed string
|
||||
err := handle.QueryRow("INSERT INTO dailyRuns (seed, date) VALUES (?, UTC_DATE()) ON DUPLICATE KEY UPDATE date = date RETURNING seed", seed).Scan(&actualSeed)
|
||||
if err != nil {
|
||||
return err
|
||||
return "INVALID", err
|
||||
}
|
||||
|
||||
return nil
|
||||
return actualSeed, nil
|
||||
}
|
||||
|
||||
func GetDailyRunSeed() (string, error) {
|
||||
var seed string
|
||||
err := handle.QueryRow("SELECT seed FROM dailyRuns WHERE date = UTC_DATE()").Scan(&seed)
|
||||
if err != nil {
|
||||
return "INVALID", err
|
||||
}
|
||||
|
||||
return seed, nil
|
||||
|
||||
}
|
||||
|
||||
func AddOrUpdateAccountDailyRun(uuid []byte, score int, wave int) error {
|
||||
|
Loading…
x
Reference in New Issue
Block a user