示例#1
0
    /// <summary>
    /// 显示玩家操作提示
    /// </summary>
    public void ShowPlayActTip()
    {
        //ClearOperateCardBtns();
        operates        = new List <OperateType>();
        operateCards    = new Dictionary <OperateType, List <int> >();
        operateActs     = new Dictionary <OperateType, List <PlayerActType> >();
        operateCardBtns = new List <GameObject>();
        for (int i = 0; i < battleProxy.playerActTipS2C.acts.Count; i++)
        {
            PlayerActType actType     = battleProxy.playerActTipS2C.acts[i];
            OperateType   operateType = OperateType.PASS;
            if (actType == PlayerActType.PUT_CARD)
            {
                continue;
            }
            if (actType == PlayerActType.PUT_FLOWER_CARD)
            {
                //PutFlowerCard();
                continue;
            }
            switch (actType)
            {
            case PlayerActType.ZHI_GANG:
            case PlayerActType.BACK_AN_GANG:
            case PlayerActType.COMMON_AN_GANG:
            case PlayerActType.BACK_PENG_GANG:
            case PlayerActType.COMMON_PENG_GANG:
                operateType = OperateType.GANG;
                break;

            case PlayerActType.SELF_HU:
            case PlayerActType.QIANG_ZHI_GANG_HU:
            case PlayerActType.QIANG_PENG_GANG_HU:
            case PlayerActType.QIANG_AN_GANG_HU:
            case PlayerActType.CHI_HU:
                operateType = OperateType.HU;
                break;

            case PlayerActType.PASS:
                operateType = OperateType.PASS;
                break;

            case PlayerActType.PENG:
                operateType = OperateType.PENG;
                break;

            case PlayerActType.CHI:
                operateType  = OperateType.CHI;
                chiSelectArr = BattleAreaUtil.GetCanChiArr(battleProxy.playerActTipS2C.actCards[i]);
                break;
                //case PlayerActType.PUT_FLOWER_CARD:
                //    //发送打花牌消息
                //    operateType = OperateType.FLOWER;
                //    break;
            }
            if (operates.IndexOf(operateType) == -1)
            {
                operates.Add(operateType);
                operateCards.Add(operateType, new List <int>());
                operateActs.Add(operateType, new List <PlayerActType>());
            }
            operateCards[operateType].Add(battleProxy.playerActTipS2C.actCards[i]);
            operateActs[operateType].Add(actType);
        }
        for (int i = 0; i < actionBtns.Count; i++)
        {
            if (i >= operateActs.Count)
            {
                actionBtnContainers[i].gameObject.SetActive(false);
                continue;
            }
            actionBtnContainers[i].gameObject.SetActive(true);
            switch (operates[i])
            {
            case OperateType.GANG:
                actionBtns[i].gameObject.SetActive(true);

                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/ActionGang");
                break;

            case OperateType.HU:
                actionBtns[i].gameObject.SetActive(true);

                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/ActionHu");
                break;

            case OperateType.PASS:
                actionBtns[i].gameObject.SetActive(true);

                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/ActionGuo");
                break;

            case OperateType.PENG:
                actionBtns[i].gameObject.SetActive(true);

                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/ActionPeng");
                break;

            case OperateType.CHI:
                actionBtns[i].gameObject.SetActive(true);

                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/ActionChi");
                break;
            }
            Animator animator = actionBtns[i].gameObject.GetComponent <Animator>();
            actionBtns[i].gameObject.GetComponent <Animator>().Play("ShowActBtn" + (i + 1), 0, 0);
        }
    }
