private void UpdateBoostUI() { _boostSlots.Clear(); _boostChoices.Clear(); for (int b = 0; b < GlobalProps.BOOST_LIMIT.GetInt(); b++) { _boostSlots.Add(this.Clone <HeaderBoostDisplay>(BoostSlotTemplate)); } BoostSlotTemplate.SetActive(false); foreach (BoostData boostData in dataMan.boostDataList) { HeaderBoostDisplay boostChoice = this.Clone <HeaderBoostDisplay>(BoostChoiceTemplate); boostChoice.btnBoost.onClick.AddListener(() => ActivateBoost(boostChoice)); boostChoice.boostData = boostData; _boostChoices.Add(boostChoice); } BoostChoiceTemplate.SetActive(false); _boostTabHeight = BoostTab.rect.height; _boostVertHeight = BoostVerticalLayout.rect.height; RefreshBoostSlots(); }
void ActivateBoost(HeaderBoostDisplay boostChoice) { if (BoostCanvasGroup.alpha != 1) { return; } var slots = PlayerManager.Instance.BoostsSlotsActive; var slotUnused = slots.Find(slot => slot.data == null); //Do an early currency check (client-side), it also checks server-side for HACKERZ! :D var boostCurrency = boostChoice.boostData.ToCurrencyType(); int boostAmount = boostCurrency.GetAmount(); if (slotUnused == null || boostAmount <= 0) { TimelineTween.ShakeError(boostChoice.gameObject); return; } trace("Activating boost!"); trace(boostChoice.boostData); BoostCanvasGroup.alpha = 0.5f; API.Users.BoostActivate(slotUnused.slotID, boostChoice.boostData) .Then(res => { boostChoice.UpdateNumLeft(); BoostCanvasGroup.alpha = 1; RefreshBoostSlots(); }) .Catch(err => { traceError("Could not activate boost: " + GameAPIManager.GetErrorMessage(err)); TimelineTween.ShakeError(boostChoice.gameObject); BoostCanvasGroup.alpha = 1; }); }