fix continue

pull/3/head
Up 7 months ago
parent 9102b69194
commit cb071d9d9b
No known key found for this signature in database
GPG Key ID: 3B75CD7439FEB388

@ -18,11 +18,7 @@
package account package account
import ( import (
"fmt" "github.com/pagefaultgames/rogueserver/db"
"os"
"strconv"
"time"
"github.com/pagefaultgames/rogueserver/defs" "github.com/pagefaultgames/rogueserver/defs"
) )
@ -33,24 +29,16 @@ type InfoResponse struct {
// /account/info - get account info // /account/info - get account info
func Info(username string, uuid []byte) (InfoResponse, error) { func Info(username string, uuid []byte) (InfoResponse, error) {
var latestSave time.Time response := InfoResponse{Username: username, LastSessionSlot: -1}
latestSaveID := -1
for id := range defs.SessionSlotCount { slot, err := db.GetLatestSessionSaveDataSlot(uuid)
fileName := "session" if err != nil {
if id != 0 { return response, err
fileName += strconv.Itoa(id) }
}
if slot >= defs.SessionSlotCount {
stat, err := os.Stat(fmt.Sprintf("userdata/%x/%s.pzs", uuid, fileName)) response.LastSessionSlot = -1
if err != nil {
continue
}
if stat.ModTime().After(latestSave) {
latestSave = stat.ModTime()
latestSaveID = id
}
} }
return InfoResponse{Username: username, LastSessionSlot: latestSaveID}, nil return response, nil
} }

@ -79,6 +79,16 @@ func ReadSessionSaveData(uuid []byte, slot int) (defs.SessionSaveData, error) {
return save, err return save, err
} }
func GetLatestSessionSaveDataSlot(uuid []byte) (int, error) {
var slot int
err := handle.QueryRow("SELECT slot FROM sessionSaveData WHERE uuid = ? ORDER BY timestamp DESC, slot ASC LIMIT 1", uuid).Scan(&slot)
if err != nil {
return -1, err
}
return slot, nil
}
func StoreSessionSaveData(uuid []byte, data defs.SessionSaveData, slot int) error { func StoreSessionSaveData(uuid []byte, data defs.SessionSaveData, slot int) error {
var buf bytes.Buffer var buf bytes.Buffer

Loading…
Cancel
Save