Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PkrTable
- {
- List<PkrAction> pkrActions = new List<Program.PkrAction>();
- List<PkrPlayer> pkrPlayers = new List<PkrPlayer>();
- public void SbmtAction (PkrAction pkrAction)
- {
- if (!BeenWaitinOnYou(pkrAction))
- {
- pkrActions.Add(pkrAction);
- }
- }
- private void ProcessAction(PkrAction pkrAction)
- {
- //process
- }
- private bool BeenWaitinOnYou(PkrAction pkrAction)
- {
- if(waitingOn != null && waitingOn == pkrAction.PkrPlayer)
- {
- ProcessAction(pkrAction);
- //this is where WaitFor can return
- clearToGo = true;
- return true;
- }
- return false;
- }
- private PkrPlayer waitingOn = null;
- private bool clearToGo = false;
- private async Task WaitFor()
- {
- if (clearToGo)
- {
- waitingOn = null;
- return;
- //problem is this returns even if clearToGo is flase
- //even if clearToGo is false I need to return in x seconds
- }
- }
- private async Task ProcessQueue()
- {
- foreach(PkrPlayer pp in pkrPlayers)
- {
- PkrAction pa = pkrActions.FirstOrDefault(x => x.PkrPlayer == pp);
- if(pa == null)
- {
- waitingOn = pp;
- clearToGo = false;
- await WaitFor();
- }
- else
- {
- ProcessAction(pa);
- }
- pkrActions.Remove(pa);
- }
- }
- public PkrTable()
- {
- PkrPlayer pp = new PkrPlayer(1, this);
- pp.SbmtAction(12);
- pkrPlayers.Add(pp);
- pp = new PkrPlayer(2, this);
- pp.SbmtAction(12);
- pkrPlayers.Add(pp);
- PkrPlayer pp3 = new PkrPlayer(3, this);
- pkrPlayers.Add(pp3);
- pp = new PkrPlayer(4, this);
- pp.SbmtAction(12);
- pkrPlayers.Add(pp);
- ProcessQueue();
- Thread.Sleep(10000);
- pp3.SbmtAction(14);
- }
- }
- public class PkrAction
- {
- public PkrPlayer PkrPlayer { get; }
- public int Amt { get; }
- public PkrAction(PkrPlayer pkrPlayer, int amt)
- {
- PkrPlayer = pkrPlayer;
- Amt = amt;
- }
- }
- public class PkrPlayer
- {
- private PkrTable pkrTable;
- public int ID { get; }
- public void SbmtAction(int amount)
- {
- PkrAction pa = new PkrAction(this, amount);
- pkrTable.SbmtAction(pa);
- }
- public override int GetHashCode()
- {
- return ID;
- }
- public override bool Equals(object obj)
- {
- if (obj == null || !(obj is PokerPlayer))
- return false;
- else
- return ID == ((PokerPlayer)obj).ID;
- }
- public PkrPlayer(int id, PkrTable _pkrTable)
- {
- ID = id;
- pkrTable = _pkrTable;
- }
- }
Add Comment
Please, Sign In to add comment