|
|
@ -8,8 +8,10 @@ import ( |
|
|
|
type Result struct { |
|
|
|
entities.Item |
|
|
|
|
|
|
|
Requirement *entities.Requirement `json:"requirement,omitempty"` |
|
|
|
Stats []ResultStat `json:"stats"` |
|
|
|
Requirement *entities.Requirement `json:"requirement,omitempty"` |
|
|
|
Stats []ResultStat `json:"stats"` |
|
|
|
WeightedAcquired float64 `json:"weightedAcquired"` |
|
|
|
WeightedRequired float64 `json:"weightedRequired"` |
|
|
|
} |
|
|
|
|
|
|
|
func (r *Result) Stat(statID int) *ResultStat { |
|
|
@ -53,6 +55,7 @@ func (r *Result) AddStat(scope scopes.Result, stat entities.ItemStat) { |
|
|
|
Required: stat.Required, |
|
|
|
}) |
|
|
|
r.SortStats(scope) |
|
|
|
r.RecalculateWeighted() |
|
|
|
} |
|
|
|
|
|
|
|
func (r *Result) SortStats(scope scopes.Result) { |
|
|
@ -76,6 +79,18 @@ func (r *Result) RemoveStat(id int) { |
|
|
|
r.Stats = append(r.Stats[:i], r.Stats[i+1:]...) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
r.RecalculateWeighted() |
|
|
|
} |
|
|
|
|
|
|
|
func (r *Result) RecalculateWeighted() { |
|
|
|
r.WeightedAcquired = 0 |
|
|
|
r.WeightedRequired = 0 |
|
|
|
|
|
|
|
for _, stat := range r.Stats { |
|
|
|
r.WeightedAcquired += float64(stat.Acquired) * stat.Weight |
|
|
|
r.WeightedRequired += float64(stat.Required) * stat.Weight |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
type ResultStat struct { |
|
|
@ -121,6 +136,7 @@ func generateResult(item entities.Item, scope scopes.Result, progresses []entiti |
|
|
|
} |
|
|
|
|
|
|
|
res.SortStats(scope) |
|
|
|
res.RecalculateWeighted() |
|
|
|
|
|
|
|
return res |
|
|
|
} |