feat: notification for finish game and top players
This commit is contained in:
parent
db9fb76198
commit
73edc490e8
1 changed files with 19 additions and 17 deletions
|
@ -419,7 +419,8 @@ func VoteToFinishGame(roomId string) bool {
|
|||
return false // Player was not found in the room
|
||||
}
|
||||
|
||||
// todo: Можно добавить notify для уведомления, сколько людей проголосовало за завершение игры
|
||||
var result = fmt.Sprintf("voted to finish game:%d, need votes:%d", voted, len(room.Players))
|
||||
sendMessageToPlayers("FinishVote", result)
|
||||
|
||||
return automaticFinishGame(ctx, &room, voted)
|
||||
}
|
||||
|
@ -435,24 +436,9 @@ func ManuallyFinishGame(roomId string) bool {
|
|||
return finishGame(ctx, &room)
|
||||
}
|
||||
|
||||
func finishGame(ctx storage.Context, room *Room) bool {
|
||||
var winners = getGameWinner(room)
|
||||
|
||||
// todo: Отправка награды победителям и хосту
|
||||
|
||||
// todo: Нотификация результатов всей игры
|
||||
|
||||
room.Status = RoomStatusFinished
|
||||
setRoom(ctx, room)
|
||||
return true
|
||||
}
|
||||
|
||||
// todo: @vr61v /check
|
||||
func getGameWinner(room *Room) []Player {
|
||||
func chooseWonPlayers(room *Room, GameWinnersCount int) []Player {
|
||||
var players = room.Players
|
||||
var winners []Player
|
||||
var GameWinnersCount = room.GameWinnersCount
|
||||
|
||||
sort.Slice(players, func(a, b int) bool {
|
||||
return players[a].RoundsWon > players[b].RoundsWon
|
||||
})
|
||||
|
@ -479,6 +465,22 @@ func getGameWinner(room *Room) []Player {
|
|||
return winners
|
||||
}
|
||||
|
||||
func finishGame(ctx storage.Context, room *Room) bool {
|
||||
var winners = chooseWonPlayers(room, room.GameWinnersCount)
|
||||
|
||||
var result = fmt.Sprintf("count winners:%d\n", len(winners))
|
||||
for i, player := range winners {
|
||||
result += fmt.Sprintf("place:%d, player:%s, score:%d\n", i, player.Wallet, player.RoundsWon)
|
||||
}
|
||||
sendMessageToPlayers("FinishGame", result)
|
||||
|
||||
// todo: Отправка награды победителям и хосту
|
||||
|
||||
room.Status = RoomStatusFinished
|
||||
setRoom(ctx, room)
|
||||
return true
|
||||
}
|
||||
|
||||
/* todo: Логика выкидывания игрока из игры, если пропускает несколько вопросов подряд -
|
||||
* делаем булевый флаг по которому определяем, активен игрок или нет.
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue