IEnumerator RotateSelfHandMjOnComplete(float waitTime) { yield return(new WaitForSeconds(waitTime)); state = MajiangGameState.MG_STATE_FENPAI_END; Transform canvasTransform = gameObject.transform.Find("Canvas"); Vector3 pos = app.selfHandPai.transform.localPosition; float x = pos.x; for (int j = 0; j < mjHandSelfFanPaiList.Count; j++) { if (mjHandSelfPaiList.Count == j && j != 0) { x = mjHandSelfPaiList[mjHandSelfPaiList.Count - 1].transform.localPosition.x; x += 111f; } GameObject mj = Object.Instantiate(app.selfHandPai); Transform faceTransform = mj.transform.Find("face"); faceTransform.gameObject.GetComponent <Image>().sprite = app.mjAtlas.GetSprite(app.mjSpriteNameDict[mjHandSelfPaiFaceValueList[j]]); mj.transform.localPosition = new Vector3(x, pos.y, pos.z); mj.transform.SetParent(canvasTransform, false); mjHandSelfPaiList.Add(mj); } foreach (GameObject mj in mjHandSelfFanPaiList) { Object.Destroy(mj); } mjHandSelfFanPaiList.Clear(); }
public void XiPai() { if (!(state == MajiangGameState.MG_STATE_END || state == MajiangGameState.MG_STATE_XIPAI_END || state == MajiangGameState.MG_STATE_FENPAI_END)) { UnityEngine.Debug.Log(state); return; } state = MajiangGameState.MG_STATE_XIPAING; List <GameObject> mjHandList; for (int i = 0; i < 4; i++) { mjHandList = playerOrderMjPaiLists[i]; if (mjHandList == null) { continue; } foreach (GameObject mj in mjHandList) { Object.Destroy(mj); } mjHandList.Clear(); } foreach (GameObject mj in mjHandSelfFanPaiList) { Object.Destroy(mj); } mjHandSelfFanPaiList.Clear(); foreach (GameObject mj in mjDuiPai) { if (mj == null) { continue; } if (mj.activeSelf == false) { mj.SetActive(true); } } XiPai("desk_mjtuo_west", desk_mjtuo_west_pos, 0.2416f, MajiangGameDir.MG_DIR_X); XiPai("desk_mjtuo_east", desk_mjtuo_east_pos, -0.2416f, MajiangGameDir.MG_DIR_X); XiPai("desk_mjtuo_north", desk_mjtuo_north_pos, -0.2185f, MajiangGameDir.MG_DIR_Z); XiPai("desk_mjtuo_self", desk_mjtuo_self_pos, 0.2185f, MajiangGameDir.MG_DIR_Z); }
IEnumerator FenPai(int startPaiDuiIdx) { state = MajiangGameState.MG_STATE_FENPAING; int startPaiIdx = startPaiDuiIdx * 2 - 1; int playerOrderIdx = 0; int fanPaiPosIdx = 0; int showCount = 4; while (fanPaiPosIdx < 4) { int seatIdx = GetSeatIdx(playerOrderMjPaiLists[playerOrderIdx]); MoMajiangPai(startPaiIdx, showCount); FanMajiangPai(seatIdx, fanPaiPosIdx, showCount); yield return(new WaitForSeconds(fenPaiSpeed)); playerOrderIdx++; startPaiIdx += showCount; if (startPaiIdx > 144) { startPaiIdx -= 144; } //已经摸牌一圈 if (playerOrderIdx == 4) { playerOrderIdx = 0; fanPaiPosIdx++; if (fanPaiPosIdx == 3) { showCount = 1; } } } yield return(new WaitForSeconds(0.5f)); // Vector3 dstPos = new Vector3(0.2896f, 0.1002f, 0.3601f); Vector3 dstPos2 = new Vector3(0.2896f, 0.1021f, 0.4144f); GameObject mj; Tweener t; for (int j = 0; j < mjHandSelfFanPaiList.Count; j++) { mj = mjHandSelfFanPaiList[j]; Sequence seq = DOTween.Sequence(); t = mj.transform.DOLocalMove(new Vector3(dstPos.x - j * 0.0488f, dstPos.y, dstPos.z), fanPaiSpeed).SetEase(Ease.Flash); seq.Append(t); t = mj.transform.DOLocalRotate(new Vector3(-112, 0, 0), fanPaiSpeed, RotateMode.LocalAxisAdd).SetEase(Ease.Flash); seq.Insert(0, t); t = mj.transform.DOLocalMove(new Vector3(dstPos2.x - j * 0.0488f, dstPos2.y, dstPos2.z), fanPaiSpeed).SetEase(Ease.Flash); seq.Append(t); t = mj.transform.DOLocalRotate(new Vector3(112, 0, 0), fanPaiSpeed, RotateMode.LocalAxisAdd).SetEase(Ease.Flash); seq.Insert(fanPaiSpeed, t); } mjGame.StartCoroutine(RotateSelfHandMjOnComplete(fanPaiSpeed * 2 + 0.1f)); }
IEnumerator XiPaiOnComplete(float waitTime) { yield return(new WaitForSeconds(waitTime)); state = MajiangGameState.MG_STATE_XIPAI_END; }