|
@@ -27,7 +27,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task FirstDay()
|
|
private async Task FirstDay()
|
|
{
|
|
{
|
|
- IsDay = true;
|
|
|
|
|
|
+ _isDay = true;
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Day"]);
|
|
await PlayersCh.Send(strings.first_day_message);
|
|
await PlayersCh.Send(strings.first_day_message);
|
|
await Task.Run(async() =>
|
|
await Task.Run(async() =>
|
|
@@ -48,7 +48,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task FirstNight()
|
|
private async Task FirstNight()
|
|
{
|
|
{
|
|
- IsDay = false;
|
|
|
|
|
|
+ _isDay = false;
|
|
await Task.Run(async() =>
|
|
await Task.Run(async() =>
|
|
{
|
|
{
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
|
|
@@ -105,7 +105,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task DayPhase()
|
|
private async Task DayPhase()
|
|
{
|
|
{
|
|
- IsDay = true;
|
|
|
|
|
|
+ _isDay = true;
|
|
var turnsCount = _turnOrder.Count;
|
|
var turnsCount = _turnOrder.Count;
|
|
Player firstPlayer = null;
|
|
Player firstPlayer = null;
|
|
for (var i = 0; i < turnsCount; ++i)
|
|
for (var i = 0; i < turnsCount; ++i)
|
|
@@ -113,6 +113,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
var player = _turnOrder.Dequeue();
|
|
var player = _turnOrder.Dequeue();
|
|
if(!player.IsPlaying || !player.IsAlive) continue;
|
|
if(!player.IsPlaying || !player.IsAlive) continue;
|
|
if (firstPlayer == null) player.IsFirst = true;
|
|
if (firstPlayer == null) player.IsFirst = true;
|
|
|
|
+ await PlayersCh.Send($"{strings.now_turn} {player.NickName}");
|
|
await player.CurrentRole.OneMinuteSpeak();
|
|
await player.CurrentRole.OneMinuteSpeak();
|
|
await player.CurrentRole.VotingAction();
|
|
await player.CurrentRole.VotingAction();
|
|
if (player.IsFirst) firstPlayer = player;
|
|
if (player.IsFirst) firstPlayer = player;
|
|
@@ -124,7 +125,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
|
|
|
|
private async Task NightPhase()
|
|
private async Task NightPhase()
|
|
{
|
|
{
|
|
- IsDay = false;
|
|
|
|
|
|
+ _isDay = false;
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
|
|
await PlayersCh.SendSticker(Stickers.Sticker["Night"]);
|
|
await PlayersCh.Send(strings.city_falls_asleep);
|
|
await PlayersCh.Send(strings.city_falls_asleep);
|
|
await Task.Run(async () =>
|
|
await Task.Run(async () =>
|
|
@@ -200,7 +201,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
votingTimer.Elapsed += (_, _) => resetEvent.Set();
|
|
votingTimer.Elapsed += (_, _) => resetEvent.Set();
|
|
List<Message> messagesToDelete = new();
|
|
List<Message> messagesToDelete = new();
|
|
foreach (var player in votersPlayers)
|
|
foreach (var player in votersPlayers)
|
|
- messagesToDelete.Add(await player.CurrentRole.VotingUpDefenders(contendersForDispatch));
|
|
|
|
|
|
+ messagesToDelete.Add(await player.CurrentRole.SendVotingList(contendersForDispatch));
|
|
votingTimer.Start();
|
|
votingTimer.Start();
|
|
resetEvent.WaitOne();
|
|
resetEvent.WaitOne();
|
|
votingTimer.Stop();
|
|
votingTimer.Stop();
|
|
@@ -217,6 +218,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
var contenders = await DefencePhase();
|
|
var contenders = await DefencePhase();
|
|
if (contenders.Count > 1) contenders = await DefencePhase();
|
|
if (contenders.Count > 1) contenders = await DefencePhase();
|
|
if (contenders.Count > 1) await PlayersCh.Send(strings.villagers_could_not_decide);
|
|
if (contenders.Count > 1) await PlayersCh.Send(strings.villagers_could_not_decide);
|
|
|
|
+ if (contenders.Count == 0) await PlayersCh.Send(strings.villagers_could_not_decide);
|
|
else await contenders[0].CurrentRole.Dispatch();
|
|
else await contenders[0].CurrentRole.Dispatch();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -245,12 +247,12 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
if (aliveMafia.Count == 0)
|
|
if (aliveMafia.Count == 0)
|
|
{
|
|
{
|
|
await PlayersCh.Send(strings.villagers_won, exceptDied: false);
|
|
await PlayersCh.Send(strings.villagers_won, exceptDied: false);
|
|
- await PlayersCh.SendSticker(Stickers.Sticker["VillagerWins"], false);
|
|
|
|
|
|
+ await PlayersCh.SendSticker(Stickers.Sticker["VillagerWins"]);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
await PlayersCh.Send(strings.mafia_won, exceptDied: false);
|
|
await PlayersCh.Send(strings.mafia_won, exceptDied: false);
|
|
- await PlayersCh.SendSticker(Stickers.Sticker["MafiaWins"], false);
|
|
|
|
|
|
+ await PlayersCh.SendSticker(Stickers.Sticker["MafiaWins"]);
|
|
}
|
|
}
|
|
var rolesMessage = strings.in_this_game_roles;
|
|
var rolesMessage = strings.in_this_game_roles;
|
|
var sortedPLayers = Players.Values.ToList();
|
|
var sortedPLayers = Players.Values.ToList();
|
|
@@ -262,7 +264,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
}
|
|
}
|
|
await PlayersCh.Send(rolesMessage);
|
|
await PlayersCh.Send(rolesMessage);
|
|
IsRunning = false;
|
|
IsRunning = false;
|
|
- IsDay = false;
|
|
|
|
|
|
+ _isDay = false;
|
|
_turnOrder.Clear();
|
|
_turnOrder.Clear();
|
|
Settings.Clear();
|
|
Settings.Clear();
|
|
foreach (var (_, list) in PlayersRole) list.Clear();
|
|
foreach (var (_, list) in PlayersRole) list.Clear();
|
|
@@ -271,7 +273,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
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, false);
|
|
|
|
|
|
+ await PlayersCh.SendExcept(Owner.Id, strings.thanks_for_game, Keyboard.PlayerGameMenu);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|