mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-06-26 09:05:24 +00:00
d2ui improvement: added NewCustomButton method to d2ui
This commit is contained in:
parent
d74e171313
commit
abee77968d
|
@ -789,6 +789,37 @@ type Button struct {
|
||||||
|
|
||||||
// NewButton creates an instance of Button
|
// NewButton creates an instance of Button
|
||||||
func (ui *UIManager) NewButton(buttonType ButtonType, text string) *Button {
|
func (ui *UIManager) NewButton(buttonType ButtonType, text string) *Button {
|
||||||
|
buttonLayout := getButtonLayouts()[buttonType]
|
||||||
|
|
||||||
|
btn := ui.createButton(buttonLayout, text)
|
||||||
|
|
||||||
|
return btn
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ui *UIManager) NewCustomButton(path string, frame int) *Button {
|
||||||
|
layout := ButtonLayout{
|
||||||
|
XSegments: 1,
|
||||||
|
YSegments: 1,
|
||||||
|
DisabledFrame: -1,
|
||||||
|
DisabledColor: whiteAlpha100,
|
||||||
|
ResourceName: path,
|
||||||
|
PaletteName: d2resource.PaletteSky,
|
||||||
|
BaseFrame: frame,
|
||||||
|
Toggleable: true,
|
||||||
|
FontPath: d2resource.Font16,
|
||||||
|
AllowFrameChange: true,
|
||||||
|
HasImage: true,
|
||||||
|
FixedWidth: ButtonNoFixedWidth,
|
||||||
|
FixedHeight: ButtonNoFixedHeight,
|
||||||
|
}
|
||||||
|
|
||||||
|
btn := ui.createButton(layout, "")
|
||||||
|
|
||||||
|
return btn
|
||||||
|
}
|
||||||
|
|
||||||
|
// createButton creates button using input layout and text
|
||||||
|
func (ui *UIManager) createButton(layout ButtonLayout, text string) *Button {
|
||||||
base := NewBaseWidget(ui)
|
base := NewBaseWidget(ui)
|
||||||
base.SetVisible(true)
|
base.SetVisible(true)
|
||||||
|
|
||||||
|
@ -798,24 +829,23 @@ func (ui *UIManager) NewButton(buttonType ButtonType, text string) *Button {
|
||||||
pressed: false,
|
pressed: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
buttonLayout := getButtonLayouts()[buttonType]
|
btn.buttonLayout = layout
|
||||||
btn.buttonLayout = buttonLayout
|
|
||||||
lbl := ui.NewLabel(buttonLayout.FontPath, d2resource.PaletteUnits)
|
|
||||||
|
|
||||||
|
lbl := ui.NewLabel(layout.FontPath, d2resource.PaletteUnits)
|
||||||
lbl.SetText(text)
|
lbl.SetText(text)
|
||||||
lbl.Color[0] = d2util.Color(buttonLayout.LabelColor)
|
lbl.Color[0] = d2util.Color(layout.LabelColor)
|
||||||
lbl.Alignment = HorizontalAlignCenter
|
lbl.Alignment = HorizontalAlignCenter
|
||||||
|
|
||||||
buttonSprite, err := ui.NewSprite(buttonLayout.ResourceName, buttonLayout.PaletteName)
|
buttonSprite, err := ui.NewSprite(layout.ResourceName, layout.PaletteName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ui.Error(err.Error())
|
ui.Error(err.Error())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if buttonLayout.FixedWidth > 0 {
|
if layout.FixedWidth > 0 {
|
||||||
btn.width = buttonLayout.FixedWidth
|
btn.width = layout.FixedWidth
|
||||||
} else {
|
} else {
|
||||||
for i := 0; i < buttonLayout.XSegments; i++ {
|
for i := 0; i < layout.XSegments; i++ {
|
||||||
w, _, frameSizeErr := buttonSprite.GetFrameSize(i)
|
w, _, frameSizeErr := buttonSprite.GetFrameSize(i)
|
||||||
if frameSizeErr != nil {
|
if frameSizeErr != nil {
|
||||||
ui.Error(frameSizeErr.Error())
|
ui.Error(frameSizeErr.Error())
|
||||||
|
@ -826,11 +856,11 @@ func (ui *UIManager) NewButton(buttonType ButtonType, text string) *Button {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if buttonLayout.FixedHeight > 0 {
|
if layout.FixedHeight > 0 {
|
||||||
btn.height = buttonLayout.FixedHeight
|
btn.height = layout.FixedHeight
|
||||||
} else {
|
} else {
|
||||||
for i := 0; i < buttonLayout.YSegments; i++ {
|
for i := 0; i < layout.YSegments; i++ {
|
||||||
_, h, frameSizeErr := buttonSprite.GetFrameSize(i * buttonLayout.YSegments)
|
_, h, frameSizeErr := buttonSprite.GetFrameSize(i * layout.YSegments)
|
||||||
if frameSizeErr != nil {
|
if frameSizeErr != nil {
|
||||||
ui.Error(frameSizeErr.Error())
|
ui.Error(frameSizeErr.Error())
|
||||||
return nil
|
return nil
|
||||||
|
@ -849,7 +879,7 @@ func (ui *UIManager) NewButton(buttonType ButtonType, text string) *Button {
|
||||||
|
|
||||||
ui.addWidget(btn) // important that this comes before prerenderStates!
|
ui.addWidget(btn) // important that this comes before prerenderStates!
|
||||||
|
|
||||||
btn.prerenderStates(buttonSprite, &buttonLayout, lbl)
|
btn.prerenderStates(buttonSprite, &layout, lbl)
|
||||||
|
|
||||||
return btn
|
return btn
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user