Support creating acey-deucey matches

This commit is contained in:
Trevor Slocum 2023-11-27 20:28:32 -08:00
parent 059f536d70
commit 32d290c504
3 changed files with 43 additions and 5 deletions

View file

@ -1,3 +1,6 @@
1.1.5:
- Support playing acey-deucey games
1.1.4:
- Display player "off" spaces
- Allow bearing off by moving checkers to the "off" spaces

View file

@ -697,6 +697,7 @@ func NewGame() *Game {
nameLabel := etk.NewText(gotext.Get("Name"))
pointsLabel := etk.NewText(gotext.Get("Points"))
passwordLabel := etk.NewText(gotext.Get("Password"))
variantLabel := etk.NewText(gotext.Get("Variant"))
g.lobby.createGameName = etk.NewInput("", "", func(text string) (handled bool) {
return false
@ -713,6 +714,27 @@ func NewGame() *Game {
})
centerInput(g.lobby.createGamePassword)
g.lobby.createGameCheckbox = etk.NewCheckbox(g.lobby.toggleAceyDeucey)
g.lobby.createGameCheckbox.SetBorderColor(triangleA)
g.lobby.createGameCheckbox.SetCheckColor(triangleA)
g.lobby.createGameCheckbox.SetSelected(false)
textField := etk.NewText(gotext.Get("Acey-deucey"))
aceyDeuceyLabel := &ClickableText{
Text: textField,
onSelected: func() {
g.lobby.createGameCheckbox.SetSelected(!g.lobby.createGameCheckbox.Selected())
g.lobby.toggleAceyDeucey()
},
}
aceyDeuceyLabel.SetVertical(messeji.AlignCenter)
aceyDeuceyGrid := etk.NewGrid()
aceyDeuceyGrid.SetColumnSizes(50, -1)
aceyDeuceyGrid.SetRowSizes(50, -1)
aceyDeuceyGrid.AddChildAt(g.lobby.createGameCheckbox, 0, 0, 1, 1)
aceyDeuceyGrid.AddChildAt(aceyDeuceyLabel, 1, 0, 1, 1)
grid := etk.NewGrid()
grid.SetColumnPadding(int(g.Board.horizontalBorderSize / 2))
grid.SetRowPadding(20)
@ -726,6 +748,8 @@ func NewGame() *Game {
grid.AddChildAt(g.lobby.createGamePoints, 2, 2, 1, 1)
grid.AddChildAt(passwordLabel, 1, 3, 1, 1)
grid.AddChildAt(g.lobby.createGamePassword, 2, 3, 1, 1)
grid.AddChildAt(variantLabel, 1, 4, 1, 1)
grid.AddChildAt(aceyDeuceyGrid, 2, 4, 1, 1)
createGameGrid = grid
createGameContainer = etk.NewGrid()

View file

@ -68,10 +68,12 @@ type lobby struct {
refresh bool
showCreateGame bool
createGameName *etk.Input
createGamePoints *etk.Input
createGamePassword *etk.Input
showCreateGame bool
createGameName *etk.Input
createGamePoints *etk.Input
createGamePassword *etk.Input
createGameCheckbox *etk.Checkbox
createGameAceyDeucey bool
showJoinGame bool
joinGameID int
@ -137,6 +139,11 @@ func (l *lobby) toggleKeyboard() error {
return nil
}
func (l *lobby) toggleAceyDeucey() error {
l.createGameAceyDeucey = !l.createGameAceyDeucey
return nil
}
func (l *lobby) handleRefreshTimer() {
t := time.NewTicker(time.Second)
for range t.C {
@ -184,7 +191,11 @@ func (l *lobby) confirmCreateGame() {
if err != nil {
points = 1
}
l.c.Out <- []byte(fmt.Sprintf("c %s %d %s", typeAndPassword, points, game.lobby.createGameName.Text()))
acey := 0
if game.lobby.createGameAceyDeucey {
acey = 1
}
l.c.Out <- []byte(fmt.Sprintf("c %s %d %d %s", typeAndPassword, points, acey, game.lobby.createGameName.Text()))
}
func (l *lobby) confirmJoinGame() {