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 <mszeptuch@protonmail.com>
Co-authored-by: Tim Sarbin <tim.sarbin@gmail.com>
Co-authored-by: gravestench <dknuth0101@gmail.com>
This commit is contained in:
gucio321 2021-01-07 06:53:01 +01:00 committed by GitHub
parent 0e95fd44ce
commit 5cd404e4a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 32 deletions

View File

@ -3,7 +3,7 @@ package d2ui
import ( import (
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2asset" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2util"
) )
// static check that UIFrame implements Widget // static check that UIFrame implements Widget
@ -21,9 +21,9 @@ const (
// when it is visible. // when it is visible.
type UIFrame struct { type UIFrame struct {
*BaseWidget *BaseWidget
asset *d2asset.AssetManager
frame *Sprite frame *Sprite
frameOrientation frameOrientation frameOrientation frameOrientation
*d2util.Logger
} }
// frame indices into dc6 images for panels // frame indices into dc6 images for panels
@ -41,11 +41,7 @@ const (
) )
// NewUIFrame creates a new Frame instance // NewUIFrame creates a new Frame instance
func NewUIFrame( func (ui *UIManager) NewUIFrame(frameOrientation frameOrientation) *UIFrame {
asset *d2asset.AssetManager,
uiManager *UIManager,
frameOrientation frameOrientation,
) *UIFrame {
var originX, originY = 0, 0 var originX, originY = 0, 0
switch frameOrientation { switch frameOrientation {
@ -57,32 +53,29 @@ func NewUIFrame(
originY = 0 originY = 0
} }
base := NewBaseWidget(uiManager) base := NewBaseWidget(ui)
base.SetVisible(false)
base.SetPosition(originX, originY) base.SetPosition(originX, originY)
frame := &UIFrame{ frame := &UIFrame{
BaseWidget: base, BaseWidget: base,
asset: asset,
frameOrientation: frameOrientation, 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 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() { func (u *UIFrame) calculateSize() {
var framesWidth, framesHeight []int var framesWidth, framesHeight []int
@ -111,7 +104,7 @@ func (u *UIFrame) calculateSize() {
for i := range framesWidth { for i := range framesWidth {
w, _, err := u.frame.GetFrameSize(framesWidth[i]) w, _, err := u.frame.GetFrameSize(framesWidth[i])
if err != nil { if err != nil {
u.asset.Logger.Error(err.Error()) u.Error(err.Error())
} }
u.width += w u.width += w
@ -120,7 +113,7 @@ func (u *UIFrame) calculateSize() {
for i := range framesHeight { for i := range framesHeight {
_, h, err := u.frame.GetFrameSize(framesHeight[i]) _, h, err := u.frame.GetFrameSize(framesHeight[i])
if err != nil { if err != nil {
u.asset.Logger.Error(err.Error()) u.Error(err.Error())
} }
u.height += h u.height += h
@ -132,11 +125,11 @@ func (u *UIFrame) Render(target d2interface.Surface) {
switch u.frameOrientation { switch u.frameOrientation {
case FrameLeft: case FrameLeft:
if err := u.renderLeft(target); err != nil { if err := u.renderLeft(target); err != nil {
u.asset.Logger.Error("Render error" + err.Error()) u.Error("Render error" + err.Error())
} }
case FrameRight: case FrameRight:
if err := u.renderRight(target); err != nil { if err := u.renderRight(target); err != nil {
u.asset.Logger.Error("Render error" + err.Error()) u.Error("Render error" + err.Error())
} }
} }
} }

View File

@ -149,7 +149,7 @@ func (s *HeroStatsPanel) Load() {
s.panelGroup = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel) s.panelGroup = s.uiManager.NewWidgetGroup(d2ui.RenderPriorityHeroStatsPanel)
s.newStatPoints = 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.panelGroup.AddWidget(frame)
s.panel, err = s.uiManager.NewSprite(d2resource.InventoryCharacterPanel, d2resource.PaletteSky) s.panel, err = s.uiManager.NewSprite(d2resource.InventoryCharacterPanel, d2resource.PaletteSky)

View File

@ -104,7 +104,7 @@ func (g *Inventory) Load() {
g.panelGroup = g.uiManager.NewWidgetGroup(d2ui.RenderPriorityInventory) 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.panelGroup.AddWidget(frame)
g.panel, err = g.uiManager.NewSprite(d2resource.InventoryCharacterPanel, d2resource.PaletteSky) g.panel, err = g.uiManager.NewSprite(d2resource.InventoryCharacterPanel, d2resource.PaletteSky)

View File

@ -213,7 +213,7 @@ func (s *QuestLog) Load() {
s.Error(err.Error()) s.Error(err.Error())
} }
frame := d2ui.NewUIFrame(s.asset, s.uiManager, d2ui.FrameLeft) frame := s.uiManager.NewUIFrame(d2ui.FrameLeft)
s.panelGroup.AddWidget(frame) s.panelGroup.AddWidget(frame)
s.panel, err = s.uiManager.NewSprite(d2resource.QuestLogBg, d2resource.PaletteSky) s.panel, err = s.uiManager.NewSprite(d2resource.QuestLogBg, d2resource.PaletteSky)

View File

@ -127,7 +127,6 @@ type skillTree struct {
skills map[int]*d2hero.HeroSkill skills map[int]*d2hero.HeroSkill
skillIcons []*skillIcon skillIcons []*skillIcon
heroClass d2enum.Hero heroClass d2enum.Hero
frame *d2ui.UIFrame
availSPLabel *d2ui.Label availSPLabel *d2ui.Label
closeButton *d2ui.Button closeButton *d2ui.Button
tab [numTabs]*skillTreeTab tab [numTabs]*skillTreeTab
@ -153,8 +152,8 @@ func (s *skillTree) load() {
s.panel = s.uiManager.NewCustomWidget(s.Render, 400, 600) s.panel = s.uiManager.NewCustomWidget(s.Render, 400, 600)
s.panelGroup.AddWidget(s.panel) s.panelGroup.AddWidget(s.panel)
s.frame = d2ui.NewUIFrame(s.asset, s.uiManager, d2ui.FrameRight) frame := s.uiManager.NewUIFrame(d2ui.FrameRight)
s.panelGroup.AddWidget(s.frame) s.panelGroup.AddWidget(frame)
s.closeButton = s.uiManager.NewButton(d2ui.ButtonTypeSquareClose, "") s.closeButton = s.uiManager.NewButton(d2ui.ButtonTypeSquareClose, "")
s.closeButton.SetVisible(false) s.closeButton.SetVisible(false)