You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.0 KiB
56 lines
1.0 KiB
package items
|
|
|
|
import "git.aiterp.net/stufflog3/stufflog3/entities"
|
|
|
|
type Result struct {
|
|
entities.Item
|
|
|
|
Stats []ResultStat `json:"stats"`
|
|
}
|
|
|
|
func (r *Result) Stat(statID int) *ResultStat {
|
|
for _, stat := range r.Stats {
|
|
if stat.ID == statID {
|
|
return &stat
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type ResultStat struct {
|
|
ID int `json:"id"`
|
|
Name string `json:"name"`
|
|
Weight float64 `json:"weight"`
|
|
Acquired int `json:"acquired"`
|
|
Required int `json:"required"`
|
|
}
|
|
|
|
func generateResult(item entities.Item, progresses []entities.ItemProgress, stats []entities.Stat) Result {
|
|
res := Result{
|
|
Item: item,
|
|
Stats: make([]ResultStat, 0, 8),
|
|
}
|
|
|
|
for _, prog := range progresses {
|
|
if prog.ItemID != item.ID {
|
|
continue
|
|
}
|
|
|
|
for _, stat := range stats {
|
|
if stat.ID == prog.StatID {
|
|
res.Stats = append(res.Stats, ResultStat{
|
|
ID: stat.ID,
|
|
Name: stat.Name,
|
|
Weight: stat.Weight,
|
|
Acquired: prog.Acquired,
|
|
Required: prog.Required,
|
|
})
|
|
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
return res
|
|
}
|