diff options
Diffstat (limited to 'Thronefall_v1.0/Decompile/AfterMatchUIManager.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/AfterMatchUIManager.cs | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/AfterMatchUIManager.cs b/Thronefall_v1.0/Decompile/AfterMatchUIManager.cs new file mode 100644 index 0000000..1310934 --- /dev/null +++ b/Thronefall_v1.0/Decompile/AfterMatchUIManager.cs @@ -0,0 +1,251 @@ +using System.Collections; +using Rewired; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class AfterMatchUIManager : MonoBehaviour +{ + [Header("Score Screen")] + [SerializeField] + private GameObject scoreScreenUI; + + [SerializeField] + private TMP_Text ingameHighscore; + + [SerializeField] + private TMP_Text goldBonus; + + [SerializeField] + private TMP_Text mutationBonus; + + [SerializeField] + private TMP_Text totalScore; + + [SerializeField] + private GameObject newPersonalBest; + + [Header("Graphs")] + [SerializeField] + private GameObject graphs; + + [SerializeField] + private GraphDrawer graphDrawerA; + + [SerializeField] + private GraphDrawer graphDrawerB; + + [Header("Leveling")] + [SerializeField] + private GameObject levelingProgressUI; + + [SerializeField] + private TMP_Text currentLevelTxt1; + + [SerializeField] + private RectTransform levelingBarBack; + + [SerializeField] + private RectTransform levelingBarFront; + + [SerializeField] + private TMP_Text xpDisplay; + + [SerializeField] + private Image rewardPreview1; + + [Header("Rewards")] + [SerializeField] + private GameObject rewardDisplayUI; + + [SerializeField] + private TMP_Text currentLevelTxt2; + + [SerializeField] + private Image rewardPreview2; + + [SerializeField] + private TMP_Text itemName; + + [SerializeField] + private TMP_Text itemDescription; + + [Header("Max Level")] + [SerializeField] + private GameObject maxLevelReachedUI; + + [SerializeField] + private GameObject demoLockedUI; + + [Header("Settings")] + [SerializeField] + private float timeToFillUpABar = 5f; + + [SerializeField] + private float waitAtBeginning = 0.25f; + + [SerializeField] + private float waitAfterFillingUpABar = 0.25f; + + [SerializeField] + private float waitBeforeYouCanInteract = 0.25f; + + private PerkManager perkManager; + + private MetaLevel nextMetaLevel; + + private Player input; + + private void Start() + { + perkManager = PerkManager.instance; + StartCoroutine(ShowRewards()); + input = ReInput.players.GetPlayer(0); + } + + private IEnumerator ShowRewards() + { + EnableScoreUI(); + ingameHighscore.text = SceneTransitionManager.instance.IngameScoreFromLastMatch.ToString(); + goldBonus.text = "+" + SceneTransitionManager.instance.GoldBonusScoreFromLastMatch; + mutationBonus.text = "+" + SceneTransitionManager.instance.MutatorBonusScoreFromLastMatch; + totalScore.text = SceneTransitionManager.instance.TotalScoreFromLastMatch.ToString(); + newPersonalBest.SetActive(SceneTransitionManager.instance.TotalScoreFromLastMatchIsNewPersonalRecord); + yield return new WaitForSeconds(waitAtBeginning); + while (!input.GetButtonDown("Interact")) + { + yield return null; + } + int xpToGive = SceneTransitionManager.instance.TotalScoreFromLastMatch; + yield return SelectNextMetaLevel(); + EnableLevelingProgressUI(); + currentLevelTxt1.text = "Level " + perkManager.level; + rewardPreview1.sprite = nextMetaLevel.reward.icon; + UpdateLevelingBar(); + yield return new WaitForSeconds(waitAtBeginning); + float xPTrickleSpeed = (float)nextMetaLevel.requiredXp / timeToFillUpABar; + float xpTrickle = 0f; + while (xpToGive > 0) + { + xpTrickle += xPTrickleSpeed * Time.deltaTime; + int num = (int)xpTrickle; + xpTrickle -= (float)num; + xpToGive -= num; + if (xpToGive < 0) + { + num -= xpToGive; + } + perkManager.xp += num; + UpdateLevelingBar(); + if (perkManager.xp >= nextMetaLevel.requiredXp) + { + yield return new WaitForSeconds(waitAfterFillingUpABar); + EnableRewardDisplayUI(); + currentLevelTxt2.text = "Level " + (1 + perkManager.level); + rewardPreview2.sprite = nextMetaLevel.reward.icon; + itemName.text = nextMetaLevel.reward.displayName; + itemDescription.text = nextMetaLevel.reward.description; + yield return new WaitForSeconds(waitBeforeYouCanInteract); + while (!input.GetButtonDown("Interact")) + { + yield return null; + } + perkManager.xp -= nextMetaLevel.requiredXp; + perkManager.UnlockedEquippables.Add(nextMetaLevel.reward); + perkManager.level++; + yield return SelectNextMetaLevel(); + xPTrickleSpeed = (float)nextMetaLevel.requiredXp / timeToFillUpABar; + currentLevelTxt1.text = "Level " + perkManager.level; + rewardPreview1.sprite = nextMetaLevel.reward.icon; + EnableLevelingProgressUI(); + } + yield return null; + } + yield return null; + while (!input.GetButtonDown("Interact")) + { + yield return null; + } + LevelProgressManager.instance.GetLevelDataForScene(SceneTransitionManager.instance.ComingFromGameplayScene).SaveScoreAndStatsToBestIfBest(_endOfMatch: true); + SteamManager.Instance.UploadHighscore(SceneTransitionManager.instance.TotalScoreFromLastMatch, SceneTransitionManager.instance.ComingFromGameplayScene); + SaveLoadManager.instance.SaveGame(); + SceneTransitionManager.instance.TransitionFromEndScreenToLevelSelect(); + } + + private IEnumerator SelectNextMetaLevel() + { + nextMetaLevel = perkManager.NextMetaLevel; + if (nextMetaLevel == null) + { + EnableMaxLevelReachedUI(); + yield return new WaitForSeconds(waitBeforeYouCanInteract); + while (!input.GetButtonDown("Interact")) + { + yield return null; + } + SceneTransitionManager.instance.TransitionFromEndScreenToLevelSelect(); + StopAllCoroutines(); + yield return null; + } + } + + private void DisableAllUI() + { + levelingProgressUI.SetActive(value: false); + rewardDisplayUI.SetActive(value: false); + maxLevelReachedUI.SetActive(value: false); + graphs.SetActive(value: false); + scoreScreenUI.SetActive(value: false); + demoLockedUI.SetActive(value: false); + } + + private void EnableLevelingProgressUI() + { + DisableAllUI(); + levelingProgressUI.SetActive(value: true); + } + + private void EnableRewardDisplayUI() + { + DisableAllUI(); + rewardDisplayUI.SetActive(value: true); + } + + private void EnableMaxLevelReachedUI() + { + DisableAllUI(); + maxLevelReachedUI.SetActive(value: true); + } + + private void EnableDemoLockedUI() + { + DisableAllUI(); + demoLockedUI.SetActive(value: true); + } + + private void EnableGraphsUI() + { + DisableAllUI(); + graphs.SetActive(value: false); + } + + private void EnableScoreUI() + { + DisableAllUI(); + scoreScreenUI.SetActive(value: true); + } + + private void UpdateLevelingBar() + { + xpDisplay.text = perkManager.xp + " / " + nextMetaLevel.requiredXp; + SetLevelingParPercentage((float)perkManager.xp / (float)nextMetaLevel.requiredXp); + } + + private void SetLevelingParPercentage(float _percentage) + { + float width = levelingBarBack.rect.width; + float num = width * _percentage; + levelingBarFront.localScale = new Vector3(_percentage, 1f, 1f); + levelingBarFront.localPosition = new Vector3(num / 2f - width / 2f, 0f, 0f); + } +} |