/// <summary> /// アイテムを購入する。 /// </summary> /// <param name="storeItem"></param> /// <returns></returns> private async UniTaskVoid PurchaseAsync(StoreItem storeItem) { var vc = VirtualCurrencyNames.MS; var price = storeItem.VirtualCurrencyPrices[vc.Code]; if (VirtualCurrencyManager.MagicStone < price) { await MessageDialog.ShowAsync($"{vc.Name}が不足しています。"); return; } var buyItem = CatalogManager.CatalogItems[storeItem.ItemId]; var confirm = await ConfirmDialog.ShowAsync($"{vc.Name} {price} 個で{buyItem.DisplayName}を購入しますか?"); if (confirm == DialogResult.Cancel) { return; } var(result, _) = await UniTask.WhenAll( StoreManager.PurchaseItemAsync(StoreId.GachaStore, storeItem.ItemId, vc.Code), MessageDialog.ShowAsync("ガチャ演出再生中").AsAsyncUnitUniTask()); var getItems = result.Items.Where(x => x.BundleParent != null); foreach (var item in getItems) { await MessageDialog.ShowAsync($"{item.DisplayName}を獲得しました"); } }
/// <summary> /// 初期化する。 /// </summary> /// <param name="questDetail"></param> public void Initialize(QuestDetailMaster questDetail) { this.gameObject.SetActive(false); _nameText.text = questDetail.Name; _staminaText.text = $"消費スタミナ {questDetail.Stamina}"; _button.OnClickAsObservable().ThrottleFirst(TimeSpan.FromMilliseconds(500)).Subscribe(async _ => { if (VirtualCurrencyManager.Stamina < questDetail.Stamina) { if (InventoryManager.StaminaRecovery.Num > 0) { var confirm1 = await ConfirmDialog.ShowAsync("スタミナが不足しています。スタミナ回復薬を使用しますか?"); if (confirm1 == DialogResult.Cancel) { return; } await UniTask.WhenAll( MessageDialog.ShowAsync("スタミナを回復しました。クエストを開始します。"), InventoryManager.ConsumeStaminaRecoveryItemAsync()); } else { await MessageDialog.ShowAsync("スタミナが不足しています。"); return; } } else { var confirm = await ConfirmDialog.ShowAsync("クエストを開始してよろしいですか?"); if (confirm == DialogResult.Cancel) { return; } } await VirtualCurrencyManager.SubtractStaminaAsync(questDetail.Stamina); if (questDetail.BeforeStories?.Any() ?? false) { StorySceneController.CurrentQuestAndStoryType = (questDetail, StoryType.Before); SceneManager.LoadScene("StoryScene"); return; } SceneManager.LoadScene("InGameScene"); }); }
/// <summary> /// フレンドを削除する。 /// </summary> /// <returns></returns> private async UniTaskVoid RemoveFriendAsync() { var confirm = await ConfirmDialog.ShowAsync($"{FriendUser.Name} をフレンドから削除しますか?"); if (confirm == DialogResult.Cancel) { return; } var(isSuccess, message) = await FriendManager.RemoveFriendAsync(FriendUser.PlayFabId); var displayMessage = isSuccess ? $"{FriendUser.Name} をフレンドから削除しました。" : message; await UniTask.WhenAll( MessageDialog.ShowAsync(displayMessage), FriendManager.SyncPlayFabToClientAsync()); SceneManager.LoadScene("FriendScene"); }
/// <summary> /// アイテムを購入する。 /// </summary> /// <param name="storeItem"></param> /// <returns></returns> private async UniTaskVoid PurchaseAsync(StoreItem storeItem) { var vc = VirtualCurrencyNames.MS; var price = storeItem.VirtualCurrencyPrices[vc.Code]; if (VirtualCurrencyManager.MagicStone < price) { await MessageDialog.ShowAsync($"{vc.Name}が不足しています。"); return; } var item = CatalogManager.CatalogItems[storeItem.ItemId]; var confirm = await ConfirmDialog.ShowAsync($"{vc.Name} {price} 個で{item.DisplayName}を購入しますか?"); if (confirm == DialogResult.Cancel) { return; } await(MessageDialog.ShowAsync($"{item.DisplayName}を購入しました。"), StoreManager.PurchaseItemAsync(StoreId.MainStore, storeItem.ItemId, vc.Code).AsUniTask()); }