NormalGameRoom.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using MafiaTelegramBot.Resources;
  4. namespace MafiaTelegramBot.Game.GameRooms
  5. {
  6. public class NormalGameRoom : GameRoom
  7. {
  8. public override bool IsExtended { get; protected set; } = false;
  9. public override Dictionary<Roles, List<Player>> PlayersRole { get; set;} = new()
  10. {
  11. //passive roles
  12. [Roles.Villager] = new List<Player>(),
  13. //Active roles
  14. [Roles.Mafia] = new List<Player>(),
  15. [Roles.Don] = new List<Player>(),
  16. [Roles.Cop] = new List<Player>(),
  17. [Roles.Doctor] = new List<Player>(),
  18. };
  19. protected override async Task<ResultCode> ReadSettings()
  20. {
  21. await Task.Run(() =>
  22. {
  23. Settings.Add(Roles.Villager, Players.Count);
  24. Settings.Add(Roles.Cop, 1);
  25. if (Players.Count != 8) Settings.Add(Roles.Doctor, 1);
  26. if (Players.Count % 3 == 0)
  27. Settings.Add(Roles.Mafia, Players.Count/3);
  28. else
  29. {
  30. Settings.Add(Roles.Mafia, Players.Count/3 -1);
  31. Settings.Add(Roles.Don, 1);
  32. }
  33. foreach (var (key, value) in Settings)
  34. {
  35. if (key != Roles.Villager)
  36. Settings[Roles.Villager] -= value;
  37. }
  38. if (Settings[Roles.Mafia] < 1) Settings.Remove(Roles.Mafia);
  39. if (Settings[Roles.Villager] < 1) Settings.Remove(Roles.Villager);
  40. });
  41. return ResultCode.CodeOk;
  42. }
  43. }
  44. }