// Update is called once per frame void OnInteractorStay(Interactor interactor) { if (MaxLevel || DisableShop) { return; } if (_currentInteractor == interactor) { if (!interactor.TryingToBuild()) { interactionTime = 0; CancelRadishes(); return; } RaddishCarrier carrier = interactor.GetComponentInParent <RaddishCarrier>(); Debug.Assert(carrier != null, "Need raddishcarrier in interactor parents"); interactionTime += Time.fixedDeltaTime; if (interactionTime >= TimeToAddRaddish) { Raddish raddish = carrier.RemoveForNewTarget(RaddishTargets[RaddishesWaitingAtTarget.Count]); if (raddish != null) { RaddishesWaitingAtTarget.Add(raddish); interactionTime = 0; } if (EnoughRadishesToLevel()) { foreach (Raddish r in RaddishesWaitingAtTarget) { r.AnimateOutAndHide(); } RaddishesUsed.AddRange(RaddishesWaitingAtTarget); RaddishesWaitingAtTarget.Clear(); if (CurrentLevel < LevelRequirements.Count - 1) { CurrentLevel += 1; OnLevelUp?.Invoke(CurrentLevel); } else { MaxLevel = true; } SetRaddishTargetsForNewLevel(); } } } }