This commit is contained in:
parent
7bcbc6b73b
commit
d6630ece24
1 changed files with 13 additions and 11 deletions
|
|
@ -560,25 +560,34 @@ func (m *ChessMatch) MatchLoop(ctx context.Context, logger runtime.Logger, db *s
|
||||||
s.Turn = result.Turn
|
s.Turn = result.Turn
|
||||||
s.MoveHistory = append(s.MoveHistory, fmt.Sprintf("%s-%s", moveData.From, moveData.To))
|
s.MoveHistory = append(s.MoveHistory, fmt.Sprintf("%s-%s", moveData.From, moveData.To))
|
||||||
|
|
||||||
|
// ALWAYS broadcast the move to all players/spectators first
|
||||||
|
moveMsg, _ := json.Marshal(map[string]interface{}{
|
||||||
|
"move": moveData,
|
||||||
|
"fen": s.FEN,
|
||||||
|
"turn": s.Turn,
|
||||||
|
})
|
||||||
|
dispatcher.BroadcastMessage(OpCodeMove, moveMsg, nil, nil, true)
|
||||||
|
|
||||||
|
// Then handle game-over if applicable
|
||||||
if result.GameOver {
|
if result.GameOver {
|
||||||
s.GameOver = true
|
s.GameOver = true
|
||||||
s.Result = result.Result
|
s.Result = result.Result
|
||||||
|
|
||||||
// Update ELO
|
// Update ELO only for valid results
|
||||||
if s.Result == "1-0" {
|
if s.Result == "1-0" {
|
||||||
updateElo(ctx, nk, logger, s.WhiteID, s.WhiteName, s.BlackID, s.BlackName, false)
|
updateElo(ctx, nk, logger, s.WhiteID, s.WhiteName, s.BlackID, s.BlackName, false)
|
||||||
} else if s.Result == "0-1" {
|
} else if s.Result == "0-1" {
|
||||||
updateElo(ctx, nk, logger, s.BlackID, s.BlackName, s.WhiteID, s.WhiteName, false)
|
updateElo(ctx, nk, logger, s.BlackID, s.BlackName, s.WhiteID, s.WhiteName, false)
|
||||||
} else {
|
} else if s.Result == "1/2-1/2" {
|
||||||
updateElo(ctx, nk, logger, s.WhiteID, s.WhiteName, s.BlackID, s.BlackName, true)
|
updateElo(ctx, nk, logger, s.WhiteID, s.WhiteName, s.BlackID, s.BlackName, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
msg, _ := json.Marshal(map[string]interface{}{
|
gameOverMsg, _ := json.Marshal(map[string]interface{}{
|
||||||
"fen": s.FEN,
|
"fen": s.FEN,
|
||||||
"result": s.Result,
|
"result": s.Result,
|
||||||
"reason": result.Reason,
|
"reason": result.Reason,
|
||||||
})
|
})
|
||||||
dispatcher.BroadcastMessage(OpCodeGameOver, msg, nil, nil, true)
|
dispatcher.BroadcastMessage(OpCodeGameOver, gameOverMsg, nil, nil, true)
|
||||||
|
|
||||||
label := MatchLabel{
|
label := MatchLabel{
|
||||||
Game: "chess960",
|
Game: "chess960",
|
||||||
|
|
@ -594,13 +603,6 @@ func (m *ChessMatch) MatchLoop(ctx context.Context, logger runtime.Logger, db *s
|
||||||
dispatcher.MatchLabelUpdate(string(labelJSON))
|
dispatcher.MatchLabelUpdate(string(labelJSON))
|
||||||
|
|
||||||
logger.Info("Game over: %s (%s)", s.Result, result.Reason)
|
logger.Info("Game over: %s (%s)", s.Result, result.Reason)
|
||||||
} else {
|
|
||||||
msg, _ := json.Marshal(map[string]interface{}{
|
|
||||||
"move": moveData,
|
|
||||||
"fen": s.FEN,
|
|
||||||
"turn": s.Turn,
|
|
||||||
})
|
|
||||||
dispatcher.BroadcastMessage(OpCodeMove, msg, nil, nil, true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case OpCodeResign:
|
case OpCodeResign:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue