Ejemplo n.º 1
0
        public void MoveCheckerFromBar(string user, string opponent, int currIndex, int futuredIndex)
        {
            if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(opponent))
            {
                var callback = OperationContext.Current.GetCallbackChannel <IClientCallback>();
                try
                {
                    if (_callback.ContainsKey(user))
                    {
                        var game       = GameMng.GetGame(user, opponent);
                        var doubleDice = game.DoubleDice;
                        var diffDice   = game.DifferentDice;

                        bool result = false;

                        try
                        {
                            result = GameMng.CheckersMoovingFromBarLogic(user, opponent, currIndex, futuredIndex);
                        }
                        catch (Exception ex)
                        {
                            _callback[user].RecieveGameError(ex.Message);
                            _callback[user].MoveEnableFromServer(user, opponent);
                            if (_callback.ContainsKey(opponent))
                            {
                                _callback[opponent].SetWaiterFromServer(opponent, user);
                            }
                            return;
                        }
                        if (result)
                        {
                            var gameTable = GameMng.GetGameTableForSend(user, opponent);

                            if (gameTable != null)
                            {
                                var whiteCheckers = gameTable[0];
                                var blackCheckers = gameTable[1];
                                var barCheckers   = gameTable[2];
                                _callback[user].UpdateTable(user, opponent, whiteCheckers, blackCheckers, barCheckers);
                                if (_callback.ContainsKey(opponent))
                                {
                                    _callback[opponent].UpdateTable(opponent, user, whiteCheckers, blackCheckers, barCheckers);
                                }

                                if (doubleDice != null && doubleDice.IsMoovingFinish())
                                {
                                    // GameMng.DeleteDoubleDice(user, opponent);
                                    _callback[user].SetWaiterFromServer(user, opponent);
                                    if (_callback.ContainsKey(opponent))
                                    {
                                        _callback[opponent].SetMasterFromServer(opponent, user);
                                    }
                                    //turn computer moving
                                    else if (opponent == Player.autoPlayer.ToString())
                                    {
                                        MoveCheckerAuto(opponent, user);
                                    }
                                }
                                else if (diffDice != null && diffDice.IsMoovingFinish())
                                {
                                    //GameMng.DeleteDifferentDice(user, opponent);
                                    _callback[user].SetWaiterFromServer(user, opponent);
                                    if (_callback.ContainsKey(opponent))
                                    {
                                        _callback[opponent].SetMasterFromServer(opponent, user);
                                    }
                                    //turn computer moving
                                    else if (opponent == Player.autoPlayer.ToString())
                                    {
                                        MoveCheckerAuto(opponent, user);
                                    }
                                }
                            }
                        }
                        else
                        {
                            _callback[user].SetMasterFromServer(user, opponent);
                            _callback[user].RecieveGameError("You can't move to this posision");
                        }
                    }
                }
                catch (Exception ex)
                {
                    callback.RecieveGameError(ex.Message);
                    if (_callback.ContainsKey(opponent))
                    {
                        _callback[opponent].RecieveGameError(ex.Message);
                    }
                }
            }
        }