From 5cd404e4a542cb2305f2b559d4f18ef35a3be5ce Mon Sep 17 00:00:00 2001 From: gucio321 <73652197+gucio321@users.noreply.github.com> Date: Thu, 7 Jan 2021 06:53:01 +0100 Subject: [PATCH] d2ui.Frame refactor (#994) * d2ui.Frame refactor * removed unneccessery d2asset.AssetManager argument from d2ui.NewUIFrame * d2ui.Frame refactor * removed unneccessery d2asset.AssetManager argument from d2ui.NewUIFrame Co-authored-by: M. Sz Co-authored-by: Tim Sarbin Co-authored-by: gravestench --- d2core/d2ui/frame.go | 45 ++++++++++++----------------- d2game/d2player/hero_stats_panel.go | 2 +- d2game/d2player/inventory.go | 2 +- d2game/d2player/quest_log.go | 2 +- d2game/d2player/skilltree.go | 5 ++-- 5 files changed, 24 insertions(+), 32 deletions(-) diff --git a/d2core/d2ui/frame.go b/d2core/d2ui/frame.go index 4d66c1cd..4255d61e 100644 --- a/d2core/d2ui/frame.go +++ b/d2core/d2ui/frame.go @@ -3,7 +3,7 @@ package d2ui import ( "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" - "github.com/OpenDiablo2/OpenDiablo2/d2core/d2asset" + "github.com/OpenDiablo2/OpenDiablo2/d2common/d2util" ) // static check that UIFrame implements Widget @@ -21,9 +21,9 @@ const ( // when it is visible. type UIFrame struct { *BaseWidget - asset *d2asset.AssetManager frame *Sprite frameOrientation frameOrientation + *d2util.Logger } // frame indices into dc6 images for panels @@ -41,11 +41,7 @@ const ( ) // NewUIFrame creates a new Frame instance -func NewUIFrame( - asset *d2asset.AssetManager, - uiManager *UIManager, - frameOrientation frameOrientation, -) *UIFrame { +func (ui *UIManager) NewUIFrame(frameOrientation frameOrientation) *UIFrame { var originX, originY = 0, 0 switch frameOrientation { @@ -57,32 +53,29 @@ func NewUIFrame( originY = 0 } - base := NewBaseWidget(uiManager) + base := NewBaseWidget(ui) + base.SetVisible(false) base.SetPosition(originX, originY) frame := &UIFrame{ BaseWidget: base, - asset: asset, frameOrientation: frameOrientation, + Logger: ui.Logger, } - frame.Load() - frame.asset.Logger.SetPrefix(logPrefix) // workaround + sprite, err := ui.NewSprite(d2resource.Frame, d2resource.PaletteSky) + if err != nil { + frame.Error(err.Error()) + } + + frame.frame = sprite + frame.calculateSize() + + ui.addWidget(frame) return frame } -// Load the necessary frame resources -func (u *UIFrame) Load() { - sprite, err := u.manager.NewSprite(d2resource.Frame, d2resource.PaletteSky) - if err != nil { - u.asset.Logger.Error(err.Error()) - } - - u.frame = sprite - u.calculateSize() -} - func (u *UIFrame) calculateSize() { var framesWidth, framesHeight []int @@ -111,7 +104,7 @@ func (u *UIFrame) calculateSize() { for i := range framesWidth { w, _, err := u.frame.GetFrameSize(framesWidth[i]) if err != nil { - u.asset.Logger.Error(err.Error()) + u.Error(err.Error()) } u.width += w @@ -120,7 +113,7 @@ func (u *UIFrame) calculateSize() { for i := range framesHeight { _, h, err := u.frame.GetFrameSize(framesHeight[i]) if err != nil { - u.asset.Logger.Error(err.Error()) + u.Error(err.Error()) } u.height += h @@ -132,11 +125,11 @@ func (u *UIFrame) Render(target d2interface.Surface) { switch u.frameOrientation { case FrameLeft: if err := u.renderLeft(target); err != nil { - u.asset.Logger.Error("Render error" + err.Error()) + u.Error("Render error" + err.Error()) } case FrameRight: if err := u.renderRight(target); err != nil { - u.asset.Logger.Error("Render error" + err.Error()) + u.Error("Render error" + err.Error()) } } } diff --git a/d2game/d2player/hero_stats_panel.go b/d2game/d2player/hero_stats_panel.go index 8bc889aa..759e2451 100644 --- a/d2game/d2player/hero_stats_panel.go +++ b/d2game/d2player/hero_stats_panel.go @@ -149,7 +149,7 @@ func (s *HeroStatsPanel) Load() { s.panelGroup = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel) s.newStatPoints = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel) - frame := d2ui.NewUIFrame(s.asset, s.uiManager, d2ui.FrameLeft) + frame := s.uiManager.NewUIFrame(d2ui.FrameLeft) s.panelGroup.AddWidget(frame) s.panel, err = s.uiManager.NewSprite(d2resource.InventoryCharacterPanel, d2resource.PaletteSky) diff --git a/d2game/d2player/inventory.go b/d2game/d2player/inventory.go index 4b0875d3..d28a4c29 100644 --- a/d2game/d2player/inventory.go +++ b/d2game/d2player/inventory.go @@ -104,7 +104,7 @@ func (g *Inventory) Load() { g.panelGroup = g.uiManager.NewWidgetGroup(d2ui.RenderPriorityInventory) - frame := d2ui.NewUIFrame(g.asset, g.uiManager, d2ui.FrameRight) + frame := g.uiManager.NewUIFrame(d2ui.FrameRight) g.panelGroup.AddWidget(frame) g.panel, err = g.uiManager.NewSprite(d2resource.InventoryCharacterPanel, d2resource.PaletteSky) diff --git a/d2game/d2player/quest_log.go b/d2game/d2player/quest_log.go index 1c1ab5c5..4de2b90f 100644 --- a/d2game/d2player/quest_log.go +++ b/d2game/d2player/quest_log.go @@ -213,7 +213,7 @@ func (s *QuestLog) Load() { s.Error(err.Error()) } - frame := d2ui.NewUIFrame(s.asset, s.uiManager, d2ui.FrameLeft) + frame := s.uiManager.NewUIFrame(d2ui.FrameLeft) s.panelGroup.AddWidget(frame) s.panel, err = s.uiManager.NewSprite(d2resource.QuestLogBg, d2resource.PaletteSky) diff --git a/d2game/d2player/skilltree.go b/d2game/d2player/skilltree.go index 91bceec4..b60c6509 100644 --- a/d2game/d2player/skilltree.go +++ b/d2game/d2player/skilltree.go @@ -127,7 +127,6 @@ type skillTree struct { skills map[int]*d2hero.HeroSkill skillIcons []*skillIcon heroClass d2enum.Hero - frame *d2ui.UIFrame availSPLabel *d2ui.Label closeButton *d2ui.Button tab [numTabs]*skillTreeTab @@ -153,8 +152,8 @@ func (s *skillTree) load() { s.panel = s.uiManager.NewCustomWidget(s.Render, 400, 600) s.panelGroup.AddWidget(s.panel) - s.frame = d2ui.NewUIFrame(s.asset, s.uiManager, d2ui.FrameRight) - s.panelGroup.AddWidget(s.frame) + frame := s.uiManager.NewUIFrame(d2ui.FrameRight) + s.panelGroup.AddWidget(frame) s.closeButton = s.uiManager.NewButton(d2ui.ButtonTypeSquareClose, "") s.closeButton.SetVisible(false)