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)); } }