107 lines
3.5 KiB
Go
107 lines
3.5 KiB
Go
package model
|
|
|
|
// OptimizeStat represents a stat type/value pair.
|
|
type OptimizeStat struct {
|
|
Type string `json:"type"`
|
|
Value float64 `json:"value"`
|
|
}
|
|
|
|
// OptimizeItem represents the minimal item shape needed by the optimizer.
|
|
type OptimizeItem struct {
|
|
ID interface{} `json:"id"`
|
|
Gear string `json:"gear"`
|
|
Set string `json:"set"`
|
|
F string `json:"f"`
|
|
Main *OptimizeStat `json:"main,omitempty"`
|
|
Substats []OptimizeStat `json:"substats,omitempty"`
|
|
}
|
|
|
|
// OptimizeHero represents the minimal hero shape needed by the optimizer.
|
|
type OptimizeHero struct {
|
|
ID interface{} `json:"id"`
|
|
Code string `json:"code"`
|
|
Name string `json:"name"`
|
|
Atk float64 `json:"atk"`
|
|
Def float64 `json:"def"`
|
|
Hp float64 `json:"hp"`
|
|
Spd float64 `json:"spd"`
|
|
Cr float64 `json:"cr"`
|
|
Cd float64 `json:"cd"`
|
|
Eff float64 `json:"eff"`
|
|
Res float64 `json:"res"`
|
|
BaseAtk float64 `json:"baseAtk"`
|
|
BaseDef float64 `json:"baseDef"`
|
|
BaseHp float64 `json:"baseHp"`
|
|
BaseSpd float64 `json:"baseSpd"`
|
|
BaseCr float64 `json:"baseCr"`
|
|
BaseCd float64 `json:"baseCd"`
|
|
BaseEff float64 `json:"baseEff"`
|
|
BaseRes float64 `json:"baseRes"`
|
|
}
|
|
|
|
// StatRange defines a min/max filter.
|
|
type StatRange struct {
|
|
Min *float64 `json:"min,omitempty"`
|
|
Max *float64 `json:"max,omitempty"`
|
|
}
|
|
|
|
// SetFilters defines set filter groups.
|
|
type SetFilters struct {
|
|
Set1 []string `json:"set1"`
|
|
Set2 []string `json:"set2"`
|
|
Set3 []string `json:"set3"`
|
|
}
|
|
|
|
// BonusStats are hero-specific bonus modifiers.
|
|
type BonusStats struct {
|
|
Atk float64 `json:"atk"`
|
|
Def float64 `json:"def"`
|
|
Hp float64 `json:"hp"`
|
|
AtkPct float64 `json:"atkPct"`
|
|
DefPct float64 `json:"defPct"`
|
|
HpPct float64 `json:"hpPct"`
|
|
Spd float64 `json:"spd"`
|
|
Cr float64 `json:"cr"`
|
|
Cd float64 `json:"cd"`
|
|
Eff float64 `json:"eff"`
|
|
Res float64 `json:"res"`
|
|
FinalAtkMultiplier float64 `json:"finalAtkMultiplier"`
|
|
FinalDefMultiplier float64 `json:"finalDefMultiplier"`
|
|
FinalHpMultiplier float64 `json:"finalHpMultiplier"`
|
|
}
|
|
|
|
// OptimizeRequest represents optimizer input.
|
|
type OptimizeRequest struct {
|
|
HeroID string `json:"heroId"`
|
|
SetFilters SetFilters `json:"setFilters"`
|
|
StatFilters map[string]StatRange `json:"statFilters"`
|
|
MainStatFilters map[string]string `json:"mainStatFilters"`
|
|
WeightValues map[string]float64 `json:"weightValues"`
|
|
BonusStats BonusStats `json:"bonusStats"`
|
|
MaxItemsPerSlot int `json:"maxItemsPerSlot"`
|
|
MaxCombos int `json:"maxCombos"`
|
|
MaxResults int `json:"maxResults"`
|
|
}
|
|
|
|
// OptimizeResult is a single build result.
|
|
type OptimizeResult struct {
|
|
Key string `json:"key"`
|
|
Sets string `json:"sets"`
|
|
Atk float64 `json:"atk"`
|
|
Def float64 `json:"def"`
|
|
Hp float64 `json:"hp"`
|
|
Spd float64 `json:"spd"`
|
|
Cr float64 `json:"cr"`
|
|
Cd float64 `json:"cd"`
|
|
Acc float64 `json:"acc"`
|
|
Res float64 `json:"res"`
|
|
Score float64 `json:"score"`
|
|
Items []OptimizeItem `json:"items"`
|
|
}
|
|
|
|
// OptimizeResponse is the optimizer output.
|
|
type OptimizeResponse struct {
|
|
TotalCombos int `json:"totalCombos"`
|
|
Results []OptimizeResult `json:"results"`
|
|
}
|