/// <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); } }
/// <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; } }
/// <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; } }