Auto-generate nicknames for invitees joining via link
Invitees no longer need to enter a nickname - they automatically join with a random name like "Swift Tiger" or "Happy Falcon". Game creators still enter their nickname manually.
This commit is contained in:
@@ -50,6 +50,24 @@ func GenerateID(size int) string {
|
||||
return hex.EncodeToString(b)
|
||||
}
|
||||
|
||||
func GenerateNickname() string {
|
||||
adjectives := []string{
|
||||
"Swift", "Happy", "Clever", "Brave", "Mighty",
|
||||
"Quick", "Calm", "Bold", "Lucky", "Wise",
|
||||
"Eager", "Noble", "Keen", "Bright", "Vivid",
|
||||
}
|
||||
nouns := []string{
|
||||
"Tiger", "Falcon", "Dragon", "Phoenix", "Wolf",
|
||||
"Eagle", "Panda", "Otter", "Fox", "Bear",
|
||||
"Hawk", "Lion", "Raven", "Shark", "Owl",
|
||||
}
|
||||
b := make([]byte, 2)
|
||||
rand.Read(b)
|
||||
adj := adjectives[int(b[0])%len(adjectives)]
|
||||
noun := nouns[int(b[1])%len(nouns)]
|
||||
return adj + " " + noun
|
||||
}
|
||||
|
||||
type GameInstance struct {
|
||||
game *Game
|
||||
gameMu sync.RWMutex
|
||||
|
||||
23
main.go
23
main.go
@@ -106,8 +106,26 @@ func main() {
|
||||
c.Sync()
|
||||
})
|
||||
|
||||
// If nickname exists in session and game exists, join immediately
|
||||
if gameExists && sessionNickname != "" && gi.GetPlayerColor(playerID) == 0 {
|
||||
// Auto-join logic
|
||||
if gameExists && gi.GetPlayerColor(playerID) == 0 {
|
||||
g := gi.GetGame()
|
||||
// Invitee: game is waiting for second player - auto-generate nickname and join
|
||||
if g.Status == game.StatusWaitingForPlayer {
|
||||
name := sessionNickname
|
||||
if name == "" {
|
||||
name = game.GenerateNickname()
|
||||
c.Session().Set("nickname", name)
|
||||
}
|
||||
player := &game.Player{
|
||||
ID: playerID,
|
||||
Nickname: name,
|
||||
}
|
||||
gi.Join(&game.PlayerSession{
|
||||
Player: player,
|
||||
Sync: c,
|
||||
})
|
||||
} else if sessionNickname != "" {
|
||||
// Reconnecting player with existing nickname
|
||||
player := &game.Player{
|
||||
ID: playerID,
|
||||
Nickname: sessionNickname,
|
||||
@@ -117,6 +135,7 @@ func main() {
|
||||
Sync: c,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
c.View(func() h.H {
|
||||
// Game not found - redirect to home
|
||||
|
||||
Reference in New Issue
Block a user