mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Implement remaining Memoirs preset management RPCs
This commit is contained in:
@@ -31,6 +31,7 @@ func CloneUserState(u UserState) UserState {
|
||||
out.Parts = maps.Clone(u.Parts)
|
||||
out.PartsGroupNotes = maps.Clone(u.PartsGroupNotes)
|
||||
out.PartsPresets = maps.Clone(u.PartsPresets)
|
||||
out.PartsPresetTags = maps.Clone(u.PartsPresetTags)
|
||||
out.PartsStatusSubs = maps.Clone(u.PartsStatusSubs)
|
||||
out.ImportantItems = maps.Clone(u.ImportantItems)
|
||||
out.CostumeActiveSkills = maps.Clone(u.CostumeActiveSkills)
|
||||
|
||||
@@ -130,6 +130,7 @@ func SeedUserState(userId int64, uuid string, nowMillis int64, platform model.Cl
|
||||
Parts: make(map[string]PartsState),
|
||||
PartsGroupNotes: make(map[int32]PartsGroupNoteState),
|
||||
PartsPresets: make(map[int32]PartsPresetState),
|
||||
PartsPresetTags: make(map[int32]PartsPresetTagState),
|
||||
PartsStatusSubs: make(map[PartsStatusSubKey]PartsStatusSubState),
|
||||
ImportantItems: make(map[int32]int32),
|
||||
CostumeActiveSkills: make(map[string]CostumeActiveSkillState),
|
||||
|
||||
@@ -61,6 +61,7 @@ func initMaps(u *store.UserState) {
|
||||
u.Parts = make(map[string]store.PartsState)
|
||||
u.PartsGroupNotes = make(map[int32]store.PartsGroupNoteState)
|
||||
u.PartsPresets = make(map[int32]store.PartsPresetState)
|
||||
u.PartsPresetTags = make(map[int32]store.PartsPresetTagState)
|
||||
u.PartsStatusSubs = make(map[store.PartsStatusSubKey]store.PartsStatusSubState)
|
||||
u.DeckTypeNotes = make(map[model.DeckType]store.DeckTypeNoteState)
|
||||
u.ConsumableItems = make(map[int32]int32)
|
||||
@@ -492,6 +493,14 @@ func loadMapTables(db *sql.DB, uid int64, u *store.UserState) {
|
||||
u.PartsPresets[v.UserPartsPresetNumber] = v
|
||||
})
|
||||
|
||||
queryRows(db, `SELECT user_parts_preset_tag_number, name, latest_version
|
||||
FROM user_parts_preset_tags WHERE user_id=?`, uid,
|
||||
func(rows *sql.Rows) {
|
||||
var v store.PartsPresetTagState
|
||||
rows.Scan(&v.UserPartsPresetTagNumber, &v.Name, &v.LatestVersion)
|
||||
u.PartsPresetTags[v.UserPartsPresetTagNumber] = v
|
||||
})
|
||||
|
||||
queryRows(db, `SELECT user_parts_uuid, status_index, parts_status_sub_lottery_id, level,
|
||||
status_kind_type, status_calculation_type, status_change_value, latest_version
|
||||
FROM user_parts_status_subs WHERE user_id=?`, uid,
|
||||
|
||||
@@ -312,6 +312,12 @@ func writeUserState(tx *sql.Tx, uid int64, u *store.UserState) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for _, v := range u.PartsPresetTags {
|
||||
if err := exec(`INSERT INTO user_parts_preset_tags (user_id, user_parts_preset_tag_number, name, latest_version) VALUES (?,?,?,?)`,
|
||||
uid, v.UserPartsPresetTagNumber, v.Name, v.LatestVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for _, v := range u.PartsStatusSubs {
|
||||
if err := exec(`INSERT INTO user_parts_status_subs (user_id, user_parts_uuid, status_index, parts_status_sub_lottery_id, level, status_kind_type, status_calculation_type, status_change_value, latest_version) VALUES (?,?,?,?,?,?,?,?,?)`,
|
||||
uid, v.UserPartsUuid, v.StatusIndex, v.PartsStatusSubLotteryId, v.Level, v.StatusKindType, v.StatusCalculationType, v.StatusChangeValue, v.LatestVersion); err != nil {
|
||||
@@ -862,6 +868,10 @@ func diffAndSave(tx *sql.Tx, uid int64, before, after *store.UserState) error {
|
||||
func(v store.PartsPresetState) []any {
|
||||
return []any{v.UserPartsPresetNumber, v.UserPartsUuid01, v.UserPartsUuid02, v.UserPartsUuid03, v.Name, v.UserPartsPresetTagNumber, v.LatestVersion}
|
||||
}, "user_parts_preset_number, user_parts_uuid01, user_parts_uuid02, user_parts_uuid03, name, user_parts_preset_tag_number, latest_version")
|
||||
diffMapInt32(tx, uid, before.PartsPresetTags, after.PartsPresetTags, "user_parts_preset_tags", "user_parts_preset_tag_number",
|
||||
func(v store.PartsPresetTagState) []any {
|
||||
return []any{v.UserPartsPresetTagNumber, v.Name, v.LatestVersion}
|
||||
}, "user_parts_preset_tag_number, name, latest_version")
|
||||
|
||||
for k, v := range after.PartsStatusSubs {
|
||||
if old, ok := before.PartsStatusSubs[k]; !ok || old != v {
|
||||
|
||||
@@ -119,6 +119,7 @@ func (s *SQLiteStore) ImportUser(u *store.UserState) error {
|
||||
"user_decks",
|
||||
"user_deck_characters",
|
||||
"user_parts_status_subs",
|
||||
"user_parts_preset_tags",
|
||||
"user_parts_presets",
|
||||
"user_parts_group_notes",
|
||||
"user_parts",
|
||||
|
||||
@@ -82,6 +82,7 @@ type UserState struct {
|
||||
Parts map[string]PartsState
|
||||
PartsGroupNotes map[int32]PartsGroupNoteState
|
||||
PartsPresets map[int32]PartsPresetState
|
||||
PartsPresetTags map[int32]PartsPresetTagState
|
||||
PartsStatusSubs map[PartsStatusSubKey]PartsStatusSubState
|
||||
ImportantItems map[int32]int32
|
||||
CostumeActiveSkills map[string]CostumeActiveSkillState
|
||||
@@ -206,6 +207,9 @@ func (u *UserState) EnsureMaps() {
|
||||
if u.PartsPresets == nil {
|
||||
u.PartsPresets = make(map[int32]PartsPresetState)
|
||||
}
|
||||
if u.PartsPresetTags == nil {
|
||||
u.PartsPresetTags = make(map[int32]PartsPresetTagState)
|
||||
}
|
||||
if u.PartsStatusSubs == nil {
|
||||
u.PartsStatusSubs = make(map[PartsStatusSubKey]PartsStatusSubState)
|
||||
}
|
||||
@@ -890,6 +894,12 @@ type PartsPresetState struct {
|
||||
LatestVersion int64
|
||||
}
|
||||
|
||||
type PartsPresetTagState struct {
|
||||
UserPartsPresetTagNumber int32
|
||||
Name string
|
||||
LatestVersion int64
|
||||
}
|
||||
|
||||
type PartsStatusSubKey struct {
|
||||
UserPartsUuid string
|
||||
StatusIndex int32
|
||||
|
||||
Reference in New Issue
Block a user