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 (
"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())
}
}
}

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)