private void openDialogUseItem(PacketStructUseItem item)
    {
        MasterDataUseItem itemMaster = MasterFinder <MasterDataUseItem> .Instance.Find((int)item.item_id);

        //アイテムで回復
        Dialog newDialog = Dialog.Create(DialogType.DialogYesNo);

        newDialog.SetDialogTextFromTextkey(DialogTextType.Title, "kk109q_title");
        string text     = GameTextUtil.GetText("sh132q_content4");
        string maintext = String.Format(text, itemMaster.item_name, item.item_cnt);
        // 回復後のスタミナ値を表示.
        int result_stamina = UserDataAdmin.Instance.GetUseItemStamina(itemMaster);

        maintext += "\n\n" + string.Format(GameTextUtil.GetText("sh132q_content3"), result_stamina, UserDataAdmin.Instance.m_StructPlayer.stamina_max);
        // オーバー回復になるかどうか
        if (result_stamina > UserDataAdmin.Instance.m_StructPlayer.stamina_max)
        {
            maintext += "\n\n" + GameTextUtil.GetText("sh132q_content5");
        }
        newDialog.SetDialogText(DialogTextType.MainText, maintext);
        newDialog.SetDialogTextFromTextkey(DialogTextType.YesText, "common_button4");
        newDialog.SetDialogTextFromTextkey(DialogTextType.NoText, "common_button5");
        newDialog.SetDialogEvent(DialogButtonEventType.YES, () =>
        {
            //スタミナ回復
            ServerDataUtilSend.SendPacketAPI_ItemUse(itemMaster.fix_id)
            .setSuccessAction(_data =>
            {
                UserDataAdmin.Instance.m_StructPlayer = _data.UpdateStructPlayer <RecvItemUse>((PacketStructPlayer)UserDataAdmin.Instance.m_StructPlayer);
                DialogManager.Open1B("sh135q_title", "sh135q_content", "common_button1", true, true).
                SetOkEvent(() =>
                {
                    StartCoroutine(MainMenuWebViewShowChk.PopupWebViewStart(MainMenuWebViewShowChk.PopupWebViewType.Mission, 0));
                });
            })
            .setErrorAction(_data =>
            {
            })
            .SendStart();
        });
        newDialog.Show();
    }
    private PacketStructUseItem useRecoverItem()
    {
        PacketStructUseItem[]      items = UserDataAdmin.Instance.m_StructPlayer.item_list;
        List <PacketStructUseItem> list  = new List <PacketStructUseItem>();

        // レコード追加
        for (int i = 0; i < items.Length; i++)
        {
            PacketStructUseItem item = items[i];
            if (item.item_cnt == 0)
            {
                continue;
            }

            MasterDataUseItem itemMaster = MasterFinder <MasterDataUseItem> .Instance.Find((int)item.item_id);

            if (itemMaster == null)
            {
                continue;
            }

            if (!MasterDataUtil.ChkUseItemTypeStaminaRecovery(itemMaster))
            {
                continue;
            }

            //スタミナ系アイテム
            list.Add(item);
        }

        if (list.Count <= 0)
        {
            return(null);
        }

        //[DG0-1196]fix_idの昇順ソートで使用順を決める ItemMaster.fix_id == PacketStructUseItem.item_id
        list.Sort((a, b) => (int)a.item_id - (int)b.item_id);

        return(list[0]);
    }
Exemple #3
0
    private void updateItemAll()
    {
        List <ItemDataContext> removeList = new List <ItemDataContext>();

        for (int i = 0; i < m_Item.Records0.Count; i++)
        {
            PacketStructUseItem _item = UserDataAdmin.Instance.SearchUseItem(m_Item.Records0[i].ItemMaster.fix_id);
            if (_item == null)
            {
                continue;
            }

            m_Item.Records0[i].Count      = (int)_item.item_cnt;
            m_Item.Records0[i].use_timing = _item.use_timing;
            if (m_Item.Records0[i].Count == 0)
            {
                removeList.Add(m_Item.Records0[i]);
            }
        }
        for (int i = 0; i < removeList.Count; i++)
        {
            m_Item.Records0.Remove(removeList[i]);
        }

        removeList.Clear();
        for (int i = 0; i < m_Item.Records1.Count; i++)
        {
            PacketStructUseItem _item = UserDataAdmin.Instance.SearchUseItem(m_Item.Records1[i].ItemMaster.fix_id);
            if (_item == null)
            {
                continue;
            }

            m_Item.Records1[i].Count      = (int)_item.item_cnt;
            m_Item.Records1[i].use_timing = _item.use_timing;
            if (m_Item.Records1[i].Count == 0)
            {
                removeList.Add(m_Item.Records1[i]);
            }
        }
        for (int i = 0; i < removeList.Count; i++)
        {
            m_Item.Records1.Remove(removeList[i]);
        }

        removeList.Clear();
        for (int i = 0; i < m_Item.Records2.Count; i++)
        {
            PacketStructUseItem _item = UserDataAdmin.Instance.SearchUseItem(m_Item.Records2[i].ItemMaster.fix_id);
            if (_item == null)
            {
                continue;
            }

            m_Item.Records2[i].Count      = (int)_item.item_cnt;
            m_Item.Records2[i].use_timing = _item.use_timing;
            if (m_Item.Records2[i].Count == 0)
            {
                removeList.Add(m_Item.Records2[i]);
            }
        }
        for (int i = 0; i < removeList.Count; i++)
        {
            m_Item.Records2.Remove(removeList[i]);
        }

        m_Item.setup();
        m_UpdateCount = 5;
    }
