From 77cd538c2f8995845280fcbcc606624eeff74dbc Mon Sep 17 00:00:00 2001 From: juander Date: Mon, 9 Nov 2020 18:04:56 +0100 Subject: [PATCH] d2ui/sprite: Refactor Render() to RenderNoError() this allows us to create a Render() method that implements the Widget interface without killing us with linter warnings. --- d2core/d2ui/frame.go | 2 +- d2core/d2ui/sprite.go | 11 ++++++++++- d2core/d2ui/textbox.go | 2 +- d2game/d2gamescreen/main_menu.go | 8 ++++---- d2game/d2gamescreen/select_hero_class.go | 4 ++-- d2game/d2player/help_overlay.go | 2 +- d2game/d2player/hero_stats_panel.go | 2 +- d2game/d2player/hud.go | 24 ++++++++++++------------ d2game/d2player/inventory.go | 2 +- d2game/d2player/inventory_grid.go | 2 +- d2game/d2player/mini_panel.go | 4 ++-- d2game/d2player/skill_select_panel.go | 2 +- d2game/d2player/skilltree.go | 4 ++-- 13 files changed, 39 insertions(+), 30 deletions(-) diff --git a/d2core/d2ui/frame.go b/d2core/d2ui/frame.go index 735db3b0..095d9acd 100644 --- a/d2core/d2ui/frame.go +++ b/d2core/d2ui/frame.go @@ -227,7 +227,7 @@ func (u *UIFrame) renderFramePiece(sfc d2interface.Surface, x, y, idx int) error u.frame.SetPosition(x, y) - u.frame.Render(sfc) + u.frame.RenderNoError(sfc) return nil } diff --git a/d2core/d2ui/sprite.go b/d2core/d2ui/sprite.go index fd28bafb..e9c3cdf6 100644 --- a/d2core/d2ui/sprite.go +++ b/d2core/d2ui/sprite.go @@ -11,6 +11,9 @@ import ( "github.com/OpenDiablo2/OpenDiablo2/d2common/d2math" ) +// static check that Sprite implements Widget +var _ Widget = &Sprite{} + // Sprite is a positioned visual object. type Sprite struct { *BaseWidget @@ -38,7 +41,13 @@ func (ui *UIManager) NewSprite(animationPath, palettePath string) (*Sprite, erro } // Render renders the sprite on the given surface -func (s *Sprite) Render(target d2interface.Surface) { +func (s *Sprite) Render(target d2interface.Surface) error { + s.RenderNoError(target) + return nil +} + +// RenderNoError renders the sprite on the given surface +func (s *Sprite) RenderNoError(target d2interface.Surface) { _, frameHeight := s.animation.GetCurrentFrameSize() target.PushTranslation(s.x, s.y-frameHeight) diff --git a/d2core/d2ui/textbox.go b/d2core/d2ui/textbox.go index a63327d2..de914f6c 100644 --- a/d2core/d2ui/textbox.go +++ b/d2core/d2ui/textbox.go @@ -61,7 +61,7 @@ func (v *TextBox) Render(target d2interface.Surface) error { return nil } - v.bgSprite.Render(target) + v.bgSprite.RenderNoError(target) v.textLabel.RenderNoError(target) if (time.Now().UnixNano()/1e6)&(1<<8) > 0 { diff --git a/d2game/d2gamescreen/main_menu.go b/d2game/d2gamescreen/main_menu.go index b722a5d1..1e424b2d 100644 --- a/d2game/d2gamescreen/main_menu.go +++ b/d2game/d2gamescreen/main_menu.go @@ -452,10 +452,10 @@ func (v *MainMenu) renderBackgrounds(screen d2interface.Surface) { func (v *MainMenu) renderLogos(screen d2interface.Surface) { switch v.screenMode { case ScreenModeTrademark, ScreenModeMainMenu, ScreenModeMultiplayer: - v.diabloLogoLeftBack.Render(screen) - v.diabloLogoRightBack.Render(screen) - v.diabloLogoLeft.Render(screen) - v.diabloLogoRight.Render(screen) + v.diabloLogoLeftBack.RenderNoError(screen) + v.diabloLogoRightBack.RenderNoError(screen) + v.diabloLogoLeft.RenderNoError(screen) + v.diabloLogoRight.RenderNoError(screen) } } diff --git a/d2game/d2gamescreen/select_hero_class.go b/d2game/d2gamescreen/select_hero_class.go index 678c0df1..56ee9fb3 100644 --- a/d2game/d2gamescreen/select_hero_class.go +++ b/d2game/d2gamescreen/select_hero_class.go @@ -536,7 +536,7 @@ func (v *SelectHeroClass) Render(screen d2interface.Surface) { } } - v.campfire.Render(screen) + v.campfire.RenderNoError(screen) if v.heroNameTextbox.GetVisible() { v.heroNameLabel.RenderNoError(screen) @@ -739,7 +739,7 @@ func setSpriteToFirstFrame(sprite *d2ui.Sprite) { func drawSprite(sprite *d2ui.Sprite, target d2interface.Surface) { if sprite != nil { - sprite.Render(target) + sprite.RenderNoError(target) } } diff --git a/d2game/d2player/help_overlay.go b/d2game/d2player/help_overlay.go index 496d9e98..2608e266 100644 --- a/d2game/d2player/help_overlay.go +++ b/d2game/d2player/help_overlay.go @@ -620,7 +620,7 @@ func (h *HelpOverlay) Render(target d2interface.Surface) error { } for _, f := range h.frames { - f.Render(target) + f.RenderNoError(target) } for _, t := range h.text { diff --git a/d2game/d2player/hero_stats_panel.go b/d2game/d2player/hero_stats_panel.go index b4599910..4c0ddf0c 100644 --- a/d2game/d2player/hero_stats_panel.go +++ b/d2game/d2player/hero_stats_panel.go @@ -242,7 +242,7 @@ func (s *HeroStatsPanel) renderStaticPanelFrames(target d2interface.Surface) err s.panel.SetPosition(currentX-w, currentY+h) } - s.panel.Render(target) + s.panel.RenderNoError(target) } return nil diff --git a/d2game/d2player/hud.go b/d2game/d2player/hud.go index 538ee6e1..a8f3b1d2 100644 --- a/d2game/d2player/hud.go +++ b/d2game/d2player/hud.go @@ -391,7 +391,7 @@ func (h *HUD) renderManaGlobe(x, _ int, target d2interface.Surface) error { h.mainPanel.SetPosition(x, height) - h.mainPanel.Render(target) + h.mainPanel.RenderNoError(target) // Mana status bar manaPercent := float64(h.hero.Stats.Mana) / float64(h.hero.Stats.MaxMana) @@ -413,8 +413,8 @@ func (h *HUD) renderManaGlobe(x, _ int, target d2interface.Surface) error { h.globeSprite.SetPosition(x+rightGlobeOffsetX, height+rightGlobeOffsetY) - h.globeSprite.Render(target) - h.globeSprite.Render(target) + h.globeSprite.RenderNoError(target) + h.globeSprite.RenderNoError(target) return nil } @@ -438,7 +438,7 @@ func (h *HUD) renderHealthGlobe(x, y int, target d2interface.Surface) error { } h.globeSprite.SetPosition(x+globeSpriteOffsetX, y+globeSpriteOffsetY) - h.globeSprite.Render(target) + h.globeSprite.RenderNoError(target) return nil } @@ -449,7 +449,7 @@ func (h *HUD) renderPanel(x, y int, target d2interface.Surface) error { } h.mainPanel.SetPosition(x, y) - h.mainPanel.Render(target) + h.mainPanel.RenderNoError(target) return nil } @@ -466,7 +466,7 @@ func (h *HUD) renderLeftSkill(x, y int, target d2interface.Surface) error { } h.leftSkillResource.SkillIcon.SetPosition(x, y) - h.leftSkillResource.SkillIcon.Render(target) + h.leftSkillResource.SkillIcon.RenderNoError(target) return nil } @@ -485,7 +485,7 @@ func (h *HUD) renderRightSkill(x, _ int, target d2interface.Surface) error { } h.rightSkillResource.SkillIcon.SetPosition(x, height) - h.rightSkillResource.SkillIcon.Render(target) + h.rightSkillResource.SkillIcon.RenderNoError(target) return nil } @@ -496,7 +496,7 @@ func (h *HUD) renderNewStatsButton(x, y int, target d2interface.Surface) error { } h.mainPanel.SetPosition(x, y) - h.mainPanel.Render(target) + h.mainPanel.RenderNoError(target) return nil } @@ -507,7 +507,7 @@ func (h *HUD) renderStamina(x, y int, target d2interface.Surface) error { } h.mainPanel.SetPosition(x, y) - h.mainPanel.Render(target) + h.mainPanel.RenderNoError(target) return nil } @@ -558,7 +558,7 @@ func (h *HUD) renderMiniPanel(target d2interface.Surface) error { buttonX, buttonY := (width>>1)+miniPanelButtonOffsetX, height+miniPanelButtonOffsetY h.menuButton.SetPosition(buttonX, buttonY) - h.menuButton.Render(target) + h.menuButton.RenderNoError(target) h.miniPanel.Render(target) miniPanelButtons := map[actionableType]string{ @@ -612,7 +612,7 @@ func (h *HUD) renderPotions(x, _ int, target d2interface.Surface) error { } h.mainPanel.SetPosition(x, height) - h.mainPanel.Render(target) + h.mainPanel.RenderNoError(target) return nil } @@ -625,7 +625,7 @@ func (h *HUD) renderNewSkillsButton(x, _ int, target d2interface.Surface) error } h.mainPanel.SetPosition(x, height) - h.mainPanel.Render(target) + h.mainPanel.RenderNoError(target) return nil } diff --git a/d2game/d2player/inventory.go b/d2game/d2player/inventory.go index 56e7fa75..4b970b8a 100644 --- a/d2game/d2player/inventory.go +++ b/d2game/d2player/inventory.go @@ -196,7 +196,7 @@ func (g *Inventory) renderFrame(target d2interface.Surface) error { w, h := g.panel.GetCurrentFrameSize() g.panel.SetPosition(x, y+h) - g.panel.Render(target) + g.panel.RenderNoError(target) switch frame { case frameInventoryTopLeft: diff --git a/d2game/d2player/inventory_grid.go b/d2game/d2player/inventory_grid.go index 2c30a648..771c49b2 100644 --- a/d2game/d2player/inventory_grid.go +++ b/d2game/d2player/inventory_grid.go @@ -234,7 +234,7 @@ func (g *ItemGrid) renderItem(item InventoryItem, target d2interface.Surface, x, if itemSprite != nil { itemSprite.SetPosition(x, y) itemSprite.GetCurrentFrameSize() - itemSprite.Render(target) + itemSprite.RenderNoError(target) } } diff --git a/d2game/d2player/mini_panel.go b/d2game/d2player/mini_panel.go index b2be6eb9..f69dd07a 100644 --- a/d2game/d2player/mini_panel.go +++ b/d2game/d2player/mini_panel.go @@ -104,7 +104,7 @@ func (m *miniPanel) Render(target d2interface.Surface) { m.container.SetPosition(x, y) - m.container.Render(target) + m.container.RenderNoError(target) buttonWidth, _ := m.button.GetCurrentFrameSize() buttonWidth++ @@ -122,7 +122,7 @@ func (m *miniPanel) Render(target d2interface.Surface) { x, y := halfW+offsetX, height+buttonOffsetY m.button.SetPosition(x, y) - m.button.Render(target) + m.button.RenderNoError(target) j += 2 } diff --git a/d2game/d2player/skill_select_panel.go b/d2game/d2player/skill_select_panel.go index 3aa6f5a9..cb7507fa 100644 --- a/d2game/d2player/skill_select_panel.go +++ b/d2game/d2player/skill_select_panel.go @@ -242,7 +242,7 @@ func (s *SkillPanel) createSkillListImage(skillsListRow *SkillListRow) (d2interf } surface.PushTranslation(idx*skillIconWidth, 50) - skillSprite.Render(surface) + skillSprite.RenderNoError(surface) surface.Pop() } diff --git a/d2game/d2player/skilltree.go b/d2game/d2player/skilltree.go index 7f3cf865..e8d39553 100644 --- a/d2game/d2player/skilltree.go +++ b/d2game/d2player/skilltree.go @@ -387,7 +387,7 @@ func (s *skillTree) renderPanelSegment( return err } - s.resources.skillPanel.Render(target) + s.resources.skillPanel.RenderNoError(target) return nil } @@ -531,7 +531,7 @@ func (s *skillTree) renderSkillIcon(target d2interface.Surface, skill *d2hero.He defer target.Pop() } - skillIcon.Render(target) + skillIcon.RenderNoError(target) return nil }