buttons on character select screen and "resistances" labels on hero stats panel

This commit is contained in:
M. Sz 2020-11-24 17:44:15 +01:00
parent ac6846b0ec
commit c704cc4c45
3 changed files with 26 additions and 18 deletions

View File

@ -135,6 +135,11 @@ func SplitIntoLinesWithMaxWidth(fullSentence string, maxChars int) []string {
return lines
}
// SplitIntoLineWithMaxWidthOneLine do the same as SplitIntoLinesWithMaxWidth but return string with newline char
func SplitIntoLinesWithMaxWidthOneLine(s string, l int) string {
return strings.Join(SplitIntoLinesWithMaxWidth(s, l), "\n")
}
func splitCjkIntoChunks(str string, chars int) []string {
chunks := make([]string, chars/len(str))
i, count := 0, 0

View File

@ -292,17 +292,15 @@ func rgbaColor(rgba uint32) color.RGBA {
}
func (v *CharacterSelect) createButtons(loading d2screen.LoadingState) {
v.newCharButton = v.uiManager.NewButton(d2ui.ButtonTypeTall, "CREATE NEW\nCHARACTER")
v.newCharButton = v.uiManager.NewButton(d2ui.ButtonTypeTall, d2util.SplitIntoLinesWithMaxWidthOneLine(v.asset.TranslateString("#831"), 13))
v.newCharButton.SetPosition(newCharBtnX, newCharBtnY)
v.newCharButton.OnActivated(func() { v.onNewCharButtonClicked() })
v.convertCharButton = v.uiManager.NewButton(d2ui.ButtonTypeTall, "CONVERT TO\nEXPANSION")
v.convertCharButton = v.uiManager.NewButton(d2ui.ButtonTypeTall, d2util.SplitIntoLinesWithMaxWidthOneLine(v.asset.TranslateString("#825"), 13))
v.convertCharButton.SetPosition(convertCharBtnX, convertCharBtnY)
v.convertCharButton.SetEnabled(false)
v.deleteCharButton = v.uiManager.NewButton(d2ui.ButtonTypeTall, "DELETE\nCHARACTER")
v.deleteCharButton = v.uiManager.NewButton(d2ui.ButtonTypeTall, d2util.SplitIntoLinesWithMaxWidthOneLine(v.asset.TranslateString("#832"), 13))
v.deleteCharButton.OnActivated(func() { v.onDeleteCharButtonClicked() })
v.deleteCharButton.SetPosition(deleteCharBtnX, deleteCharBtnY)

View File

@ -2,6 +2,7 @@ package d2player
import (
"strconv"
"strings"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
@ -42,14 +43,14 @@ const (
labelLifeX, labelLifeY = 280, 322
labelManaX, labelManaY = 280, 360
labelResFireLine1X, labelResFireLine1Y = 310, 395
labelResFireLine2X, labelResFireLine2Y = 310, 402
labelResColdLine1X, labelResColdLine1Y = 310, 445
labelResFireLine1X, labelResFireLine1Y = 310, 396
labelResFireLine2X, labelResFireLine2Y = 310, 403
labelResColdLine1X, labelResColdLine1Y = 310, 444
labelResColdLine2X, labelResColdLine2Y = 310, 452
labelResLightLine1X, labelResLightLine1Y = 310, 420
labelResLightLine2X, labelResLightLine2Y = 310, 427
labelResLightLine2X, labelResLightLine2Y = 310, 428
labelResPoisLine1X, labelResPoisLine1Y = 310, 468
labelResPoisLine2X, labelResPoisLine2Y = 310, 477
labelResPoisLine2X, labelResPoisLine2Y = 310, 476
)
const (
@ -241,6 +242,10 @@ func (s *HeroStatsPanel) renderStaticPanelFrames(target d2interface.Surface) {
func (s *HeroStatsPanel) renderStaticLabels(target d2interface.Surface) {
var label *d2ui.Label
fr := strings.Split(s.asset.TranslateString("strchrfir"), "\n")
lr := strings.Split(s.asset.TranslateString("strchrlit"), "\n")
cr := strings.Split(s.asset.TranslateString("strchrcol"), "\n")
pr := strings.Split(s.asset.TranslateString("strchrpos"), "\n")
// all static labels are not stored since we use them only once to generate the image cache
var staticLabelConfigs = []struct {
x, y int
@ -264,17 +269,17 @@ func (s *HeroStatsPanel) renderStaticLabels(target d2interface.Surface) {
{labelManaX, labelManaY, s.asset.TranslateString("strchrman"), d2resource.Font6, true},
// can't use "Fire\nResistance" because line spacing is too big and breaks the layout
{labelResFireLine1X, labelResFireLine1Y, "Fire", d2resource.Font6, true},
{labelResFireLine2X, labelResFireLine2Y, "Resistance", d2resource.Font6, true},
{labelResFireLine1X, labelResFireLine1Y, fr[0], d2resource.Font6, true},
{labelResFireLine2X, labelResFireLine2Y, fr[len(fr)-1], d2resource.Font6, true},
{labelResColdLine1X, labelResColdLine1Y, "Cold", d2resource.Font6, true},
{labelResColdLine2X, labelResColdLine2Y, "Resistance", d2resource.Font6, true},
{labelResColdLine1X, labelResColdLine1Y, cr[0], d2resource.Font6, true},
{labelResColdLine2X, labelResColdLine2Y, cr[len(cr)-1], d2resource.Font6, true},
{labelResLightLine1X, labelResLightLine1Y, "Lightning", d2resource.Font6, true},
{labelResLightLine2X, labelResLightLine2Y, "Resistance", d2resource.Font6, true},
{labelResLightLine1X, labelResLightLine1Y, lr[0], d2resource.Font6, true},
{labelResLightLine2X, labelResLightLine2Y, lr[len(lr)-1], d2resource.Font6, true},
{labelResPoisLine1X, labelResPoisLine1Y, "Poison", d2resource.Font6, true},
{labelResPoisLine2X, labelResPoisLine2Y, "Resistance", d2resource.Font6, true},
{labelResPoisLine1X, labelResPoisLine1Y, pr[0], d2resource.Font6, true},
{labelResPoisLine2X, labelResPoisLine2Y, pr[len(pr)-1], d2resource.Font6, true},
}
for _, cfg := range staticLabelConfigs {