private List <MJItem> GetOperCardList(MJOperatorModel data, MJItem item) { int index = 0; List <MJItem> itemList = new List <MJItem>(); int[] pais = data.Pais; for (int i = 0; i < pais.Length; ++i) { if (pais[i] > 0 && pais[i] < 48) { while (index < handCardList.Count) { if (handCardList[index].PaiVal == pais[i]) { itemList.Add(handCardList[index++]); break; } } Debug.LogError("GetOperCardList , oper card is not exist"); } else { Debug.LogError("GetOperCardList data.Pais[" + i + "]:" + pais[i]); } } item.PaiVal = data.Pai; itemList.Add(item); InsertSort(itemList); return(itemList); }
/// <summary> /// 操作牌调用 /// </summary> /// <param name="oper"></param> /// <returns></returns> public IEnumerator OperateCard(MJOperatorModel oper, MJItem item) { yield return(null); switch (oper.Oper) { case MahjongOperAll.GiveUp: break; case MahjongOperAll.Collect: case MahjongOperAll.TripletLeft: case MahjongOperAll.TripletCenter: case MahjongOperAll.TripletRight: case MahjongOperAll.DarkBar: case MahjongOperAll.BrightBarLeft: case MahjongOperAll.BrightBarCenter: case MahjongOperAll.BrightBarRight: CreateOperCard(oper, item); break; case MahjongOperAll.AddBarLeft: case MahjongOperAll.AddBarCenter: case MahjongOperAll.AddBarRight: AddOperCard(oper, item); break; case MahjongOperAll.Ting: case MahjongOperAll.Hu: break; } }
/// <summary> /// 更新操作牌 /// </summary> /// <param name="data"></param> /// <param name="item"></param> private void AddOperCard(MJOperatorModel data, MJItem item) { for (int i = 0; i < operCardList.Count; ++i) { if (data.Pai == operCardList[i].KeyItem.PaiVal) { item.PaiVal = data.Pai; operCardList[i].AddShow(data, item); break; } } }
/// <summary> /// 操作牌 /// </summary> /// <param name="viewSeat"></param> /// <param name="oper"></param> /// <returns></returns> public IEnumerator OperateCard(int viewSeat, MJOperatorModel oper, int outCardViewSeat) { yield return(null); MJPlayer player = _mjPlayerList[viewSeat]; MJItem item = null; if (outCardViewSeat != -1) { item = _mjPlayerList[viewSeat].GetLastOutCard(); } StartCoroutine(player.OperateCard(oper, item)); }
/// <summary> /// 创建操作牌 /// </summary> /// <param name="data"></param> /// <param name="item"></param> private void CreateOperCard(MJOperatorModel data, MJItem item) { float xOffset = 0; for (int i = 0; i < operCardList.Count; ++i) { xOffset = xOffset + operCardList[i].Width + MahjongConst.MahjongOperCardInterval; } MJOperatorCard oper = new GameObject().AddComponent <MJOperatorCard>(); oper.transform.SetParent(_operCardPoint); oper.transform.localPosition = new Vector3(xOffset, 0, 0); oper.Show(data, GetOperCardList(data, item)); operCardList.Add(oper); }
/// <summary> /// 增加 /// </summary> /// <param name="data"></param> /// <param name="mj"></param> /// <returns></returns> public IEnumerator AddShow(MJOperatorModel data, MJItem mj) { yield return(null); if (_operData.Oper != MahjongOperAll.None) { yield break; } _operData = data; Vector3 keyPos = _keyItem.transform.position; //mj.PaiVal = data.Pai; mj.transform.SetParent(transform); mj.transform.DOLocalMove(keyPos + new Vector3(0, 0, MahjongConst.MahjongOffset_x), 0.05f); mj.transform.DOLocalRotate(new Vector3(0, 90, 0), 0.05f); operList.Add(mj); yield return(new WaitForSeconds(0.05f)); }
/// <summary> /// 显示 /// </summary> /// <param name="data"></param> /// <param name="list"></param> /// <returns></returns> public IEnumerator Show(MJOperatorModel data, List <MJItem> list) { yield return(null); operList = new List <MJItem>(); int keyIndex; List <int> values = data.GetOperValue(out keyIndex); if (keyIndex != -1) { _keyItem = list[keyIndex]; } float xOffset = 0; for (int i = 0; i < list.Count; ++i) { //list[i].PaiVal = values[i]; list[i].transform.SetParent(transform); if (i == keyIndex || i == keyIndex - 1) { list[i].transform.DOLocalMove( new Vector3(xOffset, (MahjongConst.MahjongOffset_z + MahjongConst.MahjongOffset_x) / 2, 0), 0.05f); list[i].transform.DOLocalRotate(new Vector3(0, 90, 0), 0.05f); xOffset += (MahjongConst.MahjongOffset_x + MahjongConst.MahjongOffset_z) / 2; } else { list[i].transform.DOLocalMove(new Vector3(xOffset, 0, 0), 0.05f); list[i].transform.DOLocalRotate(Vector3.zero, 0.05f); xOffset += MahjongConst.MahjongOffset_x; } operList.Add(list[i]); } yield return(new WaitForSeconds(0.05f)); }