コード例 #1
0
ファイル: AidPacket.cs プロジェクト: martxelo94/GAM_SUM
    IEnumerator RewardAnimation(CardTypeCount[] reward)
    {
        button.interactable = false;

        RewardFlipCard rewardCardPrefab = deckManager.rewardCardPrefab;
        GameObject     rewardPanel      = deckManager.rewardPanel;
        Transform      rewardGridZone   = deckManager.rewardGridZone;

        yield return(null);

        Vector3 initScale = rewardGridZone.parent.localScale;

        rewardGridZone.parent.localScale = Vector3.zero;
        rewardPanel.SetActive(true);

        List <RewardFlipCard> rewardFlipCards = new List <RewardFlipCard>();

        // add cards to reward
        for (int i = 0; i < reward.Length; ++i)
        {
            if (reward[i].count == 0)
            {
                continue;
            }
            RewardFlipCard card = Instantiate(rewardCardPrefab, rewardGridZone) as RewardFlipCard;
            card.reward = reward[i];

            rewardFlipCards.Add(card);
        }

        int frames = (int)(0.5f / Time.deltaTime);

        for (int i = 0; i < frames; ++i)
        {
            rewardGridZone.parent.localScale = Vector3.Lerp(Vector3.zero, initScale, (float)(i + 1) / frames);
            yield return(null);
        }

        // wait for every card to be flipped
        while (!deckManager.IsEveryCardFliped(rewardFlipCards))
        {
            yield return(new WaitForSecondsRealtime(1f));
        }
        // add reward & remove
        foreach (RewardFlipCard c in rewardFlipCards)
        {
            deckManager.AddToPool(c.reward);
            Destroy(c.gameObject);
        }

        // reverse scale
        for (int i = 0; i < frames; ++i)
        {
            rewardGridZone.parent.localScale = Vector3.Lerp(initScale, Vector3.zero, (float)(i + 1) / frames);
            yield return(null);
        }
        rewardGridZone.parent.localScale = initScale;
        rewardPanel.SetActive(false);

        timeEnded    = false;
        lastDateUsed = DateTime.Now;
    }