コード例 #1
0
 // Initialization + Setup
 #region
 public void BuildItemCardRewardOverlayFromData(ItemDataSO data, ItemCardRewardOverlay card)
 {
     ItemManager.Instance.SetUpItemCardFromData(card.itemCard, data, itemCardSortingOrder);
 }
コード例 #2
0
    private IEnumerator CreateItemCardRewardEffectCoroutine(ItemDataSO itemData, Action action)
    {
        // Create Card object
        GameObject            newItemCardGO = Instantiate(itemCardEffectPrefab, cardParent);
        ItemCardRewardOverlay newItemCard   = newItemCardGO.GetComponent <ItemCardRewardOverlay>();

        // Set up card properties
        BuildItemCardRewardOverlayFromData(itemData, newItemCard);

        // Scale down card
        SetParentScale(newItemCard.itemCardScaleParent, new Vector3(0.005f, 0.005f, 0.005f));

        // Insert Delay, break up multiple simoltaenous reveals
        yield return(new WaitForSeconds(CalculateCardRevealDelay()));

        // Get next available slot position
        CardRewardScreenSlot mySlot = GetNextAvailableSlotPosition();

        // dont proceed unless a slot is available
        if (mySlot == null)
        {
            action.actionResolved = true;
            yield break;
        }

        // Move to starting slot position
        newItemCard.masterLocationParent.position = mySlot.parentTransform.position;

        // Start scaling card back to normal size
        Action scaleEffect = ScaleUpCard(newItemCard.itemCardScaleParent, 1);

        yield return(new WaitUntil(() => scaleEffect.actionResolved == true));

        // Brief pause, so player can read the card
        yield return(new WaitForSeconds(1));

        // Free up slot
        mySlot.occupied = false;

        // Start scaling card back down
        ScaleDownCard(newItemCard.itemCardScaleParent, 0.01f);

        // Start card rotation towards destination
        RotateCardZAxis(newItemCard.itemCardScaleParent, -45);

        // Enable Sparkle Effect
        newItemCard.sparkleParticleEffectParent.SetActive(true);

        // Move character panel button position
        Action moveEffect = MoveCardToDestination(newItemCard.masterLocationParent, charRosterButtonEndPosition.position);

        yield return(new WaitUntil(() => moveEffect.actionResolved == true));

        // Create mini explosion on char roster button
        GameObject newPE = Instantiate(lootExplosionEffectPrefab, cardParent);

        newPE.transform.position = charRosterButtonEndPosition.position;

        // Destroy item card
        Destroy(newItemCardGO);

        // Resolve
        action.actionResolved = true;
    }