private void OnDestroy()
        {
            dispatcher.RemoveListener <RewardServiceEvents.ClaimDailySpinRewardSuccess>(onClaimSuccess);
            dispatcher.RemoveListener <RewardServiceEvents.ClaimDailySpinRewardFailed>(onClaimFail);
            Service.Get <EventDispatcher>().DispatchEvent(new UIDisablerEvents.EnableUIElement("DailySpinButton"));
            DailySpinWheel dailySpinWheel = DailySpinWheel;

            dailySpinWheel.OnSpinComplete = (System.Action)Delegate.Remove(dailySpinWheel.OnSpinComplete, new System.Action(onSpinComplete));
            DailySpinRewardScreen rewardScreen = RewardScreen;

            rewardScreen.RewardScreenComplete = (System.Action)Delegate.Remove(rewardScreen.RewardScreenComplete, new System.Action(OnRewardScreenComplete));
            CoroutineRunner.StopAllForOwner(this);
            ClubPenguin.Core.SceneRefs.Remove(this);
        }
        private void onSpinDataAdded(DailySpinEntityData spinData)
        {
            for (int i = 0; i < widgetData.ChestDefinitions.Count; i++)
            {
                if (widgetData.ChestDefinitions[i].ChestId == spinData.CurrentChestId)
                {
                    currentChestDefinition = widgetData.ChestDefinitions[i];
                    break;
                }
            }
            ChestSpriteSelector.Select(currentChestDefinition.ChestId);
            ChestLevelNameText.text = localizer.GetTokenTranslation(currentChestDefinition.ChestNameToken);
            if (currentChestDefinition.NumChestsToNextLevel == -1)
            {
                ChestLevelValueText.gameObject.SetActive(value: false);
            }
            else
            {
                ChestLevelValueText.text = $" {spinData.NumChestsReceivedOfCurrentChestId + 1}/{currentChestDefinition.NumChestsToNextLevel}";
            }
            TitleText.text = string.Format(localizer.GetTokenTranslation("Cellphone.DailySpin.Unlock"), localizer.GetTokenTranslation(currentChestDefinition.ChestTypeToken));
            int numPunchesPerChest = currentChestDefinition.NumPunchesPerChest;

            SetChestTicks(numPunchesPerChest, spinData.NumPunchesOnCurrentChest);
            DailySpinWheel dailySpinWheel = DailySpinWheel;

            dailySpinWheel.OnSpinComplete = (System.Action)Delegate.Combine(dailySpinWheel.OnSpinComplete, new System.Action(onSpinComplete));
            if (!CheckLastSpinTime(spinData.TimeOfLastSpinInMilliseconds))
            {
                if (showingSpinData != null)
                {
                    SetChestTicks(currentChestDefinition.NumPunchesPerChest, showingSpinData.NumPunchesOnCurrentChest);
                }
                DailySpinWheel.SetOverlayState(DailySpinWheel.WheelOverlayState.Full);
            }
            this.spinData   = spinData;
            showingSpinData = new DailySpinEntityData();
            showingSpinData.CurrentChestId = spinData.CurrentChestId;
            showingSpinData.NumChestsReceivedOfCurrentChestId = spinData.NumChestsReceivedOfCurrentChestId;
            showingSpinData.NumPunchesOnCurrentChest          = spinData.NumPunchesOnCurrentChest;
            showingSpinData.TimeOfLastSpinInMilliseconds      = spinData.TimeOfLastSpinInMilliseconds;
            DailySpinWheel.SetWidgetData(widgetData, currentChestDefinition.ChestId);
        }