Exemple #1
0
 // reset after Add
 MoveGenState Reset()
 {
     From  = Position;
     To    = null;
     _move = MoveModel.Create(TurnPlayer, Position, Piece);
     _changes.Clear();
     _captures.Clear();
     return(this);
 }
Exemple #2
0
 // generate actual moves if not done already during condition checking
 // assumes CurrentPlayer set already
 internal void GenerateMoves()
 {
     if (!_donemovegen)
     {
         LegalMoves.AddRange(_game.CreateDrops(this));
         LegalMoves.AddRange(_game.CreateMoves(this));
         var passoption = _game.Def.GetProperty("pass turn") ?? OptionValue.False;
         var allowpass  = passoption.Equals(OptionValue.True) ||
                          (LegalMoves.Count == 0 && passoption.Equals(OptionValue.Forced));
         if (allowpass)
         {
             LegalMoves.Insert(0, MoveModel.Create(Turn.TurnPlayer, PositionValue.None, PieceValue.None));
         }
         _donemovegen = true;
     }
 }