/// 卡牌位置变更 public void MoveCardPosEnum(int cardUId, RoomCardPosEnum toPosEnum) { CardControl cc = GetCardControl(cardUId); // if(cc.LastPosEnum == toPosEnum) return; if (cc.LastPosEnum != RoomCardPosEnum.None) { if (cardPosList.ContainsKey(cc.LastPosEnum)) { int last = cardPosList[cc.LastPosEnum].IndexOf(cardUId); if (last != -1) { cardPosList[cc.LastPosEnum].RemoveAt(last); } } } if (toPosEnum != RoomCardPosEnum.None) { if (!cardPosList.ContainsKey(toPosEnum)) { cardPosList.Add(toPosEnum, new List <int>()); } cardPosList[toPosEnum].Add(cardUId); } int playerUId = GetCardPlayer(cardUId) == null ? -1 : GetCardPlayer(cardUId).playerData.UUID; Transform cardItem = cc.GetItem().transform; cardItem.SetParent(roomControl.GetTransByPos(toPosEnum, cc.cardData, playerUId), true); cardItem.localScale = new Vector3(1, 1, 1); cardItem.localRotation = Quaternion.identity; cc.MoveCard(roomControl.GetCardPos(cc.LastPosEnum, cc.cardData, playerUId), roomControl.GetCardPos(toPosEnum, cc.cardData, playerUId), toPosEnum, onMoveCompleted); }
/// from,to = position public void MoveCard(Vector3 from, Vector3 to, RoomCardPosEnum toPosEnum, System.Action <int> onMoveCompleted) { if (moveCoroutine != null) { CoroutineManager.Instance.StopCoroutine(moveCoroutine); } GetItem().transform.position = from; this.onMoveCompleted = onMoveCompleted; moveCoroutine = CoroutineManager.Instance.StartCoroutine(move(to)); LastPosEnum = toPosEnum; cardItem.ChangePosEnum(); setScale(); }
/// 根据位置获取所在父级 public Transform GetTransByPos(RoomCardPosEnum posEnum, Card cardData, int playerUId = -1) { Transform target = null; switch (posEnum) { case RoomCardPosEnum.PublicDesk: target = GetRoomDesk(); break; case RoomCardPosEnum.PlayerHand: PlayerControl pc = PlayerManager.Instance.GetPlayer(playerUId); if (pc != null) { if (cardData.IsT <Animals>()) { target = pc.GetCardAnimal(); } else { target = pc.GetCardHand(); } } break; case RoomCardPosEnum.PlayerLibrary: pc = PlayerManager.Instance.GetPlayer(playerUId); if (pc != null) { target = pc.GetCardLibrary(); } break; case RoomCardPosEnum.TmpRound: break; case RoomCardPosEnum.EndRound: target = roomItem.GetCardEndRound(); break; case RoomCardPosEnum.WillDestroy: target = roomItem.GetWillDestroy(); break; } return(target); }
/// 舞台中卡牌的对应坐标 public Vector3 GetCardPos(RoomCardPosEnum posEnum, Card cardData, int playerUId = -1) { Transform target = GetTransByPos(posEnum, cardData, playerUId); if (target != null) { CardLayoutData layoutData = target.GetComponent <CardLayoutData>(); if (layoutData != null) { return(layoutData.GetNextPos()); } else { return(target.position); } } return(GetRoomItem().transform.position); }
public void Init(Card card) { cardData = card; LastPosEnum = RoomCardPosEnum.None; }