Пример #1
0
    private void OnReciveMovResReturn(CmdMsg msg)
    {
        MovResReturn ms = ProtoMan.ProtobufDeserialize <MovResReturn>(msg.body);

        object[] obj = new object[1];
        obj[0] = ms;
        ModuleManager.Instance.Invoke("PlayChessMove", obj);
    }
    IEnumerator MoveTOPosAnime(MovResReturn am)
    {
        ClearJtList();
        List <Path> path  = am.path;
        int         res   = am.res;
        GameObject  start = GameObject.Find(am.start).transform.GetChild(0).gameObject;

        ChessBoardLogicData.Instance.FindPosWithPos(am.start).IsOccupied = false;
        for (int i = 0; i < path.Count; i++)
        {
            Transform ts = null;
            AudioManager.Instance.PlayEffect(Confirm);
            ts = GameObject.Find(path[i].pt).transform;
            Vector2    direct = (ts.position - start.transform.position).normalized;
            float      ang    = VectorAngle(Vector2.up, direct);
            Vector3    pos    = new Vector3((start.transform.position.x + ts.position.x) / 2, (start.transform.position.y + ts.position.y) / 2, ts.position.z - 0.1f);
            GameObject obj    = Instantiate(Jt);
            obj.transform.position = pos;
            obj.transform.Rotate(new Vector3(0, 0, ang));
            JtList.Add(obj);


            start.transform.position = new Vector3(ts.position.x, ts.position.y, ts.position.z - 0.1f);
            if (i == path.Count - 1)
            {
                if (res == 1)
                {
                    AudioManager.Instance.PlayEffect(Confirm);
                    start.transform.SetParent(ts);
                }
                else if (res == 2)
                {
                    Destroy(GameObject.Find(am.targetpos).transform.GetChild(0).gameObject);
                    AudioManager.Instance.PlayEffect(Chi);
                    start.transform.SetParent(ts);
                }
                else if (res == 3)
                {
                    Destroy(start);
                    AudioManager.Instance.PlayEffect(ZhuangSi);
                }
                else
                {
                    ts.GetComponent <ChessPosViewBehaviour>().PosLogic.IsOccupied = false;
                    Destroy(GameObject.Find(am.targetpos).transform.GetChild(0).gameObject);
                    Destroy(start);
                    AudioManager.Instance.PlayEffect(DuiZi);
                }
            }

            yield return(new WaitForSeconds(0.1f));
        }
    }