Exemple #4
0
    // レコードボタンのフィードバック
    public void OnClickedRecordButton(ProductsListItemContex contex)
    {
        // 値段(ユニットポイント)チェック
        if (contex.Price > UnitPoint)
        {
            SoundUtil.PlaySE(SEID.SE_MENU_RET);
            Dialog newDialog = Dialog.Create(DialogType.DialogOK);
            newDialog.SetDialogTextFromTextkey(DialogTextType.Title, "sh126q_title");
            newDialog.SetDialogText(DialogTextType.MainText, string.Format(GameTextUtil.GetText("sh126q_content2"), contex.NameText));
            newDialog.SetDialogTextFromTextkey(DialogTextType.OKText, "common_button1");
            newDialog.SetDialogEvent(DialogButtonEventType.OK, new System.Action(() =>
            {
#if BUILD_TYPE_DEBUG
                Debug.Log("OK");
#endif
            }));
            newDialog.Show();

            return;
        }

        //-----------------------------------------------------------
        // アイテム所持数チェック
        //-----------------------------------------------------------
        if (contex.Product.product_type == MasterDataDefineLabel.PointShopType.ITEM)
        {
            PacketStructUseItem[] items = UserDataAdmin.Instance.m_StructPlayer.item_list;
            PacketStructUseItem   item  = Array.Find(items, (v) => v.item_id == contex.Product.product_param1);

            if (item != null && item.item_cnt >= GlobalDefine.VALUE_MAX_ITEM)
            {
                SoundUtil.PlaySE(SEID.SE_MENU_RET);
                Dialog newDialog = Dialog.Create(DialogType.DialogOK);
                newDialog.SetDialogTextFromTextkey(DialogTextType.Title, "point_upperlimit_item_title");
                newDialog.SetDialogTextFromTextkey(DialogTextType.MainText, "point_upperlimit_item_content");
                newDialog.SetDialogTextFromTextkey(DialogTextType.OKText, "common_button1");
                newDialog.SetDialogEvent(DialogButtonEventType.OK, new System.Action(() =>
                {
                }));
                newDialog.Show();

                return;
            }
        }

        //-----------------------------------------------------------
        // ユニット所持数チェック
        //-----------------------------------------------------------
        if (contex.Product.product_type == MasterDataDefineLabel.PointShopType.UNIT ||
            contex.Product.product_type == MasterDataDefineLabel.PointShopType.UNIT_EVOL ||
            contex.Product.product_type == MasterDataDefineLabel.PointShopType.UNIT_BUILDUP ||
            contex.Product.product_type == MasterDataDefineLabel.PointShopType.UNIT_LINK)
        {
            int unitMax   = (int)UserDataAdmin.Instance.m_StructPlayer.total_unit;
            int unitTotal = 0;
            if (UserDataAdmin.Instance.m_StructPlayer.unit_list != null)
            {
                unitTotal = UserDataAdmin.Instance.m_StructPlayer.unit_list.Length;
            }

            if (unitTotal >= unitMax)
            {
                bool bUnitFull = (UserDataAdmin.Instance.m_StructPlayer.total_unit >= MasterDataUtil.GetUserUnitMax()); // ユニット所持枠上限
                if (bUnitFull == false)
                {
                    // 有料拡張分も見る
                    bUnitFull = (UserDataAdmin.Instance.m_StructPlayer.extend_unit >= MasterDataUtil.GetMasterDataGlobalParamFromID(GlobalDefine.GLOBALPARAMS_UNIT_MAX_EXTEND));
                }

                SoundUtil.PlaySE(SEID.SE_MENU_RET);

                if (bUnitFull == false)
                {
                    // ユニット所持枠購入上限内
                    Dialog newDialog = Dialog.Create(DialogType.DialogOK);
                    newDialog.SetDialogTextFromTextkey(DialogTextType.Title, "point_upperlimit_unit_title");
                    newDialog.SetDialogTextFromTextkey(DialogTextType.MainText, "point_upperlimit_unit_content");
                    newDialog.SetDialogTextFromTextkey(DialogTextType.OKText, "common_button1");
                    newDialog.SetDialogObjectEnabled(DialogObjectType.VerticalButtonList, true);
                    newDialog.addVerticalButton(GameTextUtil.GetText("icon_button_01"), () =>
                    {
                        //ユニット枠拡張
                        StoreDialogManager.Instance.OpenDialogUnitExtend();
                    });
                    newDialog.addVerticalButton(GameTextUtil.GetText("icon_button_02"), () =>
                    {
                        if (MainMenuManager.HasInstance)
                        {
                            MainMenuParam.m_BuildupBaseUnitUniqueId = 0;
                            MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_UNIT_BUILDUP, false, false);
                        }
                    });
                    newDialog.addVerticalButton(GameTextUtil.GetText("icon_button_03"), () =>
                    {
                        if (MainMenuManager.HasInstance)
                        {
                            MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_UNIT_SALE, false, false);
                        }
                    });
                    newDialog.Show();
                }
                else
                {
                    Dialog newDialog = Dialog.Create(DialogType.DialogOK);
                    newDialog.SetDialogTextFromTextkey(DialogTextType.Title, "point_upperlimit_unit_title");
                    newDialog.SetDialogTextFromTextkey(DialogTextType.MainText, "sc256q_content2");
                    newDialog.SetDialogTextFromTextkey(DialogTextType.OKText, "common_button1");
                    newDialog.SetDialogObjectEnabled(DialogObjectType.VerticalButtonList, true);
                    newDialog.addVerticalButton(GameTextUtil.GetText("icon_button_02"), () =>
                    {
                        if (MainMenuManager.HasInstance)
                        {
                            MainMenuParam.m_BuildupBaseUnitUniqueId = 0;
                            MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_UNIT_BUILDUP, false, false);
                        }
                    });
                    newDialog.addVerticalButton(GameTextUtil.GetText("icon_button_03"), () =>
                    {
                        if (MainMenuManager.HasInstance)
                        {
                            MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_UNIT_SALE, false, false);
                        }
                    });
                    newDialog.Show();
                }
                return;
            }
        }

        possible(contex);       // 購入可能
    }
    private void OnSelectButton()
    {
#if BUILD_TYPE_DEBUG
        Debug.Log("select quest id=" + MainMenuParam.m_QuestSelectMissionID.ToString());
#endif
        var requirement_id = m_MasterDataQuest2.quest_requirement_id;
        MasterDataQuestRequirement quest_requirement = null;
        if (requirement_id != 0)
        {
            quest_requirement = MasterDataUtil.GetMasterDataQuestRequirementFromID(requirement_id);
        }

        //--------------------------------
        // ユニット所持数が上限超えてるならクエスト不可
        //--------------------------------
        if (UserDataAdmin.Instance.m_StructPlayer.total_unit < UserDataAdmin.Instance.m_StructPlayer.unit_list.Length)
        {
            openDialogUnitOver();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (quest_requirement != null &&
                 quest_requirement.limit_rank > UserDataAdmin.Instance.m_StructPlayer.rank)
        {
            //--------------------------------
            // ランク制限でクエストに入れない場合
            //--------------------------------
            openDialogRankLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestStamina != 0 &&
                 UserDataAdmin.Instance.m_StructPlayer.stamina_max < m_MasterDataQuest2.consume_value * MainMenuParam.m_QuestStaminaAmend)
        {
            //--------------------------------
            // スタミナのMAX値が足りずクエストに入れない場合
            //--------------------------------
            openDialogStaminaLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestStamina != 0 &&
                 UserDataAdmin.Instance.m_StructPlayer.stamina_max >= m_MasterDataQuest2.consume_value &&
                 MainMenuParam.m_QuestStamina > UserDataAdmin.Instance.m_StructPlayer.stamina_now)
        {
            //--------------------------------
            // スタミナが足りない場合、スタミナ回復ダイアログを表示
            //--------------------------------

            PacketStructUseItem item = useRecoverItem();

            if (item != null)
            {
                openDialogUseItem(item);
            }
            else
            {
                //--------------------------------
                // チップによる回復ルート
                //--------------------------------

                openDialogUseStone();
            }

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestTicket != 0 &&
                 MainMenuParam.m_QuestTicket > UserDataAdmin.Instance.m_StructPlayer.have_ticket)
        {
            //--------------------------------
            // チケット対価不足
            //--------------------------------
            openDialogTicketLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestKey != 0 &&
                 MainMenuParam.m_QuestKey > GetQuestKeyCntFromAreaCategory(m_MasterDataAreaCategory))
        {
            //--------------------------------
            // キークエストの場合、クエストキー数チェッククエストキー不足
            //--------------------------------
            openDialogKeyLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else
        {
            //--------------------------------
            // 特にエラーなし。次のフローへ
            //--------------------------------
            if (MainMenuManager.HasInstance)
            {
                MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_QUEST_SELECT_FRIEND, false, false);
                SoundUtil.PlaySE(SEID.SE_MENU_OK);
            }
        }
    }
    /// <summary>
    /// OKボタン選択
    /// </summary>
    /// <param name="data"></param>
    private void OnSelectOk(ChallengeSelect.EventData data)
    {
        var requirement_id = data.questMaster.quest_requirement_id;
        MasterDataQuestRequirement quest_requirement = null;

        if (requirement_id != 0)
        {
            quest_requirement = MasterDataUtil.GetMasterDataQuestRequirementFromID(requirement_id);
        }

        //--------------------------------
        // ユニット所持数が上限超えてるならクエスト不可
        //--------------------------------
        if (UserDataAdmin.Instance.m_StructPlayer.total_unit < UserDataAdmin.Instance.m_StructPlayer.unit_list.Length)
        {
            openDialogUnitOver();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (quest_requirement != null &&
                 quest_requirement.limit_rank > UserDataAdmin.Instance.m_StructPlayer.rank)
        {
            //--------------------------------
            // ランク制限でクエストに入れない場合
            //--------------------------------
            openDialogRankLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestStamina != 0 &&
                 UserDataAdmin.Instance.m_StructPlayer.stamina_max < MainMenuParam.m_QuestStamina)
        {
            //--------------------------------
            // スタミナのMAX値が足りずクエストに入れない場合
            //--------------------------------
            openDialogStaminaLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestTicket != 0 &&
                 MainMenuParam.m_QuestTicket > UserDataAdmin.Instance.m_StructPlayer.have_ticket)
        {
            //--------------------------------
            // チケット対価不足
            //--------------------------------
            openDialogTicketLow();

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else if (MainMenuParam.m_QuestStamina != 0 &&
                 UserDataAdmin.Instance.m_StructPlayer.stamina_max >= data.questMaster.consume_value &&
                 MainMenuParam.m_QuestStamina > UserDataAdmin.Instance.m_StructPlayer.stamina_now)
        {
            //--------------------------------
            // スタミナが足りない場合、スタミナ回復ダイアログを表示
            //--------------------------------

            PacketStructUseItem item = useRecoverItem();

            if (item != null)
            {
                openDialogUseItem(item);
            }
            else
            {
                //--------------------------------
                // チップによる回復ルート
                //--------------------------------

                openDialogUseStone();
            }

            SoundUtil.PlaySE(SEID.SE_MENU_RET);
        }
        else
        {
            //--------------------------------
            // 特にエラーなし。次のフローへ
            //--------------------------------
            //成長ボス選択パラメータ設定
            MainMenuParam.SetChallengeSelectParam(data.questMaster.fix_id, data.bSkip, (data.bSkip ? data.SkipLevel : data.info.challenge_level));

            //成長ボスではMainMenuQuestSelectを経由しないのでAreaCategoryIDをここで設定
            MasterDataArea area = MasterDataUtil.GetAreaParamFromID(data.questMaster.area_id);
            MainMenuParam.m_QuestSelectAreaCateID = (area != null ? area.area_cate_id : 0);

            MainMenuParam.m_QuestAreaAmendList   = m_AreaAmendParam.m_AreaMasterDataAmendList;
            MainMenuParam.m_QuestSelectAreaID    = data.questMaster.area_id;
            MainMenuParam.m_QuestSelectMissionID = data.questMaster.fix_id;
            if (MainMenuManager.HasInstance)
            {
                MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_QUEST_SELECT_FRIEND, false, false);
                SoundUtil.PlaySE(SEID.SE_MENU_OK);
            }
        }
    }