Guest User

Untitled

a guest
Mar 20th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. public class PkrTable
  2. {
  3. List<PkrAction> pkrActions = new List<Program.PkrAction>();
  4. List<PkrPlayer> pkrPlayers = new List<PkrPlayer>();
  5. public void SbmtAction (PkrAction pkrAction)
  6. {
  7. if (!BeenWaitinOnYou(pkrAction))
  8. {
  9. pkrActions.Add(pkrAction);
  10. }
  11. }
  12. private void ProcessAction(PkrAction pkrAction)
  13. {
  14. //process
  15. }
  16. private bool BeenWaitinOnYou(PkrAction pkrAction)
  17. {
  18. if(waitingOn != null && waitingOn == pkrAction.PkrPlayer)
  19. {
  20. ProcessAction(pkrAction);
  21. //this is where WaitFor can return
  22. clearToGo = true;
  23. return true;
  24. }
  25. return false;
  26. }
  27. private PkrPlayer waitingOn = null;
  28. private bool clearToGo = false;
  29. private async Task WaitFor()
  30. {
  31. if (clearToGo)
  32. {
  33. waitingOn = null;
  34. return;
  35. //problem is this returns even if clearToGo is flase
  36. //even if clearToGo is false I need to return in x seconds
  37. }
  38. }
  39. private async Task ProcessQueue()
  40. {
  41. foreach(PkrPlayer pp in pkrPlayers)
  42. {
  43. PkrAction pa = pkrActions.FirstOrDefault(x => x.PkrPlayer == pp);
  44. if(pa == null)
  45. {
  46. waitingOn = pp;
  47. clearToGo = false;
  48. await WaitFor();
  49. }
  50. else
  51. {
  52. ProcessAction(pa);
  53. }
  54. pkrActions.Remove(pa);
  55. }
  56. }
  57. public PkrTable()
  58. {
  59. PkrPlayer pp = new PkrPlayer(1, this);
  60. pp.SbmtAction(12);
  61. pkrPlayers.Add(pp);
  62. pp = new PkrPlayer(2, this);
  63. pp.SbmtAction(12);
  64. pkrPlayers.Add(pp);
  65. PkrPlayer pp3 = new PkrPlayer(3, this);
  66. pkrPlayers.Add(pp3);
  67. pp = new PkrPlayer(4, this);
  68. pp.SbmtAction(12);
  69. pkrPlayers.Add(pp);
  70.  
  71. ProcessQueue();
  72. Thread.Sleep(10000);
  73. pp3.SbmtAction(14);
  74.  
  75. }
  76.  
  77. }
  78. public class PkrAction
  79. {
  80. public PkrPlayer PkrPlayer { get; }
  81. public int Amt { get; }
  82. public PkrAction(PkrPlayer pkrPlayer, int amt)
  83. {
  84. PkrPlayer = pkrPlayer;
  85. Amt = amt;
  86. }
  87. }
  88. public class PkrPlayer
  89. {
  90. private PkrTable pkrTable;
  91. public int ID { get; }
  92.  
  93. public void SbmtAction(int amount)
  94. {
  95. PkrAction pa = new PkrAction(this, amount);
  96. pkrTable.SbmtAction(pa);
  97. }
  98.  
  99. public override int GetHashCode()
  100. {
  101. return ID;
  102. }
  103. public override bool Equals(object obj)
  104. {
  105. if (obj == null || !(obj is PokerPlayer))
  106. return false;
  107. else
  108. return ID == ((PokerPlayer)obj).ID;
  109. }
  110. public PkrPlayer(int id, PkrTable _pkrTable)
  111. {
  112. ID = id;
  113. pkrTable = _pkrTable;
  114. }
  115. }
Add Comment
Please, Sign In to add comment