37 lines
682 B
Go
37 lines
682 B
Go
package upgrades
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
func (u *Upgrades) RecurseUnavailable(item *Item) []*Item {
|
|
if item.IsAvailable || (item.Condition == nil || item.Condition.ByUpgrade == nil) {
|
|
return []*Item{item}
|
|
}
|
|
|
|
return append(u.RecurseUnavailable((*u)[item.Condition.ByUpgrade.UpgradeID]), item)
|
|
}
|
|
|
|
func (r *Response) UnmarshalJSON(data []byte) error {
|
|
type tempType Response
|
|
var temp *tempType = (*tempType)(r)
|
|
|
|
err := json.Unmarshal(data, temp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
r.Upgrades = make(Upgrades)
|
|
|
|
for _, i := range r.UpgradesArray {
|
|
r.Upgrades[i.ID] = i
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (r *Response) Tick() {
|
|
for _, e := range r.UpgradesArray {
|
|
e.Tick()
|
|
}
|
|
}
|