diff --git a/d2game/d2gamescreen/game.go b/d2game/d2gamescreen/game.go index 5ee10d83..3d01b6c7 100644 --- a/d2game/d2gamescreen/game.go +++ b/d2game/d2gamescreen/game.go @@ -280,7 +280,9 @@ func (v *Game) Advance(elapsed float64) error { v.soundEnv.Advance(elapsed) if v.gameControls != nil { - v.gameControls.PartyPanel.UpdatePlayersList(v.gameClient.Players) + if v.gameControls.PartyPanel != nil { + v.gameControls.PartyPanel.UpdatePlayersList(v.gameClient.Players) + } } return nil diff --git a/d2game/d2gamescreen/main_menu.go b/d2game/d2gamescreen/main_menu.go index c11f8e09..388275b9 100644 --- a/d2game/d2gamescreen/main_menu.go +++ b/d2game/d2gamescreen/main_menu.go @@ -387,7 +387,7 @@ func (v *MainMenu) createMainMenuButtons(loading d2screen.LoadingState) { v.btnServerIPCancel.SetPosition(srvCancelBtnX, srvCancelBtnY) v.btnServerIPCancel.OnActivated(func() { v.onBtnTCPIPCancelClicked() }) - v.btnServerIPOk = v.uiManager.NewButton(d2ui.ButtonTypeOkCancel, v.asset.TranslateString(d2enum.OKLabel)) + v.btnServerIPOk = v.uiManager.NewButton(d2ui.ButtonTypeOkCancel, v.asset.TranslateLabel(d2enum.OKLabel)) v.btnServerIPOk.SetPosition(srvOkBtnX, srvOkBtnY) v.btnServerIPOk.OnActivated(func() { v.onBtnTCPIPOkClicked() }) loading.Progress(eightyPercent) diff --git a/d2game/d2player/game_controls.go b/d2game/d2player/game_controls.go index 975b90d3..38830fa8 100644 --- a/d2game/d2player/game_controls.go +++ b/d2game/d2player/game_controls.go @@ -174,8 +174,6 @@ func NewGameControls( heroStatsPanel := NewHeroStatsPanel(asset, ui, hero.Name(), hero.Class, l, hero.Stats) - PartyPanel := NewPartyPanel(asset, ui, hero.Name(), l, hero, hero.Stats, players) - questLog := NewQuestLog(asset, ui, l, audioProvider, hero.Act) inventory, err := NewInventory(asset, ui, l, hero.Gold, inventoryRecord) @@ -208,7 +206,6 @@ func NewGameControls( inventory: inventory, skilltree: skilltree, heroStatsPanel: heroStatsPanel, - PartyPanel: PartyPanel, questLog: questLog, HelpOverlay: helpOverlay, keyMap: keyMap, @@ -236,6 +233,11 @@ func NewGameControls( isSinglePlayer: isSinglePlayer, } + if !isSinglePlayer { + PartyPanel := NewPartyPanel(asset, ui, hero.Name(), l, hero, hero.Stats, players) + gc.PartyPanel = PartyPanel + } + hud := NewHUD(asset, ui, hero, miniPanel, actionableRegions, mapEngine, l, gc, mapRenderer) gc.hud = hud @@ -503,7 +505,10 @@ func (g *GameControls) OnMouseMove(event d2interface.MouseMoveEvent) bool { } g.hud.OnMouseMove(event) - g.PartyPanel.OnMouseMove(event) + + if g.PartyPanel != nil { + g.PartyPanel.OnMouseMove(event) + } return false } @@ -562,10 +567,13 @@ func (g *GameControls) OnMouseButtonDown(event d2interface.MouseEvent) bool { func (g *GameControls) clearLeftScreenSide() { g.heroStatsPanel.Close() - g.PartyPanel.Close() + + if g.PartyPanel != nil { + g.PartyPanel.Close() + } + g.questLog.Close() g.hud.skillSelectMenu.ClosePanels() - g.hud.miniPanel.SetMovedRight(false) g.updateLayout() } @@ -573,7 +581,6 @@ func (g *GameControls) clearRightScreenSide() { g.inventory.Close() g.skilltree.Close() g.hud.skillSelectMenu.ClosePanels() - g.hud.miniPanel.SetMovedLeft(false) g.updateLayout() } @@ -592,7 +599,6 @@ func (g *GameControls) openLeftPanel(panel Panel) { if !isOpen { panel.Open() - g.hud.miniPanel.SetMovedRight(true) g.updateLayout() } } @@ -606,7 +612,6 @@ func (g *GameControls) openRightPanel(panel Panel) { if !isOpen { panel.Open() - g.hud.miniPanel.SetMovedLeft(true) g.updateLayout() } } @@ -621,6 +626,7 @@ func (g *GameControls) togglePartyPanel() { } func (g *GameControls) onCloseHeroStatsPanel() { + g.updateLayout() } func (g *GameControls) toggleLeftSkillPanel() { @@ -642,6 +648,7 @@ func (g *GameControls) toggleQuestLog() { } func (g *GameControls) onCloseQuestLog() { + g.updateLayout() } func (g *GameControls) toggleHelpOverlay() { @@ -659,6 +666,7 @@ func (g *GameControls) toggleInventoryPanel() { } func (g *GameControls) onCloseInventory() { + g.updateLayout() } func (g *GameControls) toggleSkilltreePanel() { @@ -666,6 +674,7 @@ func (g *GameControls) toggleSkilltreePanel() { } func (g *GameControls) onCloseSkilltree() { + g.updateLayout() } func (g *GameControls) openEscMenu() { @@ -681,7 +690,11 @@ func (g *GameControls) Load() { g.inventory.Load() g.skilltree.load() g.heroStatsPanel.Load() - g.PartyPanel.Load() + + if g.PartyPanel != nil { + g.PartyPanel.Load() + } + g.questLog.Load() g.HelpOverlay.Load() @@ -705,7 +718,10 @@ func (g *GameControls) Advance(elapsed float64) error { g.hud.Advance(elapsed) g.inventory.Advance(elapsed) g.questLog.Advance(elapsed) - g.PartyPanel.Advance(elapsed) + + if g.PartyPanel != nil { + g.PartyPanel.Advance(elapsed) + } if err := g.escapeMenu.Advance(elapsed); err != nil { return err @@ -724,16 +740,27 @@ func (g *GameControls) updateLayout() { switch { case isRightPanelOpen == isLeftPanelOpen: + g.hud.miniPanel.ResetPosition() g.mapRenderer.ViewportDefault() case isRightPanelOpen: + g.hud.miniPanel.SetMovedRight(true) g.mapRenderer.ViewportToLeft() case isLeftPanelOpen: + g.hud.miniPanel.SetMovedLeft(true) g.mapRenderer.ViewportToRight() } } func (g *GameControls) isLeftPanelOpen() bool { - return g.heroStatsPanel.IsOpen() || g.PartyPanel.IsOpen() || g.questLog.IsOpen() || g.inventory.moveGoldPanel.IsOpen() + var partyPanel bool + + if g.PartyPanel != nil { + partyPanel = g.PartyPanel.IsOpen() + } else { + partyPanel = false + } + + return g.heroStatsPanel.IsOpen() || partyPanel || g.questLog.IsOpen() || g.inventory.moveGoldPanel.IsOpen() } func (g *GameControls) isRightPanelOpen() bool { diff --git a/d2game/d2player/mini_panel.go b/d2game/d2player/mini_panel.go index cfb35dae..0332f3aa 100644 --- a/d2game/d2player/mini_panel.go +++ b/d2game/d2player/mini_panel.go @@ -331,6 +331,16 @@ func (m *miniPanel) SetMovedLeft(moveLeft bool) { m.movedLeft = moveLeft } +func (m *miniPanel) ResetPosition() { + if m.movedLeft { + m.undoMoveLeft() + m.movedLeft = false + } else if m.movedRight { + m.undoMoveRight() + m.movedRight = false + } +} + func (m *miniPanel) SetMovedRight(moveRight bool) { if m.movedRight == moveRight { return