public void OpenCard(GameFlowManager.TurnStatus turnStatus, int index) { if (turnStatus == GameFlowManager.TurnStatus.PlayerTurn) { var cardObj = aiHand[index].GetComponent <CardObject>(); cardObj.OpenCard(); } else { var cardObj = playerHand[index].GetComponent <CardObject>(); cardObj.OpenCard(); } }
public IEnumerator DrawCard(GameFlowManager.TurnStatus turnStatus, Card draw) { Debug.Log("test1.1"); _nowDraw = Instantiate(cardPrefab) as GameObject; _nowDraw.GetComponent <RectTransform>().position = deckPos.position; _nowDraw.GetComponent <RectTransform>().SetParent(cardCanvas.transform); _nowDraw.GetComponent <RectTransform>().localScale = Vector3.one; CardObject cardObj = _nowDraw.GetComponent <CardObject>(); cardObj.card = draw; cardObj.ui = ui; Debug.Log("test1.2"); yield return(StartCoroutine(cardObj.Draw(turnStatus, deckPos, drawedPos))); _drawed = true; }
public IEnumerator Draw(GameFlowManager.TurnStatus turn, RectTransform deckPos, RectTransform drawPos) { //カードの初期化を待つ while (!_isInitialized) { yield return(null); } _animator.SetBool("IsPlayerTurn", turn == GameFlowManager.TurnStatus.PlayerTurn); _animator.SetTrigger("Draw"); if (turn == GameFlowManager.TurnStatus.AITurn) { _button.onClick.AddListener(() => ui.SelectTarget(card.color, white, black, index)); } else { Color color = (card.color == Card.Color.White)? white : black; Color inverse = (color == white)? black : white; _button.onClick.AddListener(() => ui.ShowNumber(card.number, color, inverse, _rectTransform)); } float timer = 0f; AnimationClip currentClip = null; foreach (var clipInfo in _animator.GetCurrentAnimatorClipInfo(0)) { Match m = Regex.Match(clipInfo.clip.name, "Draw"); currentClip = (m.Success)? clipInfo.clip : currentClip; } float length = 1f; if (currentClip) { length = currentClip.length; } while (timer <= length) { timer += Time.deltaTime; _rectTransform.position = Vector3.Lerp(deckPos.position, drawPos.position, timer / length); yield return(new WaitForEndOfFrame()); } }
//DrawCard使用後に使う public IEnumerator IntoHand(GameFlowManager.TurnStatus turnStatus, bool isOpen) { //ドローが完了するまで待つ while (!_drawed) { yield return(new WaitForEndOfFrame()); } _drawed = false; if (turnStatus == GameFlowManager.TurnStatus.PlayerTurn) { playerHand.Add(_nowDraw); playerHand.Sort(CardObjectManager.CompareCard); for (int i = 0; i < playerHand.Count; ++i) { playerHand[i].GetComponent <CardObject>().index = i; } } else { aiHand.Add(_nowDraw); aiHand.Sort(CardObjectManager.CompareCard); for (int i = 0; i < aiHand.Count; ++i) { aiHand[i].GetComponent <CardObject>().index = i; } } CardObject cardObj = _nowDraw.GetComponent <CardObject>(); if (turnStatus == GameFlowManager.TurnStatus.PlayerTurn) { yield return(StartCoroutine(cardObj.IntoHand(drawedPos, playerHandPos, isOpen))); } else { yield return(StartCoroutine(cardObj.IntoHand(drawedPos, aiHandPos, isOpen))); } //位置を整理する if (turnStatus == GameFlowManager.TurnStatus.PlayerTurn) { foreach (var cgo in playerHand) { CardObject co = cgo.GetComponent <CardObject>(); float opening = 0.001f; float width = cgo.GetComponent <RectTransform>().sizeDelta.x; Vector3 origin = Vector3.zero; if (playerHand.Count % 2 == 0) { //FIXME: Vector3.rightだとワールドのものが適用されているので危険 origin = playerHandPos.position + Vector3.left * (playerHand.Count / 2 * (width + opening) - width / 2f - opening / 2f); } else { origin = playerHandPos.position + Vector3.left * (playerHand.Count / 2 * (width + opening)); } origin.x /= 2f; StartCoroutine(co.MoveTo(origin + Vector3.right * (width / 2f + opening) * co.index)); } } else { foreach (var cgo in aiHand) { CardObject co = cgo.GetComponent <CardObject>(); float opening = 0.001f; float width = cgo.GetComponent <RectTransform>().sizeDelta.x; Vector3 origin = Vector3.zero; if (aiHand.Count % 2 == 0) { //FIXME: Vector3.rightだとワールドのものが適用されているので危険 origin = aiHandPos.position + Vector3.right * (aiHand.Count / 2 * (width + opening) - width / 2f - opening / 2f); } else { origin = aiHandPos.position + Vector3.right * (aiHand.Count / 2 * (width + opening)); } origin.x /= 2f; StartCoroutine(co.MoveTo(origin + Vector3.left * (width / 2f + opening) * co.index)); } } }