public void OnNewGame()
 {
     TranspositionTable.Clear();
     foreach (var threadState in ThreadStates)
     {
         threadState.OnNewGame();
     }
 }
        public TranspositionTable Clone()
        {
            var table = new TranspositionTable();

            table._size = _size;
            //table._principalVariation = _principalVariation.ToList();
            table._entries = _entries.ToArray();
            return(table);
        }
        public SearchState Clone()
        {
            var newState = new SearchState();

            newState.TranspositionTable = TranspositionTable.Clone();
            newState.PrincipalVariationTable.Clone();
            newState.ThreadStates = ThreadStates.Select(threadState => threadState.Clone()).ToArray();
            return(newState);
        }
 public void OnNewSearch()
 {
     TranspositionTable.SetSize(EngineOptions.Hash * 1024 * 1024);
     foreach (var threadState in ThreadStates)
     {
         threadState.OnNewSearch();
     }
     PrincipalVariationTable.Clear();
 }
        //public AbdadaTable AbdadaTable { get; }

        public SearchState()
        {
            TranspositionTable      = new TranspositionTable();
            PrincipalVariationTable = new PrincipalVariationTable();
            //AbdadaTable = new AbdadaTable();
            ThreadStates = new ThreadUniqueState[SearchConstants.ThreadCount];
            for (int i = 0; i < ThreadStates.Length; i++)
            {
                ThreadStates[i] = new ThreadUniqueState(i);
            }
            EmptyContinuation = new ContinuationEntry();
        }