mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Initial commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package masterdata
|
||||
|
||||
import (
|
||||
"log"
|
||||
"sort"
|
||||
|
||||
"lunar-tear/server/internal/model"
|
||||
"lunar-tear/server/internal/store"
|
||||
"lunar-tear/server/internal/utils"
|
||||
)
|
||||
|
||||
type characterViewerField struct {
|
||||
CharacterViewerFieldId int32 `json:"CharacterViewerFieldId"`
|
||||
ReleaseEvaluateConditionId int32 `json:"ReleaseEvaluateConditionId"`
|
||||
}
|
||||
|
||||
type characterViewerFieldEntry struct {
|
||||
FieldId int32
|
||||
RequiredQuestId int32
|
||||
}
|
||||
|
||||
type CharacterViewerCatalog struct {
|
||||
fields []characterViewerFieldEntry
|
||||
}
|
||||
|
||||
func (c *CharacterViewerCatalog) ReleasedFieldIds(user store.UserState) []int32 {
|
||||
var released []int32
|
||||
for _, f := range c.fields {
|
||||
if f.RequiredQuestId == 0 {
|
||||
released = append(released, f.FieldId)
|
||||
continue
|
||||
}
|
||||
q, ok := user.Quests[f.RequiredQuestId]
|
||||
if ok && q.QuestStateType == model.UserQuestStateTypeCleared {
|
||||
released = append(released, f.FieldId)
|
||||
}
|
||||
}
|
||||
return released
|
||||
}
|
||||
|
||||
func LoadCharacterViewerCatalog(resolver *ConditionResolver) *CharacterViewerCatalog {
|
||||
fields, err := utils.ReadJSON[characterViewerField]("EntityMCharacterViewerFieldTable.json")
|
||||
if err != nil {
|
||||
log.Fatalf("load character viewer field table: %v", err)
|
||||
}
|
||||
|
||||
cat := &CharacterViewerCatalog{}
|
||||
for _, f := range fields {
|
||||
entry := characterViewerFieldEntry{FieldId: f.CharacterViewerFieldId}
|
||||
if qid, ok := resolver.RequiredQuestId(f.ReleaseEvaluateConditionId); ok {
|
||||
entry.RequiredQuestId = qid
|
||||
}
|
||||
cat.fields = append(cat.fields, entry)
|
||||
}
|
||||
|
||||
sort.Slice(cat.fields, func(i, j int) bool {
|
||||
return cat.fields[i].FieldId < cat.fields[j].FieldId
|
||||
})
|
||||
|
||||
log.Printf("character viewer catalog loaded: %d fields", len(cat.fields))
|
||||
return cat
|
||||
}
|
||||
Reference in New Issue
Block a user