Replace reset button with undo
This commit is contained in:
parent
e3f9f0454a
commit
8517d19627
5 changed files with 33 additions and 16 deletions
|
@ -1,3 +1,6 @@
|
|||
1.0.9:
|
||||
- Replace reset button with undo
|
||||
|
||||
1.0.8:
|
||||
- Add in-game menu
|
||||
- Add settings dialog
|
||||
|
|
|
@ -242,8 +242,8 @@ func NewBoard() *board {
|
|||
label: gotext.Get("Roll"),
|
||||
selected: b.selectRoll,
|
||||
}, {
|
||||
label: gotext.Get("Reset"),
|
||||
selected: b.selectReset,
|
||||
label: gotext.Get("Undo"),
|
||||
selected: b.selectUndo,
|
||||
}, {
|
||||
label: gotext.Get("OK"),
|
||||
selected: b.selectOK,
|
||||
|
@ -366,8 +366,22 @@ func (b *board) selectOK() {
|
|||
b.Client.Out <- []byte("ok")
|
||||
}
|
||||
|
||||
func (b *board) selectReset() {
|
||||
b.Client.Out <- []byte("reset")
|
||||
func (b *board) selectUndo() {
|
||||
go func() {
|
||||
b.Lock()
|
||||
defer b.Unlock()
|
||||
if b.gameState.Turn != b.gameState.PlayerNumber {
|
||||
return
|
||||
}
|
||||
l := len(b.gameState.Moves)
|
||||
if l == 0 {
|
||||
return
|
||||
}
|
||||
lastMove := b.gameState.Moves[l-1]
|
||||
b.Client.Out <- []byte(fmt.Sprintf("mv %d/%d", lastMove[1], lastMove[0]))
|
||||
b.movePiece(lastMove[1], lastMove[0])
|
||||
b.gameState.Moves = b.gameState.Moves[:l-1]
|
||||
}()
|
||||
}
|
||||
|
||||
func (b *board) selectDouble() {
|
||||
|
@ -1412,7 +1426,7 @@ func (b *board) Update() {
|
|||
if b.dragging == nil {
|
||||
// TODO allow grabbing multiple pieces by grabbing further down the stack
|
||||
|
||||
if b.playerTurn() && inpututil.IsMouseButtonJustPressed(ebiten.MouseButtonLeft) && !handled && len(b.gameState.Available) > 0 {
|
||||
if !handled && b.playerTurn() && inpututil.IsMouseButtonJustPressed(ebiten.MouseButtonLeft) {
|
||||
s, space := b.spriteAt(cx, cy)
|
||||
if s != nil && s.colorWhite == (b.gameState.PlayerNumber == 2) {
|
||||
b.startDrag(s, space)
|
||||
|
@ -1424,7 +1438,7 @@ func (b *board) Update() {
|
|||
game.EnableTouchInput()
|
||||
x, y := ebiten.TouchPosition(id)
|
||||
handled := b.handleClick(x, y)
|
||||
if !handled && b.playerTurn() && len(b.gameState.Available) > 0 {
|
||||
if !handled && b.playerTurn() {
|
||||
b.dragX, b.dragY = x, y
|
||||
|
||||
s, space := b.spriteAt(x, y)
|
||||
|
|
|
@ -34,7 +34,7 @@ import (
|
|||
"golang.org/x/image/font/opentype"
|
||||
)
|
||||
|
||||
const version = "v1.0.8"
|
||||
const version = "v1.0.9"
|
||||
|
||||
const MaxDebug = 1
|
||||
|
||||
|
|
6
go.mod
6
go.mod
|
@ -24,7 +24,7 @@ require (
|
|||
github.com/jfreymuth/vorbis v1.0.2 // indirect
|
||||
golang.org/x/exp/shiny v0.0.0-20231006140011-7918f672742d // indirect
|
||||
golang.org/x/mobile v0.0.0-20231006135142-2b44d11868fe // indirect
|
||||
golang.org/x/sync v0.4.0 // indirect
|
||||
golang.org/x/sys v0.13.0 // indirect
|
||||
golang.org/x/text v0.13.0 // indirect
|
||||
golang.org/x/sync v0.5.0 // indirect
|
||||
golang.org/x/sys v0.14.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
)
|
||||
|
|
12
go.sum
12
go.sum
|
@ -43,23 +43,23 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ=
|
||||
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
|
||||
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
|
||||
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
|
||||
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
|
||||
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
|
|
Loading…
Reference in a new issue