Exemplo n.º 1
0
        public void StartMatch(bool isWhitePlayer, string matchToken, ChessCom.VisionRules rules, ChessCom.TimeRules timeRules)
        {
            WriteTextNonInvoke("Starting match: " + matchToken + ", you are " + (isWhitePlayer?"white":"black"));
            WriteTextNonInvoke("Opponent username: "******"", To = ""
            };
            _lastMoveFrom = null;
            _lastMoveTo   = null;
            _killedPices.Clear();
            ClearBoard();
            var vr = new VisionRules
            {
                Enabled          = rules.Enabled,
                ViewMoveFields   = rules.ViewMoveFields,
                ViewRange        = rules.ViewRange,
                ViewCaptureField = rules.ViewCaptureField,
                PiceOverwrite    = new Dictionary <Pices, VisionRules>()
            };

            foreach (var keyValOR in rules.PiceOverwriter)
            {
                vr.PiceOverwrite.Add((Pices)keyValOR.Key, new VisionRules {
                    Enabled = keyValOR.Value.Enabled, ViewMoveFields = keyValOR.Value.ViewMoveFields, ViewRange = keyValOR.Value.ViewRange
                });
            }
            _whiteStaticTimeLeft       = new TimeSpan(0, timeRules.PlayerTime.Minutes, timeRules.PlayerTime.Seconds);
            _whiteTimeSpan             = _whiteStaticTimeLeft;
            lbWhiteTimeLeft.Content    = _whiteTimeSpan.ToString(@"mm\:ss");
            lbWhiteTimePerMove.Content = $"+{timeRules.SecondsPerMove}s";
            _blackStaticTimeLeft       = new TimeSpan(0, timeRules.PlayerTime.Minutes, timeRules.PlayerTime.Seconds);
            _blackTimeSpan             = _whiteStaticTimeLeft;
            lbBlackTimeLeft.Content    = _whiteTimeSpan.ToString(@"mm\:ss");
            lbBlackTimePerMove.Content = $"+{timeRules.SecondsPerMove}s";
            _timeRules = timeRules;

            _globalState = GlobalState.CreateStartState(vr);
            UpdateBoardFromGlobalState();
        }
Exemplo n.º 2
0
        private void BtHostGame_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var starttime = Convert.ToInt32(tbStarttime.Text);
                var movetime  = Convert.ToInt32(tbMovetime.Text);
                ChessCom.ChessType chessType = cbChesType.SelectedIndex == 0 ? ChessCom.ChessType.Classic :
                                               cbChesType.SelectedIndex == 1 ? ChessCom.ChessType.FisherRandom :
                                               ChessCom.ChessType.SlugRandom;
                ChessCom.SideType sideType = cbHostColor.SelectedIndex == 0 ? ChessCom.SideType.HostIsWhite :
                                             cbHostColor.SelectedIndex == 1 ? ChessCom.SideType.HostIsBlack :
                                             ChessCom.SideType.Random;
                ChessCom.VisionRules vr = new ChessCom.VisionRules();
                switch (cbVisionRules.SelectedIndex)
                {
                case 0:     //Standard
                {
                    vr.Enabled          = true;
                    vr.ViewCaptureField = true;
                    vr.ViewMoveFields   = false;
                    vr.ViewRange        = 2;
                    ChessCom.VisionRules overwrite = new ChessCom.VisionRules
                    {
                        ViewRange      = 1,
                        ViewMoveFields = false
                    };
                    vr.PiceOverwriter.Add((int)ChessCom.Pices.WhitePawn, overwrite);
                    vr.PiceOverwriter.Add((int)ChessCom.Pices.BlackPawn, overwrite);
                }
                break;

                case 1:     //Sea
                {
                    vr.Enabled          = true;
                    vr.ViewCaptureField = true;
                    vr.ViewMoveFields   = true;
                    vr.ViewRange        = 0;
                    ChessCom.VisionRules overwrite = new ChessCom.VisionRules
                    {
                        ViewRange      = 1,
                        ViewMoveFields = true
                    };
                    vr.PiceOverwriter.Add((int)ChessCom.Pices.WhiteKnight, overwrite);
                    vr.PiceOverwriter.Add((int)ChessCom.Pices.BlackKnight, overwrite);
                    vr.PiceOverwriter.Add((int)ChessCom.Pices.WhitePawn, overwrite);
                    vr.PiceOverwriter.Add((int)ChessCom.Pices.BlackPawn, overwrite);
                }
                break;

                case 2:     //No Vision
                {
                    vr.Enabled = false;
                }
                break;
                }
                btHostGame.IsEnabled          = false;
                cbChesType.IsEnabled          = false;
                cbHostColor.IsEnabled         = false;
                cbVisionRules.IsEnabled       = false;
                tbStarttime.IsEnabled         = false;
                tbMovetime.IsEnabled          = false;
                tbHostingMatchText.Visibility = Visibility.Visible;

                Task.Run(() => {
                    var token = _hostGameTokenSource.Token;
                    try
                    {
                        MatchResult = _connection.Call.HostGame(new ChessCom.HostedGame
                        {
                            Host      = _userdata,
                            GameRules = new ChessCom.GameRules
                            {
                                ChessType   = chessType,
                                SideType    = sideType,
                                VisionRules = vr,
                                TimeRules   = new ChessCom.TimeRules {
                                    PlayerTime = new ChessCom.Time {
                                        Minutes = starttime
                                    }, SecondsPerMove = movetime
                                }
                            }
                        }, null, null, _hostGameTokenSource.Token);
                        Dispatcher.Invoke(() => Close());
                    }
                    catch (Grpc.Core.RpcException ex)
                    {
                        if (!token.IsCancellationRequested)
                        {
                            throw ex;
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }