Stack board buttons vertically when width is constrained
This commit is contained in:
parent
5c8f51679c
commit
90ce540e1a
2 changed files with 43 additions and 11 deletions
|
@ -1,3 +1,6 @@
|
|||
1.0.7:
|
||||
- Optimize user interface for mobile devices
|
||||
|
||||
1.0.6:
|
||||
- Add indicator showing where to drag when bearing off
|
||||
- Optimize drawing board
|
||||
|
|
|
@ -435,6 +435,9 @@ func (b *board) updateBackgroundImage() {
|
|||
|
||||
func (b *board) drawButton(target *ebiten.Image, r image.Rectangle, label string) {
|
||||
w, h := r.Dx(), r.Dy()
|
||||
if w == 0 || h == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
baseImg := image.NewRGBA(image.Rect(0, 0, w, h))
|
||||
|
||||
|
@ -768,23 +771,49 @@ func (b *board) updateButtonRects() {
|
|||
btnResign := b.buttons[4]
|
||||
btnAccept := b.buttons[5]
|
||||
|
||||
w := 200
|
||||
h := 75
|
||||
x, y := (b.w-w)/2, (b.h-h)/2
|
||||
w := game.scale(200)
|
||||
if w > b.innerW/4 {
|
||||
w = b.innerW / 4
|
||||
}
|
||||
h := game.scale(75)
|
||||
if h > b.innerH/10 {
|
||||
h = b.innerH / 10
|
||||
}
|
||||
x, y := int(b.horizontalBorderSize)+(b.innerW-w)/2, int(b.verticalBorderSize)+(b.innerH-h)/2
|
||||
|
||||
padding := game.scale(42)
|
||||
|
||||
if w >= b.innerW/8 {
|
||||
btnReset.rect = image.Rect(x, y, x+w, y+h)
|
||||
btnRoll.rect = image.Rect(x, y, x+w, y+h)
|
||||
btnResign.rect = image.Rect(x, y+h+padding/2, x+w, y+h+padding/2+h)
|
||||
btnOK.rect = image.Rect(x, y, x+w, y+h)
|
||||
btnAccept.rect = image.Rect(x, y, x+w, y+h)
|
||||
|
||||
if b.gameState.MayDouble() && b.gameState.MayRoll() {
|
||||
y -= h/2 + padding/2
|
||||
btnDouble.rect = image.Rect(x, y+h+padding/2, x+w, y+h+padding/2+h)
|
||||
btnRoll.rect = image.Rect(x, y, x+w, y+h)
|
||||
} else if b.gameState.MayReset() && b.gameState.MayOK() {
|
||||
y -= h/2 + padding/2
|
||||
btnReset.rect = image.Rect(x, y+h+padding/2, x+w, y+h+padding/2+h)
|
||||
btnOK.rect = image.Rect(x, y, x+w, y+h)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
const padding = 20
|
||||
btnReset.rect = image.Rect(x, y, x+w, y+h)
|
||||
btnRoll.rect = image.Rect(x, y, x+w, y+h)
|
||||
btnResign.rect = image.Rect(b.w/2-padding/2-w, y, b.w/2-padding/2, y+h)
|
||||
btnOK.rect = image.Rect(b.w/2+padding/2, y, b.w/2+padding/2+w, y+h)
|
||||
btnAccept.rect = image.Rect(b.w/2+padding/2, y, b.w/2+padding/2+w, y+h)
|
||||
btnResign.rect = image.Rect(x-w/2-padding/2, y, x+w/2-padding/2, y+h)
|
||||
btnOK.rect = image.Rect(x, y, x+w, y+h)
|
||||
btnAccept.rect = image.Rect(x+w/2+padding/2, y, x+w/2+w+padding/2, y+h)
|
||||
|
||||
if b.gameState.MayDouble() && b.gameState.MayRoll() {
|
||||
btnDouble.rect = image.Rect(b.w/2-padding/2-w, y, b.w/2-padding/2, y+h)
|
||||
btnRoll.rect = image.Rect(b.w/2+padding/2, y, b.w/2+padding/2+w, y+h)
|
||||
btnDouble.rect = image.Rect(x-w/2-padding/2, y, x+w/2-padding/2, y+h)
|
||||
btnRoll.rect = image.Rect(x+w/2+padding/2, y, x+w/2+w+padding/2, y+h)
|
||||
} else if b.gameState.MayReset() && b.gameState.MayOK() {
|
||||
btnReset.rect = image.Rect(b.w/2-padding/2-w, y, b.w/2-padding/2, y+h)
|
||||
btnOK.rect = image.Rect(b.w/2+padding/2, y, b.w/2+padding/2+w, y+h)
|
||||
btnReset.rect = image.Rect(x-w/2-padding/2, y, x+w/2-padding/2, y+h)
|
||||
btnOK.rect = image.Rect(x+w/2+padding/2, y, x+w/2+w+padding/2, y+h)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue