private void showUpgradeMenu() { GameObject upgradeMenu; RectTransform rectTransform; bool shouldShowBelow = shouldShowPopUpBelow(); if (shouldShowBelow) { rectTransform = (RectTransform)bottomUpgradeMenu.transform; } else { rectTransform = (RectTransform)topUpgradeMenu.transform; } Vector3 targetPosition = transform.position; Vector3 viewportPoint = Camera.main.WorldToScreenPoint(targetPosition); rectTransform.position += (viewportPoint - rectTransform.position); float halfHeight = (rectTransform.rect.height / 2) * hudCanvas.scaleFactor * rectTransform.localScale.y; if (shouldShowBelow) { float xOffset = 0 * hudCanvas.scaleFactor * rectTransform.localScale.x; Vector3 offset = new Vector3(xOffset, halfHeight, 0); upgradeMenu = bottomUpgradeMenu; rectTransform.position -= offset; } else { float xOffset = -(115 * hudCanvas.scaleFactor * rectTransform.localScale.x); Vector3 offset = new Vector3(xOffset, halfHeight, 0); upgradeMenu = topUpgradeMenu; rectTransform.position += offset; } UpgradeBehaviour behaviour = upgradeMenu.GetComponent <UpgradeBehaviour>(); behaviour.OnPlantSold = sellPlant; behaviour.OnPlantUpgraded = upgradePlant; behaviour.CurrentPlant = plant; upgradeMenu.SetActive(true); }
void Start() { behaviour.Initialize(this); upgradeRep.Represent(upgradeCost); upgradeBehaviour = GetComponent <UpgradeBehaviour>(); transactionObj = new ButtonBase(parentCanvas, transactionButton, buyKey, (RectTransform)transform); if (upgradeBehaviour == null || upgradeBehaviour.Equals(null)) { upgradeObj = null; } else { upgradeObj = new ButtonBase(parentCanvas, upgradeButton, upgradeKey, (RectTransform)transform); } if (upgradeObj != null) { upgradeObj.press += Upgrade; } transactionObj.press += DoTransaction; interactable = level > 0 && !locked; levelCounter.text = level.ToString(); upgradeBehaviour = GetComponent <UpgradeBehaviour>(); costRep.Represent(cost); rewardRep.Represent(returnValue); if (upgradeObj == null) { upgradeable = false; upgradeButton.transform.parent.gameObject.SetActive(false); interactable = false; levelCounter.transform.parent.gameObject.SetActive(false); } }