mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Persist Subjugation Quests triple-deck presets
This commit is contained in:
@@ -14,6 +14,7 @@ func CloneUserState(u UserState) UserState {
|
||||
out.DeckSubWeapons = cloneSliceMap(u.DeckSubWeapons)
|
||||
out.DeckParts = cloneSliceMap(u.DeckParts)
|
||||
out.Decks = maps.Clone(u.Decks)
|
||||
out.TripleDecks = maps.Clone(u.TripleDecks)
|
||||
out.Quests = maps.Clone(u.Quests)
|
||||
out.QuestMissions = maps.Clone(u.QuestMissions)
|
||||
out.WeaponStories = maps.Clone(u.WeaponStories)
|
||||
|
||||
@@ -97,6 +97,7 @@ func SeedUserState(userId int64, uuid string, nowMillis int64, platform model.Cl
|
||||
Companions: make(map[string]CompanionState),
|
||||
DeckCharacters: make(map[string]DeckCharacterState),
|
||||
Decks: make(map[DeckKey]DeckState),
|
||||
TripleDecks: make(map[DeckKey]TripleDeckState),
|
||||
DeckSubWeapons: make(map[string][]string),
|
||||
DeckParts: make(map[string][]string),
|
||||
Quests: make(map[int32]UserQuestState),
|
||||
|
||||
@@ -43,6 +43,7 @@ func initMaps(u *store.UserState) {
|
||||
u.Thoughts = make(map[string]store.ThoughtState)
|
||||
u.DeckCharacters = make(map[string]store.DeckCharacterState)
|
||||
u.Decks = make(map[store.DeckKey]store.DeckState)
|
||||
u.TripleDecks = make(map[store.DeckKey]store.TripleDeckState)
|
||||
u.DeckSubWeapons = make(map[string][]string)
|
||||
u.DeckParts = make(map[string][]string)
|
||||
u.Quests = make(map[int32]store.UserQuestState)
|
||||
@@ -299,6 +300,16 @@ func loadMapTables(db *sql.DB, uid int64, u *store.UserState) {
|
||||
u.Decks[store.DeckKey{DeckType: v.DeckType, UserDeckNumber: v.UserDeckNumber}] = v
|
||||
})
|
||||
|
||||
queryRows(db, `SELECT deck_type, user_deck_number, name, deck_number01, deck_number02, deck_number03, latest_version
|
||||
FROM user_triple_decks WHERE user_id=?`, uid,
|
||||
func(rows *sql.Rows) {
|
||||
var v store.TripleDeckState
|
||||
var dt int32
|
||||
rows.Scan(&dt, &v.UserDeckNumber, &v.Name, &v.DeckNumber01, &v.DeckNumber02, &v.DeckNumber03, &v.LatestVersion)
|
||||
v.DeckType = model.DeckType(dt)
|
||||
u.TripleDecks[store.DeckKey{DeckType: v.DeckType, UserDeckNumber: v.UserDeckNumber}] = v
|
||||
})
|
||||
|
||||
queryRows(db, `SELECT user_deck_character_uuid, ordinal, user_weapon_uuid
|
||||
FROM user_deck_sub_weapons WHERE user_id=? ORDER BY user_deck_character_uuid, ordinal`, uid,
|
||||
func(rows *sql.Rows) {
|
||||
|
||||
@@ -171,6 +171,12 @@ func writeUserState(tx *sql.Tx, uid int64, u *store.UserState) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for k, v := range u.TripleDecks {
|
||||
if err := exec(`INSERT INTO user_triple_decks (user_id, deck_type, user_deck_number, name, deck_number01, deck_number02, deck_number03, latest_version) VALUES (?,?,?,?,?,?,?,?)`,
|
||||
uid, int32(k.DeckType), k.UserDeckNumber, v.Name, v.DeckNumber01, v.DeckNumber02, v.DeckNumber03, v.LatestVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for key, uuids := range u.DeckSubWeapons {
|
||||
for i, uuid := range uuids {
|
||||
if err := exec(`INSERT INTO user_deck_sub_weapons (user_id, user_deck_character_uuid, ordinal, user_weapon_uuid) VALUES (?,?,?,?)`,
|
||||
@@ -713,6 +719,18 @@ func diffAndSave(tx *sql.Tx, uid int64, before, after *store.UserState) error {
|
||||
}
|
||||
}
|
||||
|
||||
for k, v := range after.TripleDecks {
|
||||
if old, ok := before.TripleDecks[k]; !ok || old != v {
|
||||
exec(`INSERT OR REPLACE INTO user_triple_decks (user_id, deck_type, user_deck_number, name, deck_number01, deck_number02, deck_number03, latest_version) VALUES (?,?,?,?,?,?,?,?)`,
|
||||
uid, int32(k.DeckType), k.UserDeckNumber, v.Name, v.DeckNumber01, v.DeckNumber02, v.DeckNumber03, v.LatestVersion)
|
||||
}
|
||||
}
|
||||
for k := range before.TripleDecks {
|
||||
if _, ok := after.TripleDecks[k]; !ok {
|
||||
exec(`DELETE FROM user_triple_decks WHERE user_id=? AND deck_type=? AND user_deck_number=?`, uid, int32(k.DeckType), k.UserDeckNumber)
|
||||
}
|
||||
}
|
||||
|
||||
replaceSliceTable(tx, uid, "user_deck_sub_weapons", after.DeckSubWeapons, func(key string, uuids []string) {
|
||||
for i, uuid := range uuids {
|
||||
exec(`INSERT INTO user_deck_sub_weapons (user_id, user_deck_character_uuid, ordinal, user_weapon_uuid) VALUES (?,?,?,?)`, uid, key, i, uuid)
|
||||
|
||||
@@ -70,6 +70,7 @@ type UserState struct {
|
||||
Thoughts map[string]ThoughtState
|
||||
DeckCharacters map[string]DeckCharacterState
|
||||
Decks map[DeckKey]DeckState
|
||||
TripleDecks map[DeckKey]TripleDeckState
|
||||
Quests map[int32]UserQuestState
|
||||
QuestMissions map[QuestMissionKey]UserQuestMissionState
|
||||
Missions map[int32]UserMissionState
|
||||
@@ -142,6 +143,9 @@ func (u *UserState) EnsureMaps() {
|
||||
if u.Decks == nil {
|
||||
u.Decks = make(map[DeckKey]DeckState)
|
||||
}
|
||||
if u.TripleDecks == nil {
|
||||
u.TripleDecks = make(map[DeckKey]TripleDeckState)
|
||||
}
|
||||
if u.DeckSubWeapons == nil {
|
||||
u.DeckSubWeapons = make(map[string][]string)
|
||||
}
|
||||
@@ -455,6 +459,16 @@ type DeckState struct {
|
||||
LatestVersion int64
|
||||
}
|
||||
|
||||
type TripleDeckState struct {
|
||||
DeckType model.DeckType
|
||||
UserDeckNumber int32
|
||||
Name string
|
||||
DeckNumber01 int32
|
||||
DeckNumber02 int32
|
||||
DeckNumber03 int32
|
||||
LatestVersion int64
|
||||
}
|
||||
|
||||
type DeckCharacterInput struct {
|
||||
UserCostumeUuid string
|
||||
MainUserWeaponUuid string
|
||||
|
||||
Reference in New Issue
Block a user