|
@@ -9,7 +9,6 @@ using MafiaTelegramBot.DataBase.EntityDao;
|
|
using MafiaTelegramBot.Game.GameRoles;
|
|
using MafiaTelegramBot.Game.GameRoles;
|
|
using MafiaTelegramBot.Models;
|
|
using MafiaTelegramBot.Models;
|
|
using MafiaTelegramBot.Resources;
|
|
using MafiaTelegramBot.Resources;
|
|
-using Microsoft.EntityFrameworkCore;
|
|
|
|
using Timer = System.Timers.Timer;
|
|
using Timer = System.Timers.Timer;
|
|
|
|
|
|
namespace MafiaTelegramBot.Game.GameRooms
|
|
namespace MafiaTelegramBot.Game.GameRooms
|
|
@@ -43,7 +42,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
if (!player.IsPlaying) continue;
|
|
if (!player.IsPlaying) continue;
|
|
await PlayersMessageChannel.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
|
|
await PlayersMessageChannel.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
|
|
if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
|
|
if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
|
|
- await player.CurrentRole.SpeakAction();
|
|
|
|
|
|
+ await player.CurrentRole.SpeakAction(Constants.DAY_SPEAK_INTERVAL);
|
|
if (firstPlayer != null && player.IsPlaying) _turnOrder.Enqueue(player);
|
|
if (firstPlayer != null && player.IsPlaying) _turnOrder.Enqueue(player);
|
|
else firstPlayer = player;
|
|
else firstPlayer = player;
|
|
}
|
|
}
|
|
@@ -168,8 +167,8 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
{
|
|
{
|
|
await PlayersMessageChannel.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
|
|
await PlayersMessageChannel.Send($"{strings.now_turn} ({player.TurnOrder}) {player.NickName}");
|
|
if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
|
|
if (TimerEnabled) await Bot.SendWithMarkdown2(player.ChatId, strings.you_turn_say);
|
|
- await player.CurrentRole.SpeakAction();
|
|
|
|
- if (Players.ContainsKey(player.Id)) await player.CurrentRole.VotingAction(_voteUpList.Count == 0);
|
|
|
|
|
|
+ await player.CurrentRole.SpeakAction(Constants.DAY_SPEAK_INTERVAL);
|
|
|
|
+ if (Players.ContainsKey(player.Id)) await player.CurrentRole.VotingAction(VoteUpList.Count == 0);
|
|
}
|
|
}
|
|
|
|
|
|
if (toEndQueue != null) _turnOrder.Enqueue(player);
|
|
if (toEndQueue != null) _turnOrder.Enqueue(player);
|
|
@@ -304,47 +303,47 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
{
|
|
{
|
|
await Task.Run(async () =>
|
|
await Task.Run(async () =>
|
|
{
|
|
{
|
|
- switch (_voteUpList.Count)
|
|
|
|
|
|
+ switch (VoteUpList.Count)
|
|
{
|
|
{
|
|
case 0:
|
|
case 0:
|
|
await PlayersMessageChannel.Send(strings.nothing_up_to_vote);
|
|
await PlayersMessageChannel.Send(strings.nothing_up_to_vote);
|
|
break;
|
|
break;
|
|
case 1:
|
|
case 1:
|
|
{
|
|
{
|
|
- await _voteUpList[0].CurrentRole.Dispatch();
|
|
|
|
|
|
+ await VoteUpList[0].CurrentRole.Dispatch();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
default:
|
|
default:
|
|
{
|
|
{
|
|
- await DefencePhase(_voteUpList);
|
|
|
|
- _voteUpList = await CalculateCandidates();
|
|
|
|
- switch (_voteUpList.Count)
|
|
|
|
|
|
+ await DefencePhase(VoteUpList);
|
|
|
|
+ VoteUpList = await CalculateCandidates();
|
|
|
|
+ switch (VoteUpList.Count)
|
|
{
|
|
{
|
|
case 0:
|
|
case 0:
|
|
await PlayersMessageChannel.Send(strings.nothing_up_to_dispatch);
|
|
await PlayersMessageChannel.Send(strings.nothing_up_to_dispatch);
|
|
break;
|
|
break;
|
|
case 1:
|
|
case 1:
|
|
- await _voteUpList[0].CurrentRole.Dispatch();
|
|
|
|
|
|
+ await VoteUpList[0].CurrentRole.Dispatch();
|
|
break;
|
|
break;
|
|
case > 1:
|
|
case > 1:
|
|
- var copyVoteUpList = _voteUpList.ToList();
|
|
|
|
- await DefencePhase(_voteUpList);
|
|
|
|
- _voteUpList = await CalculateCandidates();
|
|
|
|
- var alivers = copyVoteUpList.Except(_voteUpList).ToList();
|
|
|
|
|
|
+ var copyVoteUpList = VoteUpList.ToList();
|
|
|
|
+ await DefencePhase(VoteUpList);
|
|
|
|
+ VoteUpList = await CalculateCandidates();
|
|
|
|
+ var alivers = copyVoteUpList.Except(VoteUpList).ToList();
|
|
foreach (var alive in alivers)
|
|
foreach (var alive in alivers)
|
|
alive.ElderRoleAchievementEvent();
|
|
alive.ElderRoleAchievementEvent();
|
|
|
|
|
|
- switch (_voteUpList.Count)
|
|
|
|
|
|
+ switch (VoteUpList.Count)
|
|
{
|
|
{
|
|
case 0:
|
|
case 0:
|
|
await PlayersMessageChannel.Send(strings.nothing_up_to_dispatch);
|
|
await PlayersMessageChannel.Send(strings.nothing_up_to_dispatch);
|
|
break;
|
|
break;
|
|
case 1:
|
|
case 1:
|
|
- await _voteUpList[0].CurrentRole.Dispatch();
|
|
|
|
|
|
+ await VoteUpList[0].CurrentRole.Dispatch();
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
await PlayersMessageChannel.Send(strings.villagers_could_not_decide);
|
|
await PlayersMessageChannel.Send(strings.villagers_could_not_decide);
|
|
- foreach (var alive in _voteUpList)
|
|
|
|
|
|
+ foreach (var alive in VoteUpList)
|
|
alive.ElderRoleAchievementEvent();
|
|
alive.ElderRoleAchievementEvent();
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -356,7 +355,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- _voteUpList.Clear();
|
|
|
|
|
|
+ VoteUpList.Clear();
|
|
_voteKillList.Clear();
|
|
_voteKillList.Clear();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -375,7 +374,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
if (message == strings.results_of_voting) message = strings.no_one_voted;
|
|
if (message == strings.results_of_voting) message = strings.no_one_voted;
|
|
await PlayersMessageChannel.Send(message);
|
|
await PlayersMessageChannel.Send(message);
|
|
|
|
|
|
- var votes = _voteUpList.Where(p => Players.ContainsKey(p.Id))
|
|
|
|
|
|
+ var votes = VoteUpList.Where(p => Players.ContainsKey(p.Id))
|
|
.GroupBy(p => p.Id)
|
|
.GroupBy(p => p.Id)
|
|
.Select(item => new { id = item.Key, count = item.Count() })
|
|
.Select(item => new { id = item.Key, count = item.Count() })
|
|
.ToList();
|
|
.ToList();
|
|
@@ -385,7 +384,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
var maxObjects = votes.Where(item => item.count == max);
|
|
var maxObjects = votes.Where(item => item.count == max);
|
|
result.AddRange(from obj in maxObjects select Players[obj.id]);
|
|
result.AddRange(from obj in maxObjects select Players[obj.id]);
|
|
_voteKillList.Clear();
|
|
_voteKillList.Clear();
|
|
- _voteUpList.Clear();
|
|
|
|
|
|
+ VoteUpList.Clear();
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -406,7 +405,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
{
|
|
{
|
|
if (!toKill)
|
|
if (!toKill)
|
|
{
|
|
{
|
|
- if (_voteUpList.AddUnique(Players[targetId]))
|
|
|
|
|
|
+ if (VoteUpList.AddUnique(Players[targetId]))
|
|
{
|
|
{
|
|
if (playerId != targetId)
|
|
if (playerId != targetId)
|
|
{
|
|
{
|
|
@@ -425,7 +424,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
}
|
|
}
|
|
else if (_voteKillList.AddUniqueByKey(playerId, targetId))
|
|
else if (_voteKillList.AddUniqueByKey(playerId, targetId))
|
|
{
|
|
{
|
|
- _voteUpList.Add(Players[targetId]);
|
|
|
|
|
|
+ VoteUpList.Add(Players[targetId]);
|
|
if (messageId != -1)
|
|
if (messageId != -1)
|
|
{
|
|
{
|
|
if (playerId != targetId)
|
|
if (playerId != targetId)
|