示例#2
0
    /// <summary>
    /// 显示玩家操作提示
    /// </summary>
    public void ShowPlayActTip()
    {
        operates        = new List <OperateType>();
        operateCards    = new Dictionary <OperateType, List <int> >();
        operateActs     = new Dictionary <OperateType, List <PlayerActType> >();
        operateCardBtns = new List <GameObject>();
        for (int i = 0; i < battleProxy.GetPlayerActTipS2C().acts.Count; i++)
        {
            PlayerActType actType     = battleProxy.GetPlayerActTipS2C().acts[i];
            OperateType   operateType = OperateType.PASS;
            if (actType == PlayerActType.PUT_CARD)
            {
                continue;
            }
            switch (actType)
            {
            case PlayerActType.ZHI_GANG:
            case PlayerActType.BACK_AN_GANG:
            case PlayerActType.COMMON_AN_GANG:
            case PlayerActType.BACK_PENG_GANG:
            case PlayerActType.COMMON_PENG_GANG:
                operateType = OperateType.GANG;
                break;

            case PlayerActType.SELF_HU:
            case PlayerActType.QIANG_ZHI_GANG_HU:
            case PlayerActType.QIANG_PENG_GANG_HU:
            case PlayerActType.QIANG_AN_GANG_HU:
            case PlayerActType.CHI_HU:
                operateType = OperateType.HU;
                break;

            case PlayerActType.PENG:
                operateType = OperateType.PENG;
                break;

            case PlayerActType.CHI:
                operateType  = OperateType.CHI;
                chiSelectArr = BattleAreaUtil.GetCanChiArr(battleProxy.GetPlayerActTipS2C().actCards[i]);
                break;

            case PlayerActType.BAO_TING:
                operateType = OperateType.BAOTING;
                break;

            case PlayerActType.BAO_DIAO:
                operateType = OperateType.BAODIAO;
                break;

            case PlayerActType.CHENG_DIAO:
                operateType       = OperateType.CHENDIAO;
                chenDiaoSelectArr = battleProxy.GetPlayerActTipS2C().chenDiaoCards;
                break;

            case PlayerActType.BAO_JIA:
                operateType = OperateType.BAOJIA;
                break;

            case PlayerActType.PASS:
                operateType = OperateType.PASS;
                break;
            }
            if (operates.IndexOf(operateType) == -1)
            {
                operates.Add(operateType);
                operateCards.Add(operateType, new List <int>());
                operateActs.Add(operateType, new List <PlayerActType>());
            }
            operateCards[operateType].Add(battleProxy.GetPlayerActTipS2C().actCards[i]);
            operateActs[operateType].Add(actType);
            //if (operateType == OperateType.CHENDIAO)
            //{
            //    battleProxy.GetPlayerActTipS2C().chenDiaoCards.ForEach(o=> { operateCards[operateType].Add(o); });
            //    operateActs[operateType].Add(actType);
            //}
        }
        for (int i = 0; i < actionBtns.Count; i++)
        {
            if (i >= operateActs.Count)
            {
                actionBtnContainers[i].gameObject.SetActive(false);
                continue;
            }
            actionBtnContainers[i].gameObject.SetActive(true);
            foreach (Transform item in actionBtns[i].gameObject.transform)
            {
                Destroy(item.gameObject);
            }
            switch (operates[i])
            {
            case OperateType.GANG:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionGang");
                break;

            case OperateType.HU:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionHu");
                break;

            case OperateType.PASS:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionGuo");
                break;

            case OperateType.PENG:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionPeng");
                break;

            case OperateType.CHI:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionChi");
                break;

            case OperateType.BAOTING:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionBaoTing");
                break;

            case OperateType.BAODIAO:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionBaoDiao");
                break;

            case OperateType.BAOJIA:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionBaoJia");
                break;

            case OperateType.CHENDIAO:
                actionBtns[i].gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/91city_chipenggang/ActionChenDiao");
                break;
            }
            actionBtns[i].gameObject.GetComponent <Animator>().Play("ShowActBtn" + (i + 1), 0, 0);
        }
        for (int i = 0; i < operateActs.Count; i++)
        {
            var perPosition = actionBtnContainers[i].localPosition;
            perPosition = new Vector3(503.3f - 163.8f * (operateActs.Count - i - 1), perPosition.y, perPosition.z);
            actionBtnContainers[i].localPosition = perPosition;
        }
    }
示例#3
0
        /// <summary>
        /// 计算吃操作的权重
        /// </summary>
        /// <param name="actPowerVO">权重VO</param>
        /// <param name="canPutCards">可出的牌数组</param>
        /// <param name="passAddPower">是否增加过操作权重</param>
        private void CalculateChiPower(ActPowerVO actPowerVO, List <int> canPutCards, out bool passAddPower)
        {
            List <List <int> > chiSelectArr = BattleAreaUtil.GetCanChiArr(actPowerVO.actCard);

            chiPowerArr = new List <ChiPowerVO>();
            for (int i = 0; i < chiSelectArr.Count; i++)
            {
                var        copyCanPutCards = new List <int>(canPutCards);
                List <int> forbitCards     = new List <int>();

                if (chiSelectArr[i][0] == actPowerVO.actCard + 1)
                {
                    if (Array.IndexOf(GlobalData.CardValues, actPowerVO.actCard + 3) != -1)
                    {
                        forbitCards.Add(actPowerVO.actCard + 3);
                    }
                }
                else if (chiSelectArr[i][0] == actPowerVO.actCard - 2)
                {
                    if (Array.IndexOf(GlobalData.CardValues, actPowerVO.actCard - 3) != -1)
                    {
                        forbitCards.Add(actPowerVO.actCard - 3);
                    }
                }
                ChiPowerVO addChiPowerVO = new ChiPowerVO(chiSelectArr[i], actPowerVO.actCard, forbitCards, 0);
                chiPowerArr.Add(addChiPowerVO);
                bool isBreakCard = false;
                for (int j = 0; j < chiSelectArr[i].Count; j++)
                {
                    List <int> listFind = copyCanPutCards.FindAll(delegate(int s) {
                        return(s == chiSelectArr[i][j]);
                    });
                    if (listFind.Count > 1)//需要拆对
                    {
                        isBreakCard = true;
                    }
                }
                if (!isBreakCard)
                {
                    addChiPowerVO.power += 1000;
                }

                for (int j = 0; j < chiSelectArr[i].Count; j++)
                {
                    copyCanPutCards.Remove(chiSelectArr[i][j]);
                }
                bool hasDouble = false;
                for (int j = 0; j < copyCanPutCards.Count; j++)
                {
                    if (j > 0 && copyCanPutCards[j] == copyCanPutCards[j - 1])
                    {
                        hasDouble = true;
                        break;
                    }
                }
                if (hasDouble)
                {
                    addChiPowerVO.power += 1000;
                }
            }
            chiPowerArr.Sort((ChiPowerVO chiPowerVO1, ChiPowerVO chiPowerVO2) =>
            {
                if (chiPowerVO1.power > chiPowerVO2.power)
                {
                    return(-1);
                }
                else
                {
                    return(1);
                }
            });
            if (chiPowerArr[0].power <= 0)
            {
                passAddPower = true;
            }
            else
            {
                passAddPower      = false;
                actPowerVO.power += 50;
            }
        }