|
@@ -59,8 +59,8 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
var mafia = Players.Values.Where(player => player.GetRole() is Roles.Mafia).ToArray();
|
|
var mafia = Players.Values.Where(player => player.GetRole() is Roles.Mafia).ToArray();
|
|
var don = Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Don);
|
|
var don = Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Don);
|
|
var message = strings.your_teammates;
|
|
var message = strings.your_teammates;
|
|
- if (don != null) message += $" \\({don.TurnOrder}\\) {don.NickName} - {roles.Don}";
|
|
|
|
- message = mafia.Aggregate(message, (current, player) => current + $" \\({player.TurnOrder}\\) {player.NickName}");
|
|
|
|
|
|
+ if (don != null) message += $"\n\\({don.TurnOrder}\\) {don.NickName} - {roles.Don}";
|
|
|
|
+ message = mafia.Aggregate(message, (current, player) => current + $"\n\\({player.TurnOrder}\\) {player.NickName}");
|
|
await MafiaCh.Send(message);
|
|
await MafiaCh.Send(message);
|
|
var resetEvent = new ManualResetEvent(false);
|
|
var resetEvent = new ManualResetEvent(false);
|
|
var timer = new Timer
|
|
var timer = new Timer
|
|
@@ -200,11 +200,11 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
public async Task<Message> PutUpVote(long playerId, long targetId)
|
|
public async Task<Message> PutUpVote(long playerId, long targetId)
|
|
{
|
|
{
|
|
- var player = await UserDao.GetPlayerById(playerId);
|
|
|
|
- VoteUpList.AddUnique(Players[targetId]);
|
|
|
|
|
|
+ var player = Players[playerId];
|
|
|
|
+ VoteUpList.AddUnique(player);
|
|
if (playerId != targetId)
|
|
if (playerId != targetId)
|
|
{
|
|
{
|
|
- var target = await UserDao.GetPlayerById(targetId);
|
|
|
|
|
|
+ var target = Players[targetId];
|
|
await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to} {target.NickName}");
|
|
await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to} {target.NickName}");
|
|
return await Bot.SendWithMarkdown2(player.ChatId, $"{strings.you_vote_player} {target.NickName}");
|
|
return await Bot.SendWithMarkdown2(player.ChatId, $"{strings.you_vote_player} {target.NickName}");
|
|
}
|
|
}
|
|
@@ -216,22 +216,37 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
{
|
|
{
|
|
await Task.Run(async () =>
|
|
await Task.Run(async () =>
|
|
{
|
|
{
|
|
- foreach (var (_, player) in Players)
|
|
|
|
|
|
+ var aliveMafia = Players.Values.Where(p => p.GetRole() is Roles.Don or Roles.Mafia && p.IsAlive).ToList();
|
|
|
|
+ if (aliveMafia.Count == 0)
|
|
{
|
|
{
|
|
- player.CurrentRole = new NoneRole();
|
|
|
|
- player.IsPlaying = false;
|
|
|
|
- player.IsSpeaker = false;
|
|
|
|
- player.IsAlive = true;
|
|
|
|
|
|
+ await PlayersCh.Send(strings.villagers_won, exceptDied: false);
|
|
|
|
+ await PlayersCh.SendSticker(Stickers.Sticker["VillagerWins"], false);
|
|
}
|
|
}
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ await PlayersCh.Send(strings.mafia_won, exceptDied: false);
|
|
|
|
+ await PlayersCh.SendSticker(Stickers.Sticker["MafiaWins"], false);
|
|
|
|
+ }
|
|
|
|
+ var rolesMessage = strings.in_this_game_roles;
|
|
|
|
+ var sortedPLayers = Players.Values.ToList();
|
|
|
|
+ sortedPLayers.Sort((x, y) => x.TurnOrder - y.TurnOrder);
|
|
|
|
+ foreach (var player in sortedPLayers)
|
|
|
|
+ {
|
|
|
|
+ rolesMessage += $"\n\\({player.TurnOrder}\\) {player.NickName} - {player.GetRoleName()}";
|
|
|
|
+ player.ResetState();
|
|
|
|
+ }
|
|
|
|
+ await PlayersCh.Send(rolesMessage);
|
|
IsRunning = false;
|
|
IsRunning = false;
|
|
IsDay = false;
|
|
IsDay = false;
|
|
_turnOrder.Clear();
|
|
_turnOrder.Clear();
|
|
|
|
+ Settings.Clear();
|
|
|
|
+ foreach (var (_, list) in PlayersRole) list.Clear();
|
|
if (!Players.ContainsKey(Owner.Id) || Players.Count == 0) new Task(async() =>
|
|
if (!Players.ContainsKey(Owner.Id) || Players.Count == 0) new Task(async() =>
|
|
await RoomController.DissolveRoom(RoomEncrypter.GetCode(RoomName))).Start();
|
|
await RoomController.DissolveRoom(RoomEncrypter.GetCode(RoomName))).Start();
|
|
else
|
|
else
|
|
{
|
|
{
|
|
await Bot.SendWithMarkdown2(Owner.ChatId, strings.thanks_for_game, Keyboard.OwnerGameMenu);
|
|
await Bot.SendWithMarkdown2(Owner.ChatId, strings.thanks_for_game, Keyboard.OwnerGameMenu);
|
|
- await PlayersCh.SendExcept(Owner.Id, strings.thanks_for_game, Keyboard.PlayerGameMenu);
|
|
|
|
|
|
+ await PlayersCh.SendExcept(Owner.Id, strings.thanks_for_game, Keyboard.PlayerGameMenu, false);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|