Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        IEnumerator XiPaiOnComplete(float waitTime)
        {
            yield return(new WaitForSeconds(waitTime));

            state = MajiangGameState.MG_STATE_XIPAI_END;
        }