Belot.AnnouncementManager.Add C# (CSharp) Method

Add() private method

Stores and announcement made by a player
private Add ( Player player, Announcement announce ) : void
player Player
announce Announcement
return void
        internal void Add( Player player, Announcement announce )
        {
            if( !IsValid( player, announce ))
                throw new InvalidOperationException( "You cannot bid lower than current" );

            if( (_players.Count != 0)&&( player == (Player)_players[_players.Count - 1] ) )
                throw new InvalidOperationException( "You cannot bid twice" );

            _announces.Add( announce );
            _players.Add( player );

            if( announce.Type != AnnouncementTypeEnum.Pass )
            {
                _lastValidAnnouncement = announce;
                _lastBidder = player;
            }
            else
            {
                //4 successive passes end bidding or 3 passes after a legal bid
                if( _announces.Count > 3 )
                {
                    if( ( ( _announces[_announces.Count-1]).Type == AnnouncementTypeEnum.Pass ) &&
                        ( ( _announces[_announces.Count-2]).Type == AnnouncementTypeEnum.Pass ) &&
                        ( ( _announces[_announces.Count-3]).Type == AnnouncementTypeEnum.Pass ) &&
                        ( _lastBidder != null || (_announces[_announces.Count-4]).Type == AnnouncementTypeEnum.Pass ) )
                    {
                        this._isBiddingFinished = true;
                    }
                }
            }
        }

Usage Example

示例#1
0
        internal Player EnterBiddingState()
        {
            AnnouncementManager announcementManager = new AnnouncementManager( );

            Player       current = this._firstPlayer;
            Announcement announce;

            while (!announcementManager.IsBiddingFinished)
            {
                announce = current.MakeAnnouncement(announcementManager);

                announcementManager.Add(current, announce);

                _currentAnnouncement = announcementManager.GetLastValidAnnouncement();

                current = _game.GetNextPlayer(current);
            }

            _bidWinner = announcementManager.GetLastBidder();

            return(announcementManager.GetLastBidder());
        }
All Usage Examples Of Belot.AnnouncementManager::Add