Support account registration
This commit is contained in:
parent
99f7fc214f
commit
9796f49f43
4 changed files with 155 additions and 16 deletions
|
@ -1,3 +1,6 @@
|
|||
1.1.9:
|
||||
- Support account registration
|
||||
|
||||
1.1.8:
|
||||
- Allow bearing checkers off by double clicking
|
||||
- Allow displaying previous moves on board
|
||||
|
|
|
@ -48,6 +48,9 @@ func (c *Client) Connect() {
|
|||
}
|
||||
|
||||
func (c *Client) logIn() []byte {
|
||||
if game.register {
|
||||
return []byte(fmt.Sprintf("rj %s %s %s %s\nlist\n", APPNAME, game.Email, game.Username, game.Password))
|
||||
}
|
||||
loginInfo := strings.ReplaceAll(c.Username, " ", "_")
|
||||
if c.Username != "" && c.Password != "" {
|
||||
loginInfo = fmt.Sprintf("%s %s", strings.ReplaceAll(c.Username, " ", "_"), strings.ReplaceAll(c.Password, " ", "_"))
|
||||
|
|
153
game/game.go
153
game/game.go
|
@ -116,6 +116,7 @@ var (
|
|||
diceSize int
|
||||
|
||||
connectGrid *etk.Grid
|
||||
registerGrid *etk.Grid
|
||||
createGameGrid *etk.Grid
|
||||
joinGameGrid *etk.Grid
|
||||
|
||||
|
@ -542,8 +543,10 @@ type Game struct {
|
|||
spinnerIndex int
|
||||
|
||||
ServerAddress string
|
||||
Email string
|
||||
Username string
|
||||
Password string
|
||||
register bool
|
||||
loggedIn bool
|
||||
|
||||
Watch bool
|
||||
|
@ -571,6 +574,10 @@ type Game struct {
|
|||
connectServer *etk.Input
|
||||
connectKeyboardButton *etk.Button
|
||||
|
||||
registerEmail *etk.Input
|
||||
registerUsername *etk.Input
|
||||
registerPassword *etk.Input
|
||||
|
||||
pressedKeys []ebiten.Key
|
||||
|
||||
cursorX, cursorY int
|
||||
|
@ -601,6 +608,8 @@ type Game struct {
|
|||
|
||||
loaded bool
|
||||
|
||||
showRegister bool
|
||||
|
||||
*sync.Mutex
|
||||
}
|
||||
|
||||
|
@ -647,6 +656,83 @@ func NewGame() *Game {
|
|||
labelWidth = 260
|
||||
}
|
||||
|
||||
connectAddress := game.ServerAddress
|
||||
if connectAddress == "" {
|
||||
connectAddress = DefaultServerAddress
|
||||
}
|
||||
g.connectServer = etk.NewInput("", connectAddress, func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
|
||||
{
|
||||
headerLabel := newCenteredText(gotext.Get("Register"))
|
||||
emailLabel := newCenteredText(gotext.Get("Email"))
|
||||
nameLabel := newCenteredText(gotext.Get("Username"))
|
||||
passwordLabel := newCenteredText(gotext.Get("Password"))
|
||||
serverLabel := newCenteredText(gotext.Get("Server"))
|
||||
|
||||
g.registerEmail = etk.NewInput("", "", func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
centerInput(g.registerEmail)
|
||||
|
||||
g.registerUsername = etk.NewInput("", "", func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
centerInput(g.registerUsername)
|
||||
|
||||
g.registerPassword = etk.NewInput("", "", func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
centerInput(g.registerPassword)
|
||||
|
||||
cancelButton := etk.NewButton(gotext.Get("Cancel"), func() error {
|
||||
g.selectCancel()
|
||||
return nil
|
||||
})
|
||||
|
||||
submitButton := etk.NewButton(gotext.Get("Submit"), func() error {
|
||||
g.selectConfirmRegister()
|
||||
return nil
|
||||
})
|
||||
|
||||
infoLabel := etk.NewText(gotext.Get("Please enter a valid email address, or it will not be possible to reset your password."))
|
||||
|
||||
footerLabel := etk.NewText("Boxcars " + version)
|
||||
footerLabel.SetHorizontal(messeji.AlignEnd)
|
||||
footerLabel.SetVertical(messeji.AlignEnd)
|
||||
|
||||
grid := etk.NewGrid()
|
||||
grid.SetColumnPadding(int(g.Board.horizontalBorderSize / 2))
|
||||
grid.SetRowPadding(yPadding)
|
||||
grid.SetColumnSizes(xPadding, labelWidth, -1, -1, xPadding)
|
||||
grid.AddChildAt(headerLabel, 0, 0, 4, 1)
|
||||
grid.AddChildAt(etk.NewBox(), 4, 0, 1, 1)
|
||||
grid.AddChildAt(emailLabel, 1, 1, 2, 1)
|
||||
grid.AddChildAt(g.registerEmail, 2, 1, 2, 1)
|
||||
grid.AddChildAt(nameLabel, 1, 2, 2, 1)
|
||||
grid.AddChildAt(g.registerUsername, 2, 2, 2, 1)
|
||||
grid.AddChildAt(passwordLabel, 1, 3, 2, 1)
|
||||
grid.AddChildAt(g.registerPassword, 2, 3, 2, 1)
|
||||
y := 4
|
||||
if ShowServerSettings {
|
||||
centerInput(g.connectServer)
|
||||
grid.AddChildAt(serverLabel, 1, y, 2, 1)
|
||||
grid.AddChildAt(g.connectServer, 2, y, 2, 1)
|
||||
y++
|
||||
}
|
||||
{
|
||||
subGrid := etk.NewGrid()
|
||||
subGrid.SetColumnSizes(-1, xPadding*2, -1)
|
||||
subGrid.AddChildAt(cancelButton, 0, 0, 1, 1)
|
||||
subGrid.AddChildAt(submitButton, 2, 0, 1, 1)
|
||||
grid.AddChildAt(subGrid, 1, y, 3, 1)
|
||||
}
|
||||
grid.AddChildAt(infoLabel, 1, y+1, 3, 1)
|
||||
grid.AddChildAt(footerLabel, 1, y+2, 3, 1)
|
||||
registerGrid = grid
|
||||
}
|
||||
|
||||
{
|
||||
headerLabel := newCenteredText(gotext.Get("%s - Free Online Backgammon", "bgammon.org"))
|
||||
nameLabel := newCenteredText(gotext.Get("Username"))
|
||||
|
@ -688,6 +774,8 @@ func NewGame() *Game {
|
|||
return nil
|
||||
})
|
||||
|
||||
registerButton := etk.NewButton(gotext.Get("Register"), g.selectRegister)
|
||||
|
||||
offlineButton := etk.NewButton(gotext.Get("Play Offline"), func() error {
|
||||
g.playOffline()
|
||||
return nil
|
||||
|
@ -705,13 +793,6 @@ func NewGame() *Game {
|
|||
grid.AddChildAt(g.connectPassword, 2, 2, 2, 1)
|
||||
y := 3
|
||||
if ShowServerSettings {
|
||||
connectAddress := game.ServerAddress
|
||||
if connectAddress == "" {
|
||||
connectAddress = DefaultServerAddress
|
||||
}
|
||||
g.connectServer = etk.NewInput("", connectAddress, func(text string) (handled bool) {
|
||||
return false
|
||||
})
|
||||
centerInput(g.connectServer)
|
||||
grid.AddChildAt(serverLabel, 1, y, 2, 1)
|
||||
grid.AddChildAt(g.connectServer, 2, y, 2, 1)
|
||||
|
@ -720,12 +801,14 @@ func NewGame() *Game {
|
|||
{
|
||||
subGrid := etk.NewGrid()
|
||||
subGrid.SetColumnSizes(-1, xPadding*2, -1)
|
||||
subGrid.SetRowSizes(-1, xPadding*2, -1)
|
||||
subGrid.AddChildAt(connectButton, 0, 0, 1, 1)
|
||||
subGrid.AddChildAt(offlineButton, 2, 0, 1, 1)
|
||||
subGrid.AddChildAt(registerButton, 2, 0, 1, 1)
|
||||
grid.AddChildAt(subGrid, 1, y, 3, 1)
|
||||
}
|
||||
grid.AddChildAt(infoLabel, 1, y+1, 3, 1)
|
||||
grid.AddChildAt(footerLabel, 1, y+2, 3, 1)
|
||||
grid.AddChildAt(offlineButton, 1, y+1, 3, 1)
|
||||
grid.AddChildAt(infoLabel, 1, y+2, 3, 1)
|
||||
grid.AddChildAt(footerLabel, 1, y+3, 3, 1)
|
||||
connectGrid = grid
|
||||
}
|
||||
|
||||
|
@ -960,6 +1043,7 @@ func (g *Game) handleEvent(e interface{}) {
|
|||
switch ev := e.(type) {
|
||||
case *bgammon.EventWelcome:
|
||||
g.Client.Username = ev.PlayerName
|
||||
g.register = false
|
||||
|
||||
areIs := "are"
|
||||
if ev.Clients == 1 {
|
||||
|
@ -1184,9 +1268,6 @@ func (g *Game) Connect() {
|
|||
g.lobby.c = g.Client
|
||||
g.Board.Client = g.Client
|
||||
|
||||
g.Username = ""
|
||||
g.Password = ""
|
||||
|
||||
go g.handleEvents()
|
||||
|
||||
c := g.Client
|
||||
|
@ -1247,6 +1328,34 @@ func (g *Game) ConnectLocal(conn net.Conn) {
|
|||
go c.connectTCP(conn)
|
||||
}
|
||||
|
||||
func (g *Game) selectRegister() error {
|
||||
g.showRegister = true
|
||||
g.registerUsername.Field.SetText(g.connectUsername.Text())
|
||||
g.registerPassword.Field.SetText(g.connectPassword.Text())
|
||||
g.setRoot(registerGrid)
|
||||
etk.SetFocus(g.registerEmail)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Game) selectCancel() error {
|
||||
g.showRegister = false
|
||||
g.setRoot(connectGrid)
|
||||
etk.SetFocus(g.connectUsername)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Game) selectConfirmRegister() error {
|
||||
g.Email = g.registerEmail.Text()
|
||||
g.Username = g.registerUsername.Text()
|
||||
g.Password = g.registerPassword.Text()
|
||||
if ShowServerSettings {
|
||||
g.ServerAddress = g.connectServer.Text()
|
||||
}
|
||||
g.register = true
|
||||
g.Connect()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Game) selectConnect() error {
|
||||
g.Username = g.connectUsername.Text()
|
||||
g.Password = g.connectPassword.Text()
|
||||
|
@ -1268,9 +1377,19 @@ func (g *Game) handleInput(keys []ebiten.Key) error {
|
|||
etk.SetFocus(g.connectPassword)
|
||||
case g.connectPassword:
|
||||
etk.SetFocus(g.connectUsername)
|
||||
case g.registerEmail:
|
||||
etk.SetFocus(g.registerUsername)
|
||||
case g.registerUsername:
|
||||
etk.SetFocus(g.registerPassword)
|
||||
case g.registerPassword:
|
||||
etk.SetFocus(g.registerEmail)
|
||||
}
|
||||
case ebiten.KeyEnter, ebiten.KeyKPEnter:
|
||||
g.selectConnect()
|
||||
if g.showRegister {
|
||||
g.selectConfirmRegister()
|
||||
} else {
|
||||
g.selectConnect()
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
@ -1664,9 +1783,11 @@ func (g *Game) layoutConnect() {
|
|||
}
|
||||
|
||||
if ShowServerSettings {
|
||||
connectGrid.SetRowSizes(60, fieldHeight, fieldHeight, fieldHeight, g.scale(baseButtonHeight), infoHeight)
|
||||
connectGrid.SetRowSizes(60, fieldHeight, fieldHeight, fieldHeight, g.scale(baseButtonHeight), g.scale(baseButtonHeight), infoHeight)
|
||||
registerGrid.SetRowSizes(60, fieldHeight, fieldHeight, fieldHeight, fieldHeight, g.scale(baseButtonHeight), infoHeight)
|
||||
} else {
|
||||
connectGrid.SetRowSizes(60, fieldHeight, fieldHeight, g.scale(baseButtonHeight), infoHeight)
|
||||
connectGrid.SetRowSizes(60, fieldHeight, fieldHeight, g.scale(baseButtonHeight), g.scale(baseButtonHeight), infoHeight)
|
||||
registerGrid.SetRowSizes(60, fieldHeight, fieldHeight, fieldHeight, g.scale(baseButtonHeight), infoHeight)
|
||||
}
|
||||
|
||||
if !g.loadedConnect {
|
||||
|
|
|
@ -55,6 +55,9 @@ msgstr ""
|
|||
msgid "Double"
|
||||
msgstr ""
|
||||
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to join match: %s"
|
||||
msgstr ""
|
||||
|
||||
|
@ -115,6 +118,9 @@ msgstr ""
|
|||
msgid "Playing offline."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please enter a valid email address, or it will not be possible to reset your password."
|
||||
msgstr ""
|
||||
|
||||
msgid "Points"
|
||||
msgstr ""
|
||||
|
||||
|
@ -124,6 +130,9 @@ msgstr ""
|
|||
msgid "Refresh"
|
||||
msgstr ""
|
||||
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
msgid "Resign"
|
||||
msgstr ""
|
||||
|
||||
|
@ -154,6 +163,9 @@ msgstr ""
|
|||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
msgid "To log in as a guest, enter a username (if you want) and do not enter a password."
|
||||
msgstr ""
|
||||
|
||||
|
|
Loading…
Reference in a new issue