// Initialization + Setup #region public void BuildItemCardRewardOverlayFromData(ItemDataSO data, ItemCardRewardOverlay card) { ItemManager.Instance.SetUpItemCardFromData(card.itemCard, data, itemCardSortingOrder); }
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; }