1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-09-30 07:06:18 -04:00
OpenDiablo2/d2game/d2player/skillicon.go
gucio321 2153f5ce64
implemented logger in d2gamescreen (#925)
* implemented logger in d2gamescreen

* logger in d2game/d2player

* logger for app.go
2020-11-18 13:02:49 -08:00

102 lines
2.2 KiB
Go

package d2player
import (
"strconv"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2util"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2hero"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2ui"
)
const (
skillLabelXOffset = 49
skillLabelYOffset = -4
skillIconXOff = 346
skillIconYOff = 59
skillIconDistX = 69
skillIconDistY = 68
)
func newSkillIcon(ui *d2ui.UIManager,
baseSprite *d2ui.Sprite,
l d2util.LogLevel,
skill *d2hero.HeroSkill) *skillIcon {
base := d2ui.NewBaseWidget(ui)
label := ui.NewLabel(d2resource.Font16, d2resource.PaletteSky)
x := skillIconXOff + skill.SkillColumn*skillIconDistX
y := skillIconYOff + skill.SkillRow*skillIconDistY
res := &skillIcon{
BaseWidget: base,
sprite: baseSprite,
skill: skill,
lvlLabel: label,
}
res.logger = d2util.NewLogger()
res.logger.SetLevel(l)
res.logger.SetPrefix(logPrefix)
res.SetPosition(x, y)
return res
}
type skillIcon struct {
*d2ui.BaseWidget
lvlLabel *d2ui.Label
sprite *d2ui.Sprite
skill *d2hero.HeroSkill
logger *d2util.Logger
}
func (si *skillIcon) SetVisible(visible bool) {
si.BaseWidget.SetVisible(visible)
si.lvlLabel.SetVisible(visible)
}
func (si *skillIcon) renderSprite(target d2interface.Surface) {
x, y := si.GetPosition()
if err := si.sprite.SetCurrentFrame(si.skill.IconCel); err != nil {
si.logger.Error("Cannot set Frame %e" + err.Error())
return
}
if si.skill.SkillPoints == 0 {
target.PushSaturation(skillIconGreySat)
defer target.Pop()
target.PushBrightness(skillIconGreyBright)
defer target.Pop()
}
si.sprite.SetPosition(x, y)
si.sprite.Render(target)
}
func (si *skillIcon) renderSpriteLabel(target d2interface.Surface) {
if si.skill.SkillPoints == 0 {
return
}
x, y := si.GetPosition()
si.lvlLabel.SetText(strconv.Itoa(si.skill.SkillPoints))
si.lvlLabel.SetPosition(x+skillLabelXOffset, y+skillLabelYOffset)
si.lvlLabel.Render(target)
}
func (si *skillIcon) Render(target d2interface.Surface) {
si.renderSprite(target)
si.renderSpriteLabel(target)
}
func (si *skillIcon) Advance(elapsed float64) error {
return nil
}