fix for #358 from recent PRs (#390)

* camera offset for ui panels :

added maprenderer viewport to be aligned left or right

calling alignement on keyPress in game_controls

* check if already aligned

* fix bugs

-forgot to assign alignement
-defaultScreenRect instead of screenRect because of issue mentionned in original comment

* remove config.json and replace go.mod line

* update with new renderer and escape menu
This commit is contained in:
Haashi 2020-06-22 15:23:56 +02:00 committed by GitHub
parent 95621a8262
commit 711cae2d69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 0 deletions

View File

@ -352,3 +352,15 @@ func loadPaletteForAct(levelType d2enum.RegionIdType) (*d2dat.DATPalette, error)
return d2asset.LoadPalette(palettePath)
}
func (mr *MapRenderer) ViewportToLeft() {
mr.viewport.toLeft()
}
func (mr *MapRenderer) ViewportToRight() {
mr.viewport.toRight()
}
func (mr *MapRenderer) ViewportDefault() {
mr.viewport.resetAlign()
}

View File

@ -100,6 +100,7 @@ func (g *GameControls) OnKeyDown(event d2input.KeyEvent) bool {
if g.inventory.IsOpen() || g.heroStats.IsOpen() {
g.inventory.Close()
g.heroStats.Close()
g.updateLayout()
break
}
g.escapeMenu.Toggle()
@ -111,8 +112,10 @@ func (g *GameControls) OnKeyDown(event d2input.KeyEvent) bool {
g.escapeMenu.OnEnterKey()
case d2input.KeyI:
g.inventory.Toggle()
g.updateLayout()
case d2input.KeyC:
g.heroStats.Toggle()
g.updateLayout()
default:
return false
}
@ -190,6 +193,23 @@ func (g *GameControls) Advance(elapsed float64) error {
return nil
}
func (g *GameControls) updateLayout() {
isRightPanelOpen := false
isLeftPanelOpen := false
// todo : add same logic when adding quest log and skill tree
isRightPanelOpen = g.inventory.isOpen || isRightPanelOpen
isLeftPanelOpen = g.heroStats.isOpen || isLeftPanelOpen
if isRightPanelOpen == isLeftPanelOpen {
g.mapRenderer.ViewportDefault()
} else if isRightPanelOpen == true {
g.mapRenderer.ViewportToLeft()
} else {
g.mapRenderer.ViewportToRight()
}
}
// TODO: consider caching the panels to single image that is reused.
func (g *GameControls) Render(target d2render.Surface) {
g.inventory.Render(target)