Ejemplo n.º 1
0
        public void Initialize(MissionInfo info)
        {
            var missionName = info.Master.Type == MissionType.Daily ? $"[Daily] {info.Master.Text}" : info.Master.Text;
            var currentNum  = info.CurrentNum > info.Master.Num ? info.Master.Num : info.CurrentNum;

            _titleText.text       = $"{missionName} ({currentNum}/{info.Master.Num})";
            _descriptionText.text = info.RewardName;

            if (info.IsCompleted && !info.ReceivedReward)
            {
                _buttonText.text = "受取";
                _button.enabled  = true;
            }
            else if (info.IsCompleted && info.ReceivedReward)
            {
                _buttonText.text = "受取済";
                _button.enabled  = false;
            }
            else
            {
                _button.gameObject.SetActive(false);
            }

            _button.OnClickAsObservable().ThrottleFirst(TimeSpan.FromMilliseconds(500)).Subscribe(_ => _controller.ReceiveRewardAsync(info).Forget());
        }
        /// <summary>
        /// ミッションを1件受け取る。
        /// </summary>
        /// <param name="missionInfo"></param>
        /// <returns></returns>
        public async UniTaskVoid ReceiveRewardAsync(MissionInfo missionInfo)
        {
            Destroy(Missions[missionInfo.MissionId]);
            Missions.Remove(missionInfo.MissionId);

            await UniTask.WhenAll(
                MessageDialog.ShowAsync($"{missionInfo.RewardName} を受け取りました。"),
                UserDataManager.Mission.ReceiveRewardAsync(missionInfo.MissionId, true));
        }