diff options
| author | chai <215380520@qq.com> | 2024-05-19 16:46:27 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-19 16:46:27 +0800 |
| commit | 8b1fc7063b387542803c6bc214ccf8acb32870bd (patch) | |
| tree | d310eb99872c8215f1c1f67731ec21f0915cd778 /Thronefall_1_0/GameCode/CostDisplay.cs | |
| parent | 8e13e7e2874adc8982e16d1d2ed2e28d7480b45f (diff) | |
* rename
Diffstat (limited to 'Thronefall_1_0/GameCode/CostDisplay.cs')
| -rw-r--r-- | Thronefall_1_0/GameCode/CostDisplay.cs | 256 |
1 files changed, 0 insertions, 256 deletions
diff --git a/Thronefall_1_0/GameCode/CostDisplay.cs b/Thronefall_1_0/GameCode/CostDisplay.cs deleted file mode 100644 index 350a1cf..0000000 --- a/Thronefall_1_0/GameCode/CostDisplay.cs +++ /dev/null @@ -1,256 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using MoreMountains.Feedbacks; -using TMPro; -using UnityEngine; - -public class CostDisplay : MonoBehaviour -{ - public Coinslot coinslotPrefab; - - public Coin coinPrefab; - - public RectTransform gridParent; - - public float horizontalSpacing; - - public int maxElementsPerRow = 5; - - public AnimationCurve yDistribution = new AnimationCurve(); - - public float peakYOffset = 50f; - - public float rowYSpacing = 100f; - - public Transform amountDisplayParent; - - public TextMeshProUGUI amountDisplay; - - public MMF_Player displayCostAmountShow; - - public MMF_Player displayCostAmountHide; - - private List<Coinslot> coinslotPool = new List<Coinslot>(); - - private List<Coinslot> currentlyActiveCoinslots = new List<Coinslot>(); - - private float elementWidth; - - private float yCurveLeftAnchor; - - private float yCurveRightAnchor; - - private bool reUpdateBecauseFuckUnityCanvas; - - private int currentAmount; - - private int currentlyFilledCoins; - - private float completeFillDuration = 1f; - - private float minFillDurationPerCoin = 0.15f; - - private bool denied; - - private bool inDisappearAnimation; - - private const float defaultScale = 0.01f; - - private const float largeUIScale = 0.0125f; - - public static int currentlyFilledCoinsFromLastActiveDisplay; - - public bool CompletelyFilled => currentlyFilledCoins >= currentAmount; - - public bool CompletelyEmpty => currentlyFilledCoins <= 0; - - private void Start() - { - elementWidth = coinslotPrefab.GetComponent<RectTransform>().sizeDelta.x; - float num = (float)maxElementsPerRow * elementWidth + (float)(maxElementsPerRow - 1) * horizontalSpacing; - yCurveLeftAnchor = (0f - num) / 2f + elementWidth / 2f; - yCurveRightAnchor = num / 2f - elementWidth / 2f; - } - - private void Update() - { - if (reUpdateBecauseFuckUnityCanvas) - { - UpdateDisplay(currentAmount, dirty: false); - } - } - - public void UpdateDisplay(int amount, bool dirty = true) - { - if (SettingsManager.Instance.UseLargeInGameUI) - { - base.transform.localScale = Vector3.one * 0.0125f; - } - else - { - base.transform.localScale = Vector3.one * 0.01f; - } - inDisappearAnimation = false; - base.gameObject.SetActive(value: true); - StopAllCoroutines(); - currentAmount = amount; - reUpdateBecauseFuckUnityCanvas = dirty; - currentlyActiveCoinslots.Clear(); - currentlyFilledCoins = 0; - denied = false; - amountDisplayParent.gameObject.SetActive(value: false); - if (amount < 1) - { - foreach (Coinslot item in coinslotPool) - { - item.gameObject.SetActive(value: false); - } - return; - } - int num = amount - coinslotPool.Count; - for (int i = 0; i < num; i++) - { - coinslotPool.Add(Object.Instantiate(coinslotPrefab.gameObject, gridParent).GetComponent<Coinslot>()); - } - int num2 = amount; - int num3 = num2; - if (num3 > maxElementsPerRow) - { - num3 = maxElementsPerRow; - } - int num4 = 0; - int num5 = 0; - float num6 = (0f - ((float)num3 * elementWidth + (float)(num3 - 1) * horizontalSpacing)) / 2f + elementWidth / 2f; - for (int j = 0; j < coinslotPool.Count; j++) - { - Coinslot coinslot = coinslotPool[j]; - if (j < amount) - { - coinslot.gameObject.SetActive(value: true); - currentlyActiveCoinslots.Add(coinslot); - coinslot.transform.localScale = Vector3.zero; - float num7 = num6 + ((float)num4 * elementWidth + (float)num4 * horizontalSpacing); - float y = peakYOffset * yDistribution.Evaluate(Mathf.InverseLerp(yCurveLeftAnchor, yCurveRightAnchor, num7)) + rowYSpacing * (float)num5; - coinslotPool[j].GetComponent<RectTransform>().anchoredPosition = new Vector2(num7, y); - num4++; - num2--; - if (num4 >= maxElementsPerRow) - { - num3 = num2; - if (num3 > maxElementsPerRow) - { - num3 = maxElementsPerRow; - } - num4 = 0; - num5++; - num6 = (0f - ((float)num3 * elementWidth + (float)(num3 - 1) * horizontalSpacing)) / 2f + elementWidth / 2f; - } - } - else - { - coinslot.gameObject.SetActive(value: false); - } - } - foreach (Coinslot currentlyActiveCoinslot in currentlyActiveCoinslots) - { - currentlyActiveCoinslot.SetEmpty(); - } - float num8 = (float)currentlyActiveCoinslots.Count * minFillDurationPerCoin; - if (num8 < completeFillDuration) - { - num8 = 1f; - } - ThronefallAudioManager.SetCoinDisplayFillTime(num8); - StartCoroutine(AnimateShowSlots()); - } - - public bool FillUp() - { - currentlyFilledCoinsFromLastActiveDisplay = currentlyFilledCoins; - if (currentlyActiveCoinslots.Count > currentlyFilledCoins && currentlyActiveCoinslots[currentlyFilledCoins].AddFill(Time.deltaTime * (1f / Mathf.Clamp(completeFillDuration / (float)currentAmount, minFillDurationPerCoin, completeFillDuration)), currentlyActiveCoinslots.Count - 1 == currentlyFilledCoins)) - { - currentlyFilledCoins++; - currentlyFilledCoinsFromLastActiveDisplay = currentlyFilledCoins; - return true; - } - return false; - } - - public void Deny() - { - if (!denied) - { - currentlyActiveCoinslots[currentlyFilledCoins].PlayDeny(); - ThronefallAudioManager.Instance.MakeSureCoinFillSoundIsNotPlayingAnymore(); - denied = true; - } - } - - public void OnCompletion() - { - currentlyFilledCoins = 0; - currentlyFilledCoinsFromLastActiveDisplay = 0; - denied = false; - } - - public void CancelFill(PlayerInteraction player) - { - foreach (Coinslot currentlyActiveCoinslot in currentlyActiveCoinslots) - { - if (currentlyActiveCoinslot.isFull) - { - Object.Instantiate(coinPrefab, currentlyActiveCoinslot.transform.position, currentlyActiveCoinslot.transform.rotation).SetTarget(player); - } - currentlyActiveCoinslot.SetEmpty(); - } - ThronefallAudioManager.Oneshot(ThronefallAudioManager.AudioOneShot.CoinFillCancel); - currentlyFilledCoins = 0; - currentlyFilledCoinsFromLastActiveDisplay = 0; - denied = false; - } - - private IEnumerator AnimateShowSlots() - { - float waitTime = 0.2f / (float)currentAmount; - if (currentAmount > maxElementsPerRow) - { - amountDisplayParent.gameObject.SetActive(value: true); - amountDisplay.text = "x" + currentAmount; - displayCostAmountShow.PlayFeedbacks(); - yield return new WaitForSeconds(waitTime); - } - foreach (Coinslot currentlyActiveCoinslot in currentlyActiveCoinslots) - { - currentlyActiveCoinslot.Appear(); - yield return new WaitForSeconds(waitTime); - } - } - - public void Hide() - { - if (base.gameObject.activeSelf && !inDisappearAnimation) - { - inDisappearAnimation = true; - StopAllCoroutines(); - StartCoroutine(AnimateHideSlots()); - } - } - - private IEnumerator AnimateHideSlots() - { - float waitTime = 0.2f / (float)currentAmount; - if (amountDisplay.gameObject.activeInHierarchy) - { - displayCostAmountHide.PlayFeedbacks(); - yield return new WaitForSeconds(waitTime); - } - foreach (Coinslot currentlyActiveCoinslot in currentlyActiveCoinslots) - { - currentlyActiveCoinslot.Disappear(); - yield return new WaitForSeconds(waitTime); - } - yield return new WaitForSeconds(1f); - inDisappearAnimation = false; - base.gameObject.SetActive(value: false); - } -} |
