1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-10-01 15:46:17 -04:00

help panel: semi-trans background, font reset, string table (#758)

This commit is contained in:
leahiel 2020-09-26 11:14:34 -04:00 committed by GitHub
parent 24556f62fc
commit 815c0d17ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 146 additions and 76 deletions

View File

@ -8,6 +8,7 @@ import (
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2gui" "github.com/OpenDiablo2/OpenDiablo2/d2core/d2gui"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2math/d2vector" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2math/d2vector"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2util"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2ui" "github.com/OpenDiablo2/OpenDiablo2/d2core/d2ui"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
@ -202,6 +203,10 @@ func (v *Game) Render(screen d2interface.Surface) error {
v.mapRenderer.Render(screen) v.mapRenderer.Render(screen)
if v.gameControls != nil { if v.gameControls != nil {
if v.gameControls.HelpOverlay != nil && v.gameControls.HelpOverlay.IsOpen() {
// When help overlay is open, put transparent black screen. Magic noumber is hex for RGBA.
screen.DrawRect(800, 600, d2util.Color(0x0000007f))
}
if err := v.gameControls.Render(screen); err != nil { if err := v.gameControls.Render(screen); err != nil {
return err return err
} }

View File

@ -58,7 +58,7 @@ type GameControls struct {
ui *d2ui.UIManager ui *d2ui.UIManager
inventory *Inventory inventory *Inventory
heroStatsPanel *HeroStatsPanel heroStatsPanel *HeroStatsPanel
helpOverlay *help.Overlay HelpOverlay *help.Overlay
miniPanel *miniPanel miniPanel *miniPanel
lastMouseX int lastMouseX int
lastMouseY int lastMouseY int
@ -185,7 +185,7 @@ func NewGameControls(
mapRenderer: mapRenderer, mapRenderer: mapRenderer,
inventory: NewInventory(asset, ui, inventoryRecord), inventory: NewInventory(asset, ui, inventoryRecord),
heroStatsPanel: NewHeroStatsPanel(asset, ui, hero.Name(), hero.Class, hero.Stats), heroStatsPanel: NewHeroStatsPanel(asset, ui, hero.Name(), hero.Class, hero.Stats),
helpOverlay: help.NewHelpOverlay(asset, renderer, ui, guiManager), HelpOverlay: help.NewHelpOverlay(asset, renderer, ui, guiManager),
miniPanel: newMiniPanel(asset, ui, isSinglePlayer), miniPanel: newMiniPanel(asset, ui, isSinglePlayer),
nameLabel: hoverLabel, nameLabel: hoverLabel,
zoneChangeText: zoneLabel, zoneChangeText: zoneLabel,
@ -309,7 +309,7 @@ func (g *GameControls) OnKeyDown(event d2interface.KeyEvent) bool {
case d2enum.KeyR: case d2enum.KeyR:
g.onToggleRunButton() g.onToggleRunButton()
case d2enum.KeyH: case d2enum.KeyH:
g.helpOverlay.Toggle() g.HelpOverlay.Toggle()
g.updateLayout() g.updateLayout()
default: default:
return false return false
@ -470,7 +470,7 @@ func (g *GameControls) Load() {
g.inventory.Load() g.inventory.Load()
g.heroStatsPanel.Load() g.heroStatsPanel.Load()
g.helpOverlay.Load() g.HelpOverlay.Load()
} }
func (g *GameControls) loadUIButtons() { func (g *GameControls) loadUIButtons() {
@ -545,7 +545,7 @@ func (g *GameControls) isInActiveMenusRect(px, py int) bool {
return true return true
} }
if g.helpOverlay.IsOpen() && g.helpOverlay.IsInRect(px, py) { if g.HelpOverlay.IsOpen() && g.HelpOverlay.IsInRect(px, py) {
return true return true
} }
@ -854,7 +854,7 @@ func (g *GameControls) Render(target d2interface.Surface) error {
g.hpManaStatsLabel.Render(target) g.hpManaStatsLabel.Render(target)
} }
if err := g.helpOverlay.Render(target); err != nil { if err := g.HelpOverlay.Render(target); err != nil {
return err return err
} }

View File

@ -5,6 +5,7 @@ import (
"image/color" "image/color"
"log" "log"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2tbl"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
@ -157,7 +158,7 @@ func (h *Overlay) Load() {
// Title // Title
text := "Diablo II Help" text := d2tbl.TranslateString("Strhelp1") // "Diablo II Help"
newLabel := h.uiManager.NewLabel(d2resource.Font16, d2resource.PaletteSky) newLabel := h.uiManager.NewLabel(d2resource.Font16, d2resource.PaletteSky)
newLabel.SetText(text) newLabel.SetText(text)
ww, _ := newLabel.GetSize() ww, _ := newLabel.GetSize()
@ -172,80 +173,80 @@ func (h *Overlay) Load() {
h.closeButton.OnActivated(func() { h.close() }) h.closeButton.OnActivated(func() { h.close() })
newLabel = h.uiManager.NewLabel(d2resource.Font16, d2resource.PaletteSky) newLabel = h.uiManager.NewLabel(d2resource.Font16, d2resource.PaletteSky)
newLabel.SetText("Close") newLabel.SetText(d2tbl.TranslateString("strClose")) // "Close"
newLabel.SetPosition(680, 60) newLabel.SetPosition(680, 60)
h.text = append(h.text, newLabel) h.text = append(h.text, newLabel)
// Bullets // Bullets
yOffset := 60 yOffset := 59
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hold Down <Ctrl> to Run", LabelText: fmt.Sprintf(d2tbl.TranslateString("StrHelp2"), "Ctrl"), // TODO "Ctrl" should be hotkey // "Hold Down <%s> to Run"
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hold down <Alt> to highlight items on the ground", LabelText: fmt.Sprintf(d2tbl.TranslateString("StrHelp3"), "Alt"), // TODO "Alt" should be hotkey // "Hold down <%s> to highlight items on the ground"
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hold down <Shift> to attack while standing still", LabelText: fmt.Sprintf(d2tbl.TranslateString("StrHelp4"), "Shift"), // TODO "Shift" should be hotkey // "Hold down <%s> to attack while standing still"
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hit <Tab> to toggle the automap on and off", LabelText: fmt.Sprintf(d2tbl.TranslateString("StrHelp5"), "Tab"), // TODO "Tab" should be hotkey // "Hit <%s> to toggle the automap on and off"
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hit <Esc> to bring up the Game Menu", LabelText: d2tbl.TranslateString("StrHelp6"), // "Hit <Esc> to bring up the Game Menu"
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hit <Enter> to go into chat mode", LabelText: d2tbl.TranslateString("StrHelp7"), // "Hit <Enter> to go into chat mode"
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Use F1-F8 to set your Left or Right Mouse Button Skills", LabelText: d2tbl.TranslateString("StrHelp8"), // "Hit F1-F8 to set your Left or Right Mouse Buttton Skills."
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
yOffset += 12 yOffset += 20
h.createBullet(callout{ h.createBullet(callout{
LabelText: "Hit <H> to toggle this screen open and closed", LabelText: fmt.Sprintf(d2tbl.TranslateString("StrHelp8a"), "H"), // TODO "H" should be hotkey
LabelX: 100, LabelX: 100,
LabelY: yOffset, LabelY: yOffset - 10,
DotX: 100 - 12, DotX: 100 - 12,
DotY: yOffset, DotY: yOffset,
}) })
@ -253,87 +254,142 @@ func (h *Overlay) Load() {
// Callouts // Callouts
h.createCallout(callout{ h.createCallout(callout{
LabelText: "New Stats", LabelText: d2tbl.TranslateString("strlvlup"), // "New Stats"
LabelX: 220, LabelX: 222,
LabelY: 350, LabelY: 355,
DotX: 215, DotX: 217,
DotY: 575, DotY: 574,
}) })
h.createCallout(callout{ h.createCallout(callout{
LabelText: "New Skill", LabelText: d2tbl.TranslateString("strnewskl"), // "New Skill"
LabelX: 575, LabelX: 578,
LabelY: 350, LabelY: 355,
DotX: 570, DotX: 573,
DotY: 575, DotY: 574,
}) })
h.createCallout(callout{ // Some of the help fonts require mulktiple lines.
LabelText: "Left Mouse-\nButton Skill\n(Click to Change)", h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp10"), // "Left Mouse-"
LabelX: 135, LabelX: 135,
LabelY: 380, LabelY: 382,
})
h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp11"), // "Button Skill"
LabelX: 135,
LabelY: 397,
})
h.createCallout(callout{
LabelText: d2tbl.TranslateString("StrHelp12"), // "(Click to Change)"
LabelX: 135,
LabelY: 412,
DotX: 130, DotX: 130,
DotY: 565, DotY: 565,
}) })
h.createCallout(callout{ h.createLabel(callout{
LabelText: "Mini-Panel\n(Opens Character,\ninventory, and\nother screens)", LabelText: d2tbl.TranslateString("StrHelp13"), // "Right Mouse"
LabelX: 450,
LabelY: 365,
DotX: 445,
DotY: 540,
})
h.createCallout(callout{
LabelText: "Right Mouse-\nButton Skill\n(Click to Change)",
LabelX: 675, LabelX: 675,
LabelY: 375, LabelY: 381,
})
h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp11"), // "Button Skill"
LabelX: 675,
LabelY: 396,
})
h.createCallout(callout{
LabelText: d2tbl.TranslateString("StrHelp12"), // "(Click to Change)"
LabelX: 675,
LabelY: 411,
DotX: 670, DotX: 670,
DotY: 560, DotY: 562,
})
h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp17"), // "Mini-Panel"
LabelX: 450,
LabelY: 371,
})
h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp18"), // "(Opens Character,"
LabelX: 450,
LabelY: 386,
})
h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp19"), // "inventory, and"
LabelX: 450,
LabelY: 401,
}) })
h.createCallout(callout{ h.createCallout(callout{
LabelText: "Life Orb", LabelText: d2tbl.TranslateString("StrHelp20"), // "other screens)"
LabelX: 450,
LabelY: 417,
DotX: 445,
DotY: 539,
})
h.createCallout(callout{
LabelText: d2tbl.TranslateString("StrHelp9"), // "Life Orb"
LabelX: 65, LabelX: 65,
LabelY: 460, LabelY: 451,
DotX: 60, DotX: 60,
DotY: 535, DotY: 538,
}) })
h.createCallout(callout{ h.createCallout(callout{
LabelText: "Stamina Bar", LabelText: d2tbl.TranslateString("StrHelp15"), // "Stamina Bar"
LabelX: 315, LabelX: 315,
LabelY: 460, LabelY: 450,
DotX: 310, DotX: 310,
DotY: 585, DotY: 583,
}) })
h.createCallout(callout{ h.createCallout(callout{
LabelText: "Mana Orb", LabelText: d2tbl.TranslateString("StrHelp22"), // "Mana Orb"
LabelX: 745, LabelX: 745,
LabelY: 460, LabelY: 451,
DotX: 740, DotX: 740,
DotY: 535, DotY: 538,
}) })
h.createCallout(callout{ h.createLabel(callout{
LabelText: "Run/Walk\nToggle", LabelText: d2tbl.TranslateString("StrHelp14"), // "Run/Walk"
LabelX: 263, LabelX: 264,
LabelY: 480, LabelY: 480,
DotX: 258,
DotY: 585,
}) })
h.createCallout(callout{ h.createCallout(callout{
LabelText: "Experience\nBar", LabelText: d2tbl.TranslateString("StrHelp14a"), // "Toggle"
LabelX: 264,
LabelY: 495,
DotX: 259,
DotY: 583,
})
h.createLabel(callout{
LabelText: d2tbl.TranslateString("StrHelp16"), // "Experience"
LabelX: 370, LabelX: 370,
LabelY: 480, LabelY: 476,
})
h.createCallout(callout{
LabelText: d2tbl.TranslateString("StrHelp16a"), // "Bar"
LabelX: 370,
LabelY: 493,
DotX: 365, DotX: 365,
DotY: 565, DotY: 565,
}) })
h.createCallout(callout{ h.createCallout(callout{
LabelText: "Belt", LabelText: d2tbl.TranslateString("StrHelp21"), // "Belt"
LabelX: 535, LabelX: 535,
LabelY: 490, LabelY: 490,
DotX: 530, DotX: 530,
@ -359,7 +415,7 @@ type callout struct {
} }
func (h *Overlay) createBullet(c callout) { func (h *Overlay) createBullet(c callout) {
newLabel := h.uiManager.NewLabel(d2resource.FontFormal11, d2resource.PaletteSky) newLabel := h.uiManager.NewLabel(d2resource.FontFormal12, d2resource.PaletteSky)
newLabel.SetText(c.LabelText) newLabel.SetText(c.LabelText)
//ww, hh = newLabel.GetSize() //ww, hh = newLabel.GetSize()
newLabel.SetPosition(c.LabelX, c.LabelY) newLabel.SetPosition(c.LabelX, c.LabelY)
@ -378,8 +434,17 @@ func (h *Overlay) createBullet(c callout) {
h.frames = append(h.frames, newDot) h.frames = append(h.frames, newDot)
} }
func (h *Overlay) createLabel(c callout) {
newLabel := h.uiManager.NewLabel(d2resource.FontFormal12, d2resource.PaletteSky)
newLabel.SetText(c.LabelText)
//ww, hh = newLabel.GetSize()
newLabel.SetPosition(c.LabelX, c.LabelY)
h.text = append(h.text, newLabel)
newLabel.Alignment = d2gui.HorizontalAlignCenter
}
func (h *Overlay) createCallout(c callout) { func (h *Overlay) createCallout(c callout) {
newLabel := h.uiManager.NewLabel(d2resource.FontFormal11, d2resource.PaletteSky) newLabel := h.uiManager.NewLabel(d2resource.FontFormal12, d2resource.PaletteSky)
newLabel.Color[0] = color.White newLabel.Color[0] = color.White
newLabel.SetText(c.LabelText) newLabel.SetText(c.LabelText)
newLabel.SetPosition(c.LabelX, c.LabelY) newLabel.SetPosition(c.LabelX, c.LabelY)