public IEnumerable <Card> Take(Type cardType, int count) { IEnumerable <Card> returnCards = _Cards.FindAll(card => card.CardType == cardType).Take(count); if (count == 0) { return(returnCards); } if (returnCards.Count() == 0) { throw new Exception("Nothing to take!"); } if (_Game.State != GameState.Setup) { for (int index = _Tokens.Count - 1; index >= 0; index--) { Token token = _Tokens[index]; if (token.Gaining()) { _Tokens.Remove(token); _Game.Table.TokenPiles.Add(token); if (TokensChanged != null) { TokensChangedEventArgs etcea = new TokensChangedEventArgs(token); TokensChanged(this, etcea); } } } } _Cards.RemoveAll(c => returnCards.Contains(c)); if (_Game.State != GameState.Setup) { if (_AsynchronousChanging) { if (_AsynchronousPileChangedEventArgs == null) { _AsynchronousPileChangedEventArgs = new PileChangedEventArgs(null, PileChangedEventArgs.Operation.Removed, returnCards); } else { _AsynchronousPileChangedEventArgs.RemovedCards.AddRange(returnCards); } } else if (PileChanged != null) { PileChangedEventArgs pcea = new PileChangedEventArgs(null, PileChangedEventArgs.Operation.Removed, returnCards); PileChanged(this, pcea); } } return(returnCards); }
public void Bought(Player player) { foreach (Token token in _Tokens) { if (token.Buying(_Game.Table, player)) { _Tokens.Remove(token); _Game.Table.TokenPiles.Add(token); if (TokensChanged != null) { TokensChangedEventArgs etcea = new TokensChangedEventArgs(token); TokensChanged(this, etcea); } } } }
public void AddToken(Token token) { _Tokens.Add(token); if (TokensChanged != null) { TokensChangedEventArgs etcea = new TokensChangedEventArgs(token); TokensChanged(this, etcea); } PileChangedEventArgs pcea = new PileChangedEventArgs(PileChangedEventArgs.Operation.Reset); if (_AsynchronousChanging) { _AsynchronousPileChangedEventArgs = pcea; } else if (PileChanged != null) { PileChanged(this, pcea); } }
public override void Reset() { base.Reset(); if (_Tokens.RemoveAll(token => token.IsTemporary) > 0) { if (TokensChanged != null) { TokensChangedEventArgs tcea = new TokensChangedEventArgs(null); TokensChanged(this, tcea); } } PileChangedEventArgs pcea = new PileChangedEventArgs(PileChangedEventArgs.Operation.Reset); if (_AsynchronousChanging) { _AsynchronousPileChangedEventArgs = pcea; } else if (PileChanged != null) { PileChanged(this, pcea); } }