Ejemplo n.º 1
0
        /// <summary>
        /// 存放要牌操作
        /// </summary>
        /// <param name="handCards"></param>
        /// <returns></returns>
        public OptionorCollection FreshOptions(HandCardManager handCards)
        {
            handCards.Optionors.Clear();
            MaJiangCollection huCards = GetHuCards(handCards.StandCards);

            if (huCards.Count > 0)
            {
                for (int i = 0; i < huCards.Count; i++)
                {
                    Optionor optionor = new Optionor(new OptionHu(), huCards[i]);
                    handCards.AddOptionor(optionor);
                }
            }
            MaJiangCollection PendCards = handCards.GetPengCards();

            if (PendCards.Count > 0)
            {
                for (int i = 0; i < PendCards.Count; i++)
                {
                    Optionor optionor = new Optionor(new OptionPeng(), PendCards[0]);
                    handCards.AddOptionor(optionor);
                }
            }
            MaJiangCollection GangCards = handCards.GetGangCards();

            if (GangCards.Count > 0)
            {
                for (int i = 0; i < GangCards.Count; i++)
                {
                    Optionor optionor = new Optionor(new OptionGang(), GangCards[i]);
                    handCards.AddOptionor(optionor);
                }
            }
            return(handCards.Optionors);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 是否相同操作
 /// </summary>
 /// <param name="optionor"></param>
 /// <returns></returns>
 public bool IsTheSameWith(Optionor optionor)
 {
     if (Card.IsTheSameWith(optionor.Card) &&
         Option.Name == optionor.Option.Name &&
         IsOnlySelf == optionor.IsOnlySelf)
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 执行操作
 /// </summary>
 /// <param name="optionor"></param>
 public void Do(Optionor optionor)
 {
     if (ExistOptionor(optionor))
     {
         bool needOtherCard = optionor.Do(HandCards);
         if (needOtherCard)
         {
             GetCardAction?.Invoke(this);
         }
         OnDidOption(optionor);
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 定义操作名称
        /// </summary>
        /// <param name="name"></param>
        /// <param name="card"></param>
        /// <returns></returns>
        public Optionor GetOptionorByName(string name, CardModel cardM)
        {
            Optionor optionor = null;

            switch (name)
            {
            case "碰": optionor = new Optionor(new OptionPeng(), cardM);
                break;

            case "杠": optionor = new Optionor(new OptionGang(), cardM);
                break;

            case "胡": optionor = new Optionor(new OptionHu(), cardM);
                break;

            default:
                break;
            }
            return(optionor);
        }
Ejemplo n.º 5
0
 internal OptionorRequest(Seat seat, Optionor optionor)
 {
     Seat     = seat;
     Optionor = optionor;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 添加要牌
 /// </summary>
 /// <param name="option"></param>
 public void AddOptionor(Optionor option)
 {
     Optionors.Add(option);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 是否可以执行该操作
 /// </summary>
 /// <param name="optionor"></param>
 /// <returns></returns>
 private bool ExistOptionor(Optionor optionor)
 {
     return(HandCards.Optionors.HaseOptionor(optionor));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 操作执行后事件
 /// </summary>
 /// <param name="optionor"></param>
 void OnDidOption(Optionor optionor)
 {
     DidOption?.Invoke(this, new OptionorEventArgs(optionor));
 }
 /// <summary>
 /// 是否存在操作
 /// </summary>
 /// <param name="optionor"></param>
 /// <returns></returns>
 internal bool HaseOptionor(Optionor optionor)
 {
     return(Options.Exists(o => o.IsTheSameWith(optionor)));
 }
Ejemplo n.º 10
0
 /// <summary>
 /// 添加操作
 /// </summary>
 /// <param name="option"></param>
 internal void Add(Optionor option)
 {
     option.Number = ++OptionorNumber;
     Options.Add(option);
 }
Ejemplo n.º 11
0
 internal OptionorEventArgs(Optionor optionor)
 {
     Optionor = optionor;
 }