OpenDiablo2/d2core/d2stats/diablo2stats/stat_value_stringers.go

84 lines
1.9 KiB
Go

package diablo2stats
import (
"fmt"
"github.com/OpenDiablo2/OpenDiablo2/d2common"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2data/d2datadict"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2stats"
)
const (
monsterNotFound = "{Monster not found!}"
)
func getHeroMap() []d2enum.Hero {
return []d2enum.Hero{
d2enum.HeroAmazon,
d2enum.HeroSorceress,
d2enum.HeroNecromancer,
d2enum.HeroPaladin,
d2enum.HeroBarbarian,
d2enum.HeroDruid,
d2enum.HeroAssassin,
}
}
func stringerUnsignedInt(sv d2stats.StatValue) string {
return fmt.Sprintf("%d", sv.Int())
}
func stringerUnsignedFloat(sv d2stats.StatValue) string {
return fmt.Sprintf("%.2f", sv.Float())
}
func stringerEmpty(_ d2stats.StatValue) string {
return ""
}
func stringerIntSigned(sv d2stats.StatValue) string {
return fmt.Sprintf("%+d", sv.Int())
}
func stringerIntPercentageSigned(sv d2stats.StatValue) string {
return fmt.Sprintf("%+d%%", sv.Int())
}
func stringerIntPercentageUnsigned(sv d2stats.StatValue) string {
return fmt.Sprintf("%d%%", sv.Int())
}
func stringerClassAllSkills(sv d2stats.StatValue) string {
heroIndex := sv.Int()
heroMap := getHeroMap()
classRecord := d2datadict.CharStats[heroMap[heroIndex]]
return d2common.TranslateString(classRecord.SkillStrAll)
}
func stringerClassOnly(sv d2stats.StatValue) string {
heroMap := getHeroMap()
heroIndex := sv.Int()
classRecord := d2datadict.CharStats[heroMap[heroIndex]]
classOnlyKey := classRecord.SkillStrClassOnly
return d2common.TranslateString(classOnlyKey)
}
func stringerSkillName(sv d2stats.StatValue) string {
skillRecord := d2datadict.SkillDetails[sv.Int()]
return skillRecord.Skill
}
func stringerMonsterName(sv d2stats.StatValue) string {
for key := range d2datadict.MonStats {
if d2datadict.MonStats[key].ID == sv.Int() {
return d2datadict.MonStats[key].NameString
}
}
return monsterNotFound
}