Include player ratings in game state

This commit is contained in:
Trevor Slocum 2024-01-13 22:07:01 -08:00
parent 5c9d812049
commit 89f20dffb9
2 changed files with 21 additions and 0 deletions

View file

@ -352,26 +352,34 @@ func (g *serverGame) addClient(client *serverClient) (spectator bool) {
g.forefeit = 0
}
}()
var rating int
if client.account != nil {
rating = client.account.casual.getRating(g.Variant, g.Points > 1) / 100
}
switch {
case g.client1 != nil:
g.client2 = client
g.Player2.Name = string(client.name)
g.Player2.Rating = rating
client.playerNumber = 2
playerNumber = 2
case g.client2 != nil:
g.client1 = client
g.Player1.Name = string(client.name)
g.Player1.Rating = rating
client.playerNumber = 1
playerNumber = 1
default:
if RandInt(2) == 0 {
g.client1 = client
g.Player1.Name = string(client.name)
g.Player1.Rating = rating
client.playerNumber = 1
playerNumber = 1
} else {
g.client2 = client
g.Player2.Name = string(client.name)
g.Player2.Rating = rating
client.playerNumber = 2
playerNumber = 2
}
@ -426,10 +434,12 @@ func (g *serverGame) removeClient(client *serverClient) {
case g.client1 == client:
g.client1 = nil
g.Player1.Name = ""
g.Player1.Rating = 0
playerNumber = 1
case g.client2 == client:
g.client2 = nil
g.Player2.Name = ""
g.Player2.Rating = 0
playerNumber = 2
default:
for i, spectator := range g.spectators {
@ -689,6 +699,16 @@ func (g *serverGame) handleWin() bool {
g.eachClient(func(client *serverClient) {
client.sendEvent(winEvent)
})
if g.client1 != nil && g.client1.account != nil {
g.Player1.Rating = g.client1.account.casual.getRating(g.Variant, g.Points > 1) / 100
}
if g.client2 != nil && g.client2.account != nil {
g.Player2.Rating = g.client2.account.casual.getRating(g.Variant, g.Points > 1) / 100
}
g.eachClient(func(client *serverClient) {
g.sendBoard(client, false)
})
return true
}

View file

@ -3,6 +3,7 @@ package bgammon
type Player struct {
Number int8 // 1 black, 2 white
Name string
Rating int
Points int8
Entered bool // Whether all checkers have entered the board. (Acey-deucey)
}