GameHandler.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System.Threading.Tasks;
  2. using YJMPD_UWP.Helpers.EventArgs;
  3. namespace YJMPD_UWP.Model
  4. {
  5. public class GameHandler
  6. {
  7. public delegate void OnStatusUpdateHandler(object sender, GameStatusUpdatedEventArgs e);
  8. public event OnStatusUpdateHandler OnStatusUpdate;
  9. public enum GameStatus { STOPPING, STOPPED, SEARCHING, WAITING, ENDED, STARTING, STARTED }
  10. public GameStatus Status { get; private set; }
  11. private void UpdateGameStatus(GameStatus status)
  12. {
  13. Status = status;
  14. if (OnStatusUpdate == null) return;
  15. OnStatusUpdate(this, new GameStatusUpdatedEventArgs(status));
  16. }
  17. public GameHandler()
  18. {
  19. Status = GameStatus.STOPPED;
  20. }
  21. //Searching
  22. public async Task<bool> Search()
  23. {
  24. return await SearchGame();
  25. }
  26. private async Task<bool> SearchGame()
  27. {
  28. UpdateGameStatus(GameStatus.SEARCHING);
  29. bool foundgame;
  30. foundgame = await App.Network.SearchGame();
  31. //Do stuff
  32. if (foundgame)
  33. await Start();
  34. else
  35. await Stop();
  36. return true;
  37. }
  38. //Starting and Stopping
  39. public async Task<bool> Start()
  40. {
  41. return await StartGame();
  42. }
  43. public async Task<bool> Stop()
  44. {
  45. return await StopGame();
  46. }
  47. private async Task<bool> StartGame()
  48. {
  49. UpdateGameStatus(GameStatus.STARTING);
  50. //Do stuff
  51. UpdateGameStatus(GameStatus.STARTED);
  52. return true;
  53. }
  54. private async Task<bool> StopGame()
  55. {
  56. UpdateGameStatus(GameStatus.STOPPING);
  57. //Do stuff
  58. UpdateGameStatus(GameStatus.STOPPED);
  59. return true;
  60. }
  61. }
  62. }