Files
bd2/go/internal/server/gamedata/quest_costume.go
T

46 lines
1.2 KiB
Go

package gamedata
// LoadQuestCostumes loads only costume rewards referenced by the installed
// quest catalog, using the same character and duplicate-copy metadata as gacha.
func LoadQuestCostumes(root, version string, packs map[int]map[int]QuestDesign, story *StoryCatalog) (*RegularGachaCatalog, error) {
db, closeDB, err := openStatDatabase(root, version)
if err != nil {
return nil, err
}
defer closeDB()
catalog := &RegularGachaCatalog{characters: map[uint64]CharacterDesign{}}
if story != nil {
for _, pack := range story.Packs {
for _, reward := range pack.BuyRewards {
if reward.Type == 11 {
design, err := loadGachaCharacterDesign(db, reward.ID)
if err != nil {
return nil, err
}
catalog.characters[reward.ID] = design
}
}
}
}
for _, quests := range packs {
for _, quest := range quests {
for _, slot := range quest.Rewards {
for _, reward := range slot {
if reward.Type != 11 {
continue
}
if _, exists := catalog.characters[reward.ID]; exists {
continue
}
design, err := loadGachaCharacterDesign(db, reward.ID)
if err != nil {
return nil, err
}
catalog.characters[reward.ID] = design
}
}
}
}
return catalog, nil
}