/// <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");
            });
        }
Beispiel #3
0
        /// <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");
        }
Beispiel #4
0
        /// <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());
        }