mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-01-18 15:27:12 -05:00
game-controls refactor
This commit is contained in:
parent
0f658d5dec
commit
8700d63f67
@ -28,7 +28,6 @@ const (
|
|||||||
// Panel represents the panel at the bottom of the game screen
|
// Panel represents the panel at the bottom of the game screen
|
||||||
type Panel interface {
|
type Panel interface {
|
||||||
IsOpen() bool
|
IsOpen() bool
|
||||||
Toggle()
|
|
||||||
Open()
|
Open()
|
||||||
Close()
|
Close()
|
||||||
}
|
}
|
||||||
@ -275,7 +274,7 @@ func NewGameControls(
|
|||||||
hoverLabel.SetBackgroundColor(d2util.Color(blackAlpha50percent))
|
hoverLabel.SetBackgroundColor(d2util.Color(blackAlpha50percent))
|
||||||
|
|
||||||
gc.heroStatsPanel.SetOnCloseCb(gc.onCloseHeroStatsPanel)
|
gc.heroStatsPanel.SetOnCloseCb(gc.onCloseHeroStatsPanel)
|
||||||
gc.questLog.SetOnCloseCb(gc.onCloseQuestLog)
|
gc.questLog.SetOnCloseCb(gc.onCloseHeroQuestLog)
|
||||||
gc.inventory.SetOnCloseCb(gc.onCloseInventory)
|
gc.inventory.SetOnCloseCb(gc.onCloseInventory)
|
||||||
gc.skilltree.SetOnCloseCb(gc.onCloseSkilltree)
|
gc.skilltree.SetOnCloseCb(gc.onCloseSkilltree)
|
||||||
|
|
||||||
@ -392,11 +391,7 @@ func (g *GameControls) OnKeyDown(event d2interface.KeyEvent) bool {
|
|||||||
|
|
||||||
switch gameEvent {
|
switch gameEvent {
|
||||||
case d2enum.ClearScreen:
|
case d2enum.ClearScreen:
|
||||||
g.inventory.Close()
|
g.clearScreen()
|
||||||
g.skilltree.Close()
|
|
||||||
g.heroStatsPanel.Close()
|
|
||||||
g.questLog.Close()
|
|
||||||
g.HelpOverlay.Close()
|
|
||||||
g.updateLayout()
|
g.updateLayout()
|
||||||
case d2enum.ToggleInventoryPanel:
|
case d2enum.ToggleInventoryPanel:
|
||||||
g.toggleInventoryPanel()
|
g.toggleInventoryPanel()
|
||||||
@ -440,47 +435,8 @@ func (g *GameControls) OnKeyUp(event d2interface.KeyEvent) bool {
|
|||||||
func (g *GameControls) onEscKey() {
|
func (g *GameControls) onEscKey() {
|
||||||
escHandled := false
|
escHandled := false
|
||||||
|
|
||||||
if g.hud.skillSelectMenu.IsOpen() {
|
escHandled = g.hasOpenPanels() || g.HelpOverlay.IsOpen() || g.hud.skillSelectMenu.IsOpen()
|
||||||
g.hud.skillSelectMenu.ClosePanels()
|
g.clearScreen()
|
||||||
|
|
||||||
escHandled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if g.inventory.IsOpen() {
|
|
||||||
if g.inventory.moveGoldPanel.IsOpen() {
|
|
||||||
g.inventory.moveGoldPanel.Close()
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
g.inventory.Close()
|
|
||||||
|
|
||||||
escHandled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if g.skilltree.IsOpen() {
|
|
||||||
g.skilltree.Close()
|
|
||||||
|
|
||||||
escHandled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if g.heroStatsPanel.IsOpen() {
|
|
||||||
g.heroStatsPanel.Close()
|
|
||||||
|
|
||||||
escHandled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if g.questLog.IsOpen() {
|
|
||||||
g.questLog.Close()
|
|
||||||
|
|
||||||
escHandled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if g.HelpOverlay.IsOpen() {
|
|
||||||
g.HelpOverlay.Close()
|
|
||||||
|
|
||||||
escHandled = true
|
|
||||||
}
|
|
||||||
|
|
||||||
switch escHandled {
|
switch escHandled {
|
||||||
case true:
|
case true:
|
||||||
@ -632,63 +588,88 @@ func (g *GameControls) OnMouseButtonDown(event d2interface.MouseEvent) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleHeroStatsPanel() {
|
func (g *GameControls) clearLeftScreenSide() {
|
||||||
|
g.heroStatsPanel.Close()
|
||||||
|
g.questLog.Close()
|
||||||
|
g.hud.skillSelectMenu.ClosePanels()
|
||||||
|
g.hud.miniPanel.SetMovedRight(false)
|
||||||
|
g.updateLayout()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GameControls) clearRightScreenSide() {
|
||||||
|
g.inventory.Close()
|
||||||
|
g.skilltree.Close()
|
||||||
|
g.hud.skillSelectMenu.ClosePanels()
|
||||||
|
g.hud.miniPanel.SetMovedLeft(false)
|
||||||
|
g.updateLayout()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GameControls) hasOpenPanels() bool {
|
||||||
|
return g.isRightPanelOpen() || g.isLeftPanelOpen() || g.hud.skillSelectMenu.IsOpen()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GameControls) clearScreen() {
|
||||||
|
g.clearRightScreenSide()
|
||||||
|
g.clearLeftScreenSide()
|
||||||
|
g.hud.skillSelectMenu.ClosePanels()
|
||||||
|
g.HelpOverlay.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GameControls) openLeftPanel(panel Panel) {
|
||||||
if !g.HelpOverlay.IsOpen() {
|
if !g.HelpOverlay.IsOpen() {
|
||||||
g.hud.skillSelectMenu.LeftPanel.Close()
|
isOpen := panel.IsOpen()
|
||||||
g.hud.skillSelectMenu.RightPanel.Close()
|
fmt.Println(isOpen)
|
||||||
g.questLog.Close()
|
g.clearLeftScreenSide()
|
||||||
g.heroStatsPanel.Toggle()
|
if !isOpen {
|
||||||
g.hud.miniPanel.SetMovedRight(g.heroStatsPanel.IsOpen())
|
panel.Open()
|
||||||
g.updateLayout()
|
g.hud.miniPanel.SetMovedRight(true)
|
||||||
|
g.updateLayout()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *GameControls) openRightPanel(panel Panel) {
|
||||||
|
if !g.HelpOverlay.IsOpen() {
|
||||||
|
isOpen := panel.IsOpen()
|
||||||
|
fmt.Println(isOpen)
|
||||||
|
g.clearRightScreenSide()
|
||||||
|
if !isOpen {
|
||||||
|
panel.Open()
|
||||||
|
g.hud.miniPanel.SetMovedLeft(true)
|
||||||
|
g.updateLayout()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GameControls) toggleHeroStatsPanel() {
|
||||||
|
g.openLeftPanel(g.heroStatsPanel)
|
||||||
|
}
|
||||||
|
|
||||||
func (g *GameControls) onCloseHeroStatsPanel() {
|
func (g *GameControls) onCloseHeroStatsPanel() {
|
||||||
g.hud.miniPanel.SetMovedRight(g.heroStatsPanel.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleLeftSkillPanel() {
|
func (g *GameControls) toggleLeftSkillPanel() {
|
||||||
if !g.HelpOverlay.IsOpen() {
|
if !g.HelpOverlay.IsOpen() {
|
||||||
g.inventory.Close()
|
g.clearScreen()
|
||||||
g.skilltree.Close()
|
|
||||||
g.questLog.Close()
|
|
||||||
g.heroStatsPanel.Close()
|
|
||||||
g.hud.skillSelectMenu.ToggleLeftPanel()
|
g.hud.skillSelectMenu.ToggleLeftPanel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleRightSkillPanel() {
|
func (g *GameControls) toggleRightSkillPanel() {
|
||||||
if !g.HelpOverlay.IsOpen() {
|
if !g.HelpOverlay.IsOpen() {
|
||||||
g.inventory.Close()
|
g.clearScreen()
|
||||||
g.skilltree.Close()
|
|
||||||
g.questLog.Close()
|
|
||||||
g.heroStatsPanel.Close()
|
|
||||||
g.hud.skillSelectMenu.ToggleRightPanel()
|
g.hud.skillSelectMenu.ToggleRightPanel()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleQuestLog() {
|
func (g *GameControls) toggleQuestLog() {
|
||||||
if !g.HelpOverlay.IsOpen() {
|
g.openLeftPanel(g.questLog)
|
||||||
g.heroStatsPanel.Close()
|
|
||||||
g.hud.skillSelectMenu.LeftPanel.Close()
|
|
||||||
g.hud.skillSelectMenu.RightPanel.Close()
|
|
||||||
g.questLog.Toggle()
|
|
||||||
g.hud.miniPanel.SetMovedRight(g.questLog.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *GameControls) onCloseQuestLog() {
|
|
||||||
g.hud.miniPanel.SetMovedRight(g.questLog.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleHelpOverlay() {
|
func (g *GameControls) toggleHelpOverlay() {
|
||||||
if !g.inventory.IsOpen() && !g.skilltree.IsOpen() && !g.heroStatsPanel.IsOpen() && !g.questLog.IsOpen() {
|
if !g.isRightPanelOpen() || g.isLeftPanelOpen() {
|
||||||
g.HelpOverlay.updateKeyMap(g.keyMap)
|
g.HelpOverlay.updateKeyMap(g.keyMap)
|
||||||
g.hud.skillSelectMenu.LeftPanel.Close()
|
g.hud.skillSelectMenu.ClosePanels()
|
||||||
g.hud.skillSelectMenu.RightPanel.Close()
|
|
||||||
g.hud.miniPanel.openDisabled()
|
g.hud.miniPanel.openDisabled()
|
||||||
g.HelpOverlay.Toggle()
|
g.HelpOverlay.Toggle()
|
||||||
g.updateLayout()
|
g.updateLayout()
|
||||||
@ -696,42 +677,21 @@ func (g *GameControls) toggleHelpOverlay() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleInventoryPanel() {
|
func (g *GameControls) toggleInventoryPanel() {
|
||||||
if !g.HelpOverlay.IsOpen() {
|
g.openRightPanel(g.inventory)
|
||||||
g.hud.skillSelectMenu.LeftPanel.Close()
|
|
||||||
g.hud.skillSelectMenu.RightPanel.Close()
|
|
||||||
g.skilltree.Close()
|
|
||||||
g.inventory.Toggle()
|
|
||||||
g.hud.miniPanel.SetMovedLeft(g.inventory.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) onCloseInventory() {
|
func (g *GameControls) onCloseInventory() {
|
||||||
g.hud.miniPanel.SetMovedLeft(g.inventory.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) toggleSkilltreePanel() {
|
func (g *GameControls) toggleSkilltreePanel() {
|
||||||
if !g.HelpOverlay.IsOpen() {
|
g.openRightPanel(g.skilltree)
|
||||||
g.inventory.Close()
|
|
||||||
g.hud.skillSelectMenu.LeftPanel.Close()
|
|
||||||
g.hud.skillSelectMenu.RightPanel.Close()
|
|
||||||
g.skilltree.Toggle()
|
|
||||||
g.hud.miniPanel.SetMovedLeft(g.skilltree.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) onCloseSkilltree() {
|
func (g *GameControls) onCloseSkilltree() {
|
||||||
g.hud.miniPanel.SetMovedLeft(g.skilltree.IsOpen())
|
|
||||||
g.updateLayout()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) openEscMenu() {
|
func (g *GameControls) openEscMenu() {
|
||||||
g.inventory.Close()
|
g.clearScreen()
|
||||||
g.skilltree.Close()
|
|
||||||
g.heroStatsPanel.Close()
|
|
||||||
g.questLog.Close()
|
|
||||||
g.hud.miniPanel.closeDisabled()
|
g.hud.miniPanel.closeDisabled()
|
||||||
g.escapeMenu.open()
|
g.escapeMenu.open()
|
||||||
g.updateLayout()
|
g.updateLayout()
|
||||||
@ -792,7 +752,6 @@ func (g *GameControls) updateLayout() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *GameControls) isLeftPanelOpen() bool {
|
func (g *GameControls) isLeftPanelOpen() bool {
|
||||||
// https://github.com/OpenDiablo2/OpenDiablo2/issues/801
|
|
||||||
return g.heroStatsPanel.IsOpen() || g.questLog.IsOpen() || g.inventory.moveGoldPanel.IsOpen()
|
return g.heroStatsPanel.IsOpen() || g.questLog.IsOpen() || g.inventory.moveGoldPanel.IsOpen()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user