Пример #1
0
    private IEnumerator CreateAbilityCardRewardEffectCoroutine(AbilityDataSO abilityData, Action action)
    {
        // Create Card object
        GameObject newAbilityCardGO             = Instantiate(abilityCardEffectPrefab, cardParent);
        AbilityCardRewardOverlay newAbilityCard = newAbilityCardGO.GetComponent <AbilityCardRewardOverlay>();

        // Set up card properties
        BuildAbilityCardRewardOverlayFromData(abilityData, newAbilityCard);

        // Scale down card
        SetParentScale(newAbilityCard.abilityCardScaleParent, 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
        newAbilityCard.masterLocationParent.position = mySlot.parentTransform.position;

        // Start scaling card back to normal size
        Action scaleEffect = ScaleUpCard(newAbilityCard.abilityCardScaleParent, 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(newAbilityCard.abilityCardScaleParent, 0.01f);

        // Start card rotation towards destination
        RotateCardZAxis(newAbilityCard.abilityCardScaleParent, -45);

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

        // Move character panel button position
        Action moveEffect = MoveCardToDestination(newAbilityCard.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(newAbilityCardGO);

        // Resolve
        action.actionResolved = true;
    }
Пример #2
0
 public void BuildAbilityCardRewardOverlayFromData(AbilityDataSO data, AbilityCardRewardOverlay card)
 {
     AbilityInfoSheetController.Instance.BuildSheetFromData(card.abilityCard, data, AbilityInfoSheet.PivotDirection.Downwards);
 }