diff --git a/d2core/d2ui/checkbox.go b/d2core/d2ui/checkbox.go index f2617fc2..fb7fd6e7 100644 --- a/d2core/d2ui/checkbox.go +++ b/d2core/d2ui/checkbox.go @@ -8,6 +8,9 @@ import ( "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" ) +// static check that Checkbox implements Widget +var _ Widget = &Checkbox{} + // Checkbox represents a checkbox UI element type Checkbox struct { *BaseWidget diff --git a/d2core/d2ui/frame.go b/d2core/d2ui/frame.go index f5d7c828..735db3b0 100644 --- a/d2core/d2ui/frame.go +++ b/d2core/d2ui/frame.go @@ -8,6 +8,9 @@ import ( "github.com/OpenDiablo2/OpenDiablo2/d2core/d2asset" ) +// static check that UIFrame implements Widget +var _ Widget = &UIFrame{} + type frameOrientation = int // Frame orientations @@ -228,3 +231,8 @@ func (u *UIFrame) renderFramePiece(sfc d2interface.Surface, x, y, idx int) error return nil } + +// Advance is a no-op +func (u *UIFrame) Advance(elapsed float64) error { + return nil +} diff --git a/d2core/d2ui/label.go b/d2core/d2ui/label.go index 3fa4db4f..aa768ee1 100644 --- a/d2core/d2ui/label.go +++ b/d2core/d2ui/label.go @@ -162,6 +162,11 @@ func (v *Label) getAlignOffset(textWidth int) int { } } +// Advance is a no-op +func (v *Label) Advance(elapsed float64) error { + return nil +} + func getColor(token ColorToken) color.Color { // https://github.com/OpenDiablo2/OpenDiablo2/issues/823 colors := map[ColorToken]color.Color{ diff --git a/d2core/d2ui/scrollbar.go b/d2core/d2ui/scrollbar.go index 399f09ab..18268663 100644 --- a/d2core/d2ui/scrollbar.go +++ b/d2core/d2ui/scrollbar.go @@ -15,6 +15,9 @@ const ( scrollbarWidth = 10 ) +// static check that Scrollbar implements widget +var _ Widget = &Scrollbar{} + // Scrollbar is a vertical slider ui element type Scrollbar struct { *BaseWidget diff --git a/d2core/d2ui/textbox.go b/d2core/d2ui/textbox.go index 0d104af5..256ac2f7 100644 --- a/d2core/d2ui/textbox.go +++ b/d2core/d2ui/textbox.go @@ -10,6 +10,9 @@ import ( "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" ) +// static check that TextBox implements widget +var _ Widget = &TextBox{} + // TextBox represents a text input box type TextBox struct { *BaseWidget diff --git a/d2core/d2ui/tooltip.go b/d2core/d2ui/tooltip.go index 6f514645..0cb4fc89 100644 --- a/d2core/d2ui/tooltip.go +++ b/d2core/d2ui/tooltip.go @@ -14,6 +14,9 @@ const ( screenHeight = 600 ) +// static check that Tooltip implements widget +var _ Widget = &Tooltip{} + // Tooltip contains a label containing text with a transparent, black background type Tooltip struct { *BaseWidget @@ -137,7 +140,7 @@ func (t *Tooltip) GetSize() (sx, sy int) { } // Render draws the tooltip -func (t *Tooltip) Render(target d2interface.Surface) { +func (t *Tooltip) Render(target d2interface.Surface) error { maxW, maxH := t.GetSize() // nolint:gomnd // no magic numbers, their meaning is obvious @@ -189,4 +192,11 @@ func (t *Tooltip) Render(target d2interface.Surface) { } target.PopN(len(t.lines)) + + return nil +} + +// Advance is a no-op +func (t *Tooltip) Advance(elapsed float64) error { + return nil } diff --git a/d2game/d2player/hud.go b/d2game/d2player/hud.go index 290ef07f..390c7c3f 100644 --- a/d2game/d2player/hud.go +++ b/d2game/d2player/hud.go @@ -595,7 +595,10 @@ func (h *HUD) renderMiniPanel(target d2interface.Surface) error { labelY := centerY - halfButtonHeight - labelHeight h.miniPanelTooltip.SetPosition(labelX, labelY) - h.miniPanelTooltip.Render(target) + + if err := h.miniPanelTooltip.Render(target); err != nil { + return err + } } return nil @@ -627,6 +630,7 @@ func (h *HUD) renderNewSkillsButton(x, _ int, target d2interface.Surface) error return nil } +//nolint:golint,dupl // we clean this up later func (h *HUD) renderHealthTooltip(target d2interface.Surface) { mx, my := h.lastMouseX, h.lastMouseY @@ -641,9 +645,13 @@ func (h *HUD) renderHealthTooltip(target d2interface.Surface) { } h.healthTooltip.SetText(strPanelHealth) - h.healthTooltip.Render(target) + + if err := h.healthTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } +//nolint:golint,dupl // we clean this up later func (h *HUD) renderManaTooltip(target d2interface.Surface) { mx, my := h.lastMouseX, h.lastMouseY @@ -657,7 +665,10 @@ func (h *HUD) renderManaTooltip(target d2interface.Surface) { } h.manaTooltip.SetText(strPanelMana) - h.manaTooltip.Render(target) + + if err := h.manaTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } func (h *HUD) renderRunWalkTooltip(target d2interface.Surface) { @@ -679,7 +690,9 @@ func (h *HUD) renderRunWalkTooltip(target d2interface.Surface) { h.runWalkTooltip.SetText(h.asset.TranslateString(stringTableKey)) - h.runWalkTooltip.Render(target) + if err := h.runWalkTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } func (h *HUD) renderStaminaTooltip(target d2interface.Surface) { @@ -696,7 +709,10 @@ func (h *HUD) renderStaminaTooltip(target d2interface.Surface) { strPanelStamina := fmt.Sprintf(fmtStamina, staminaCurr, staminaMax) h.staminaTooltip.SetText(strPanelStamina) - h.staminaTooltip.Render(target) + + if err := h.staminaTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } func (h *HUD) renderExperienceTooltip(target d2interface.Surface) { @@ -720,7 +736,10 @@ func (h *HUD) renderExperienceTooltip(target d2interface.Surface) { strPanelExp := fmt.Sprintf(fmtExp, expCurr, expMax) h.experienceTooltip.SetText(strPanelExp) - h.experienceTooltip.Render(target) + + if err := h.experienceTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } func (h *HUD) renderForSelectableEntitiesHovered(target d2interface.Surface) { diff --git a/d2game/d2player/inventory.go b/d2game/d2player/inventory.go index 1b3352cc..56e7fa75 100644 --- a/d2game/d2player/inventory.go +++ b/d2game/d2player/inventory.go @@ -242,5 +242,8 @@ func (g *Inventory) renderItemDescription(target d2interface.Surface, i Inventor g.itemTooltip.SetTextLines(lines) _, y := g.grid.SlotToScreen(i.InventoryGridSlot()) g.itemTooltip.SetPosition(g.hoverX, y) - g.itemTooltip.Render(target) + + if err := g.itemTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } diff --git a/d2game/d2player/skill_select_panel.go b/d2game/d2player/skill_select_panel.go index d5785c1e..3aa6f5a9 100644 --- a/d2game/d2player/skill_select_panel.go +++ b/d2game/d2player/skill_select_panel.go @@ -129,7 +129,9 @@ func (s *SkillPanel) Render(target d2interface.Surface) error { } if s.hoveredSkill != nil { - s.hoverTooltip.Render(target) + if err := s.hoverTooltip.Render(target); err != nil { + log.Printf("Cannot render tooltip, %e", err) + } } return nil