Esempio n. 1
0
        private void OnAnalysisStarted(object sender, EventArgs e)
        {
            PendingInfoResponses.Clear();

            var sortedColumn = analysisDataGridView.SortedColumn;
            var sortedOrder  = analysisDataGridView.SortOrder;

            AnalysisData.Clear();
            if (sortedColumn != null)
            {
                analysisDataGridView.Sort(
                    sortedColumn,
                    sortedOrder == SortOrder.Ascending
                        ? ListSortDirection.Ascending
                        : ListSortDirection.Descending
                    );
            }
        }
Esempio n. 2
0
        private void ProcessPendingInfoReponses(object sender, System.Timers.ElapsedEventArgs e)
        {
            Dictionary <string, UciInfoResponse> responseByMove = new Dictionary <string, UciInfoResponse>();

            // collect per move so we don't do updates for duplicates
            for (; ;)
            {
                var info = PendingInfoResponses.TryDequeue();
                if (info == null)
                {
                    break;
                }

                if (info.Fen != Fen)
                {
                    continue;
                }

                foreach (var _ in info.Score)
                {
                    // replace so we have the latest
                    responseByMove[info.GetMoveLan()] = info;
                }
            }

            if (responseByMove.Count == 0)
            {
                return;
            }

            if (IsEmbedded)
            {
                var newAnalysisData = EmbeddedAnalysisData.Copy();
                UpdateEmbeddedAnalysisData(newAnalysisData, responseByMove);
                ApplyNewEmbeddedAnalysisData(newAnalysisData);
            }
            else
            {
                var newAnalysisData = AnalysisData.Copy();
                UpdateAnalysisData(newAnalysisData, responseByMove);
                ApplyNewAnalysisData(newAnalysisData);
            }
        }
Esempio n. 3
0
 private void OnInfoResponse(UciInfoResponse info)
 {
     PendingInfoResponses.Enqueue(info);
 }