//设置手牌 (空手牌 赋值) public void SetHand(int seatPos, Poker poker) { //判断是否需要加载 List <MaJiangCtrl_PaiJiu> handPokerList = GetHand(seatPos); if (handPokerList == null) { return; } for (int i = 0; i < handPokerList.Count; i++) { if (handPokerList[i].Poker.index == poker.index) { AppDebug.Log(string.Format("加载有数据的牌")); MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(seatPos, poker, "Hand"); ctrl.transform.SetParent(handPokerList[i].transform.parent); ctrl.transform.localScale = handPokerList[i].transform.localScale; ctrl.transform.localPosition = handPokerList[i].transform.localPosition; ctrl.transform.localEulerAngles = handPokerList[i].transform.localEulerAngles; PushMaJiangToPool(handPokerList[i].gameObject); handPokerList[i] = ctrl; } } }
/// <summary> /// 座位摸牌 摸牌到场景手牌上 /// </summary> /// <param name="majiang">摸的牌</param> public void DrawPoker(MaJiangCtrl_PaiJiu majiang) { //设置 majiang.gameObject.SetParent(m_HandContainer.transform); majiang.SetPokerStatus(false); m_HandContainer.Sort(); }
//摸牌 public MaJiangCtrl_PaiJiu DrawMaJiang(int toSeatPos, Poker poker /*, bool isInitPoker, bool isLast = false*/) { if (m_ListWall == null || m_ListWall.Count <= 0) { AppDebug.ThrowError("摸的牌墙木有牌了阿!!!!"); return(null); } //MaJiangCtrl_PaiJiu majiang = null; MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(toSeatPos, poker, "Hand"); //ctrl.transform.SetParent(majiang.transform.parent); //ctrl.transform.position = majiang.transform.position; //ctrl.transform.rotation = majiang.transform.rotation; //m_WallPool.Despawn(majiang.transform); if (!m_DicHand.ContainsKey(toSeatPos)) { m_DicHand.Add(toSeatPos, new List <MaJiangCtrl_PaiJiu>()); } m_DicHand[toSeatPos].Add(ctrl); //--OverplusWallCount; //m_ListWall[0].transform.GetComponent<MeshRenderer>().enabled = false; PushMaJiangToPool(m_ListWall[0].gameObject); m_ListWall.RemoveAt(0); return(ctrl); }
public void CreateWall() { for (int i = 0; i < m_nMaJiangCount; ++i) { MaJiangCtrl_PaiJiu majiang = SpawnMaJiang(1, null, "Table"); m_ListWall.Add(majiang); } }
/// <summary> /// 清空牌墙 /// </summary> public void ClearWall() { for (int i = m_ListWall.Count - 1; i >= 0; i--) { MaJiangCtrl_PaiJiu deletePoker = m_ListWall[i]; m_ListWall.Remove(deletePoker); //存入对象池 PushMaJiangToPool(deletePoker.gameObject); } m_ListWall.Clear(); }
public void SetUI(MaJiangCtrl_PaiJiu majiang) { Majiang = majiang; majiang.gameObject.SetParent(this.transform); //majiang.transform.SetAsFirstSibling(); majiang.SetPokerStatus(false); //SetPokerStatus(false); }
/// <summary> /// 切牌动画 /// </summary> /// <param name="wallList">牌墙list</param> /// <param name="dun">切第几墩 </param> /// <param name="onComplete">回调</param> public void CutPokerAni(List <MaJiangCtrl_PaiJiu> wallList, int dun, System.Action onComplete) { MaJiangCtrl_PaiJiu pokerOne = wallList[(2 * dun)]; MaJiangCtrl_PaiJiu pokerTwe = wallList[(2 * dun + 1)]; //改变顺序 选择距离远的切 bool tou = dun < (wallList.Count / 4); //是否距离头部近 Debug.Log(string.Format("是否距离头部近:{0}", tou)); pokerOne.transform.SetSiblingIndex(tou ? (pokerOne.transform.parent.childCount - 1) : 0); pokerTwe.transform.SetSiblingIndex(tou ?(pokerOne.transform.parent.childCount - 1):1); wallList.Remove(pokerOne); wallList.Remove(pokerTwe); wallList.Insert(tou ? (wallList.Count) : 0, pokerOne); wallList.Insert(tou ? (wallList.Count) : 1, pokerTwe); //上移 pokerOne.transform.DOMove(pokerOne.transform.position + new Vector3(0, 15, 0), 0.3f).OnComplete(() => { //移动至头尾 pokerOne.transform.DOLocalMove(m_WallContainer.GetPos(tou ? (wallList.Count - 2) : 0) + new Vector3(0, -15, 0), 0.7f).OnComplete(() => { //全部归位 for (int i = 0; i < wallList.Count; i++) { if (i == wallList.Count - 1) { wallList[i].transform.DOLocalMove(m_WallContainer.GetPos(i), 0.4f).OnComplete(() => { if (onComplete != null) { onComplete(); } }); } else { wallList[i].transform.DOLocalMove(m_WallContainer.GetPos(i), 0.4f); } } }); }); pokerTwe.transform.DOMove(pokerTwe.transform.position + new Vector3(0, 15, 0), 0.3f).OnComplete(() => { pokerTwe.transform.DOLocalMove(m_WallContainer.GetPos(tou ? (wallList.Count - 1) : 1) + new Vector3(0, -15, 0), 0.7f); }); }
/// <summary> /// 加载麻将 /// </summary> /// <param name="seatPos"></param> /// <param name="poker"></param> /// <param name="layer"></param> /// <returns></returns> public MaJiangCtrl_PaiJiu SpawnMaJiang(int seatPos, Poker poker, string layer) { //MaJiangCtrl_PaiJiu ctrl = m_WallPool.Spawn((poker == null || poker.color == 0) ? "1_1" : poker.ToString()).gameObject.GetOrCreatComponent<MaJiangCtrl>(); MaJiangCtrl_PaiJiu ctrl = LoadMaJiang((poker == null || poker.type == 0) ? PrefabName : poker.ToString()).GetOrCreatComponent <MaJiangCtrl_PaiJiu>(); string materialName = "mj_green"; string materialPath = string.Format("download/{0}/source/modelsource/materials/{1}.drb", ConstDefine.GAME_NAME, materialName); AssetBundleManager.Instance.LoadOrDownload <Material>(materialPath, materialName, (Material go) => { ctrl.GetComponentInChildren <Renderer>().material = go; }, 1); //bool isUniversal = MahJongHelper.CheckUniversal(poker, RoomMaJiangProxy.Instance.GetSeatBySeatId(seatPos).UniversalList); ctrl.Init(poker); ctrl.gameObject.SetLayer(LayerMask.NameToLayer(layer)); return(ctrl); }
//弃牌 由座位一个一个弃牌 public MaJiangCtrl_PaiJiu ClearHandPoker(int seatPos, Poker poker) { List <MaJiangCtrl_PaiJiu> lst = m_DicHand[seatPos]; //从手牌里找牌 MaJiangCtrl_PaiJiu majiang = null; for (int i = 0; i < lst.Count; ++i) { if (lst[i].Poker.size == poker.size && lst[i].Poker.type == poker.type) { majiang = lst[i]; lst.Remove(lst[i]); //lst.RemoveAt(i); break; } } if (majiang == null) { AppDebug.ThrowError("没找到要打的牌!!!!!!" + poker.ToString()); } MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(seatPos, poker, "Table"); if (majiang != null) { ctrl.transform.position = majiang.transform.position; ctrl.transform.rotation = majiang.transform.rotation; PushMaJiangToPool(majiang.gameObject);//删除 //m_WallPool.Despawn(majiang.transform);//删除 } //把牌放桌面上 if (!m_DicTable.ContainsKey(seatPos)) { m_DicTable.Add(seatPos, new List <MaJiangCtrl_PaiJiu>()); } m_DicTable[seatPos].Add(ctrl); return(ctrl); }
/// <summary> /// 清空手牌 /// </summary> public void ClearHandPoker() { //找到手牌 List <MaJiangCtrl_PaiJiu> handPokerList = MahJongManager_PaiJiu.Instance.GetHand(m_nSeatPos); if (handPokerList == null) { return; } int handPokerListCount = handPokerList.Count; for (int i = 0; i < handPokerListCount; i++) { AppDebug.Log(string.Format("座位{0}弃牌{1}", m_nSeatPos, handPokerList[0].Poker.ToChinese())); MaJiangCtrl_PaiJiu majiang = MahJongManager_PaiJiu.Instance.ClearHandPoker(m_nSeatPos, handPokerList[0].Poker); majiang.gameObject.SetParent(m_DeskTopContainer.transform); majiang.gameObject.layer = m_DeskTopContainer.gameObject.layer; majiang.transform.localPosition = m_DeskTopContainer.GetLocalPos(majiang.transform); } }
public List <MaJiangCtrl_PaiJiu> DrawMaJiangWall(List <Poker> pokermWall) { for (int i = 0; i < pokermWall.Count; i++) { if (i > m_ListWall.Count - 1) { break; } MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(1, pokermWall[i], "Table"); GameObject majiang = m_ListWall[i].gameObject; ctrl.transform.SetParent(majiang.transform.parent); ctrl.transform.SetSiblingIndex(majiang.transform.GetSiblingIndex()); ctrl.transform.position = majiang.transform.position; ctrl.transform.rotation = majiang.transform.rotation; m_ListWall[i] = ctrl; PushMaJiangToPool(majiang); } return(m_ListWall); }