IEnumerator DisplayUpgrade(List <UpgradeChoice> choices) { upgradesIntroAnimator.SetBool("shown", true); yield return(new WaitForSeconds(upgradeDisplayDelay)); int amount = 0; for (int i = 0; i < choices.Count; i++) { amount += choices[i].choices.Length; } int count = 0; UpgradeData[] datas = new UpgradeData[amount]; for (int i = 0; i < choices.Count; i++) { for (int j = 0; j < choices[i].choices.Length; j++) { datas[count] = config.upgradeDatas[choices[i].choices[j]]; count++; } } currentDisplays = new UpgradeChoiceDisplayUI[amount]; float distance = displayDistancesByAmount[amount]; float minPos = (-1 * (distance * (amount - 1))) / 2f; float uiDistance = displayUIDistancesByAmount[amount]; float uiMinPos = (-1 * (uiDistance * (amount - 1))) / 2f; for (int i = 0; i < amount; i++) { UpgradeChoiceDisplayUI newDisplayUI = Instantiate(upgradeChoiceDisplayUI, displayUIParent.transform).GetComponent <UpgradeChoiceDisplayUI>(); UpgradeChoiceDisplay newDisplay = Instantiate(upgradeChoiceDisplay, displayParent.transform).GetComponent <UpgradeChoiceDisplay>(); currentDisplays[i] = newDisplayUI; newDisplayUI.choiceDisplay = newDisplay; RectTransform rt = newDisplayUI.GetComponent <RectTransform>(); RectTransform parentRT = displayUIParent.GetComponent <RectTransform>(); rt.anchoredPosition = new Vector2(uiMinPos + (uiDistance * i), parentRT.anchoredPosition.y); Vector3 displayPos = new Vector3(0, 0, displayDistFromCamera); displayPos.x = minPos + distance * i; newDisplay.transform.localPosition = displayPos; newDisplay.rotator.localEulerAngles = new Vector3(0, displayInitialRot, 0); newDisplay.rotator.DOLocalRotate(Vector3.zero, displaySpinningSpeed).SetEase(displaySpinningEase, displaySpinningEaseStrength); newDisplayUI.Initialize(datas[i]); yield return(new WaitForSeconds(delayBetweenDisplays)); } }
public void PickUpgrade(UpgradeChoiceDisplayUI clickedUI) { if (playerStats.upgradesPossessed.Length >= clickedUI.upgradeIndex) { playerStats.upgradesPossessed[clickedUI.upgradeIndex] = true; playerStats.upgradeChoicesMade[clickedUI.upgradeChoiceIndex] = true; for (int i = 0; i < currentDisplays.Length; i++) { currentDisplays[i].Disappear(); } DataManager.Instance.Save(SceneType.map); } upgradesIntroAnimator.SetBool("shown", false); MapManager.Instance.NextLevelIfSet(); UpgradesDisplay.Instance.AddDisplay(config.upgradeDatas[clickedUI.upgradeIndex]); }