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)); }