GameRoom.Timer.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Threading.Tasks;
  3. using MafiaTelegramBot.Controllers;
  4. using MafiaTelegramBot.Resources;
  5. namespace MafiaTelegramBot.Game.GameRooms
  6. {
  7. public abstract partial class GameRoom
  8. {
  9. private int _minutes;
  10. public void SetTimer()
  11. {
  12. _minutes = 0;
  13. _waitingPlayers = new System.Timers.Timer(60000);
  14. _waitingPlayers.Elapsed += async (_ , _) => { await Remove(); };
  15. _waitingPlayers.Enabled = true;
  16. }
  17. public void StopTimer()
  18. {
  19. _waitingPlayers.Stop();
  20. }
  21. public void StartTimer()
  22. {
  23. _minutes = 0;
  24. _waitingPlayers.Start();
  25. }
  26. private async Task Remove()
  27. {
  28. try
  29. {
  30. switch (_minutes)
  31. {
  32. case Constants.MINUTES_UNTIL_DISSOLVE - 2:
  33. if (Owner != null)
  34. await MessageController.SendText(Owner.Info, strings.dissolve_warning);
  35. else
  36. await PlayersMessageChannel.Send(strings.dissolve_warning);
  37. _minutes++;
  38. break;
  39. case Constants.MINUTES_UNTIL_DISSOLVE:
  40. await RoomController.DissolveRoom(RoomEncrypter.GetCode(RoomName));
  41. //GC.Collect();
  42. break;
  43. default:
  44. _minutes++;
  45. break;
  46. }
  47. }
  48. catch (Exception)
  49. {
  50. }
  51. }
  52. public void DeleteTimer()
  53. {
  54. _waitingPlayers.Stop();
  55. _waitingPlayers.Dispose();
  56. }
  57. }
  58. }