leaderboard
This commit is contained in:
@@ -45,6 +45,21 @@ func InitModule(
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err := nk.LeaderboardCreate(
|
||||||
|
ctx,
|
||||||
|
"tictactoe", // id
|
||||||
|
true, // authoritative
|
||||||
|
"desc", // sortOrder
|
||||||
|
"incr", // operator
|
||||||
|
"", // resetSchedule
|
||||||
|
map[string]interface{}{}, // metadata
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil && err.Error() != "Leaderboard ID already exists" {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Info("Leaderboard tictactoe ready")
|
||||||
logger.Info("Go module loaded successfully!")
|
logger.Info("Go module loaded successfully!")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,6 +244,34 @@ func (m *TicTacToeMatch) MatchLoop(
|
|||||||
s.Turn = 1 - s.Turn
|
s.Turn = 1 - s.Turn
|
||||||
logger.Info("Turn advanced to %d", s.Turn)
|
logger.Info("Turn advanced to %d", s.Turn)
|
||||||
}
|
}
|
||||||
|
if s.GameOver {
|
||||||
|
if s.Winner != "" && s.Winner != "draw" && s.Winner != "forfeit" {
|
||||||
|
// winner = "X" or "O"
|
||||||
|
winningIndex := 0
|
||||||
|
if s.Winner == "O" {
|
||||||
|
winningIndex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
winnerUserId := s.Players[winningIndex]
|
||||||
|
|
||||||
|
// Write +1 win
|
||||||
|
_, err := nk.LeaderboardRecordWrite(
|
||||||
|
ctx,
|
||||||
|
"tictactoe", // leaderboard ID
|
||||||
|
winnerUserId, // owner ID
|
||||||
|
"", // username (optional)
|
||||||
|
int64(1), // score
|
||||||
|
int64(0), // subscore
|
||||||
|
map[string]interface{}{"result": "win"},
|
||||||
|
nil, // overrideOperator
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("Failed to write leaderboard win: %v", err)
|
||||||
|
} else {
|
||||||
|
logger.Info("Leaderboard updated for: %s", winnerUserId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If anything changed (or periodically if you want), broadcast updated state to everyone
|
// If anything changed (or periodically if you want), broadcast updated state to everyone
|
||||||
|
|||||||
Reference in New Issue
Block a user