|
@@ -10,6 +10,7 @@ using MafiaTelegramBot.Game.GameRoles;
|
|
using MafiaTelegramBot.Models;
|
|
using MafiaTelegramBot.Models;
|
|
using MafiaTelegramBot.Resources;
|
|
using MafiaTelegramBot.Resources;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
+using Telegram.Bot.Types;
|
|
using Timer = System.Timers.Timer;
|
|
using Timer = System.Timers.Timer;
|
|
|
|
|
|
namespace MafiaTelegramBot.Game.GameRooms
|
|
namespace MafiaTelegramBot.Game.GameRooms
|
|
@@ -161,7 +162,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
{
|
|
{
|
|
IsDay = true;
|
|
IsDay = true;
|
|
|
|
|
|
- var discussionTimer = new Timer {AutoReset = false, Interval = Constants.ONE_MINUTE};
|
|
|
|
|
|
+ var discussionTimer = new Timer {AutoReset = false, Interval = Constants.DISCUSSION_INTERVAL};
|
|
var discussionEnded = new ManualResetEvent(false);
|
|
var discussionEnded = new ManualResetEvent(false);
|
|
foreach (var player in Players.Values.Where(player => !player.IsBlocked)) player.IsSpeaker = true;
|
|
foreach (var player in Players.Values.Where(player => !player.IsBlocked)) player.IsSpeaker = true;
|
|
discussionTimer.Elapsed += async (_, _) =>
|
|
discussionTimer.Elapsed += async (_, _) =>
|
|
@@ -201,7 +202,7 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
await Task.Run(async () =>
|
|
await Task.Run(async () =>
|
|
{
|
|
{
|
|
var resetEvent = new ManualResetEvent(false);
|
|
var resetEvent = new ManualResetEvent(false);
|
|
- var timer = new Timer{ Interval = Constants.ONE_MINUTE, AutoReset = false };
|
|
|
|
|
|
+ var timer = new Timer{ Interval = Constants.NIGHT_ACTION_INTERVAL, AutoReset = false };
|
|
foreach (var player in Players.Values)
|
|
foreach (var player in Players.Values)
|
|
await player.CurrentRole.NightAction();
|
|
await player.CurrentRole.NightAction();
|
|
timer.Elapsed += (_, _) => resetEvent.Set();
|
|
timer.Elapsed += (_, _) => resetEvent.Set();
|
|
@@ -274,20 +275,17 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
foreach (var contender in contendersCopy.Where(p => !p.IsBlocked))
|
|
foreach (var contender in contendersCopy.Where(p => !p.IsBlocked))
|
|
if (Players.ContainsKey(contender.Id)) await contender.CurrentRole.DefenceAction();
|
|
if (Players.ContainsKey(contender.Id)) await contender.CurrentRole.DefenceAction();
|
|
var votersPlayers = Players.Values.Where(p => p.IsAlive && !p.IsBlocked).ToArray();
|
|
var votersPlayers = Players.Values.Where(p => p.IsAlive && !p.IsBlocked).ToArray();
|
|
- var timers = votersPlayers.Select(
|
|
|
|
- voter => voter.CurrentRole.VotingAction(contendersCopy.Where(p => Players.ContainsKey(p.Id)).ToList()))
|
|
|
|
- .ToList();
|
|
|
|
- Timer votingTimer = new() {Interval = 20 * 1000, AutoReset = false};
|
|
|
|
|
|
+ foreach (var voter in votersPlayers)
|
|
|
|
+ await voter.CurrentRole.VotingAction(contendersCopy.Where(p => Players.ContainsKey(p.Id)).ToList());
|
|
|
|
+ var timer = new Timer {Interval = Constants.VOTE_KILL_INTERVAL, AutoReset = false};
|
|
var resetEvent = new ManualResetEvent(false);
|
|
var resetEvent = new ManualResetEvent(false);
|
|
- votingTimer.Elapsed += async (_, _) =>
|
|
|
|
|
|
+ timer.Elapsed += async(_, _) =>
|
|
{
|
|
{
|
|
- foreach (var timer in timers) timer.Set();
|
|
|
|
- votingTimer.Stop();
|
|
|
|
- await PlayersCh.Send(strings.calculating_votes);
|
|
|
|
- Thread.Sleep(votersPlayers.Length * 120);
|
|
|
|
|
|
+ foreach (var voter in votersPlayers.Where(p => !VoteKillList.ContainsKey(p.Id) && Players.ContainsKey(p.Id)))
|
|
|
|
+ await voter.CurrentRole.RandomVoting();
|
|
resetEvent.Set();
|
|
resetEvent.Set();
|
|
};
|
|
};
|
|
- votingTimer.Start();
|
|
|
|
|
|
+ timer.Start();
|
|
resetEvent.WaitOne();
|
|
resetEvent.WaitOne();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -346,12 +344,8 @@ namespace MafiaTelegramBot.Game.GameRooms
|
|
private async Task<List<Player>> CalculateCandidates()
|
|
private async Task<List<Player>> CalculateCandidates()
|
|
{
|
|
{
|
|
var message = strings.results_of_voting;
|
|
var message = strings.results_of_voting;
|
|
- Console.Write(VoteKillList.Count);
|
|
|
|
foreach (var (playerId, targetId) in VoteKillList)
|
|
foreach (var (playerId, targetId) in VoteKillList)
|
|
{
|
|
{
|
|
- Console.WriteLine(Players.ContainsKey(playerId) && Players.ContainsKey(targetId));
|
|
|
|
- Console.WriteLine(playerId);
|
|
|
|
- Console.WriteLine(targetId);
|
|
|
|
message += Players.ContainsKey(playerId) && Players.ContainsKey(targetId)
|
|
message += Players.ContainsKey(playerId) && Players.ContainsKey(targetId)
|
|
? $"\n({Players[playerId].TurnOrder}) {Players[playerId].NickName} {strings.vote_to} " +
|
|
? $"\n({Players[playerId].TurnOrder}) {Players[playerId].NickName} {strings.vote_to} " +
|
|
$"({Players[targetId].TurnOrder}) {Players[targetId].NickName}" : "";
|
|
$"({Players[targetId].TurnOrder}) {Players[targetId].NickName}" : "";
|