Ejemplo n.º 1
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	固定パーティ情報で上書き
     */
    //----------------------------------------------------------------------------
    private void FixPartyAssign(ref UserDataUnitParam[] acUnitParam, uint unMissonID)
    {
        MasterDataQuest2 quest_param = MasterDataUtil.GetQuest2ParamFromID(unMissonID);

        if (quest_param == null)
        {
            return;
        }

        MasterDataQuestRequirement requirement_param = MasterDataUtil.GetMasterDataQuestRequirementFromID(quest_param.quest_requirement_id);

        if (requirement_param == null)
        {
            return;
        }

        //	書き換え:リーダーユニット
        FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.LEADER], GlobalDefine.PartyCharaIndex.LEADER, requirement_param);
        FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.MOB_1], GlobalDefine.PartyCharaIndex.MOB_1, requirement_param);
        FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.MOB_2], GlobalDefine.PartyCharaIndex.MOB_2, requirement_param);
        FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.MOB_3], GlobalDefine.PartyCharaIndex.MOB_3, requirement_param);
        FixUnitAssign(ref acUnitParam[(int)GlobalDefine.PartyCharaIndex.FRIEND], GlobalDefine.PartyCharaIndex.FRIEND, requirement_param);
    }
Ejemplo n.º 2
0
    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);
            }
        }
    }
Ejemplo n.º 3
0
    /// <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);
            }
        }
    }
Ejemplo n.º 4
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	固定パーティ情報で上書き:単体
     */
    //----------------------------------------------------------------------------
    private void FixUnitAssign(ref UserDataUnitParam unit, GlobalDefine.PartyCharaIndex party_index, MasterDataQuestRequirement requirement_param)
    {
        MasterDataDefineLabel.BoolType fix_enable = MasterDataDefineLabel.BoolType.NONE;
        uint fix_unit_id;
        int  fix_unit_lv;
        int  fix_unit_lv_lbs;
        int  fix_unit_lv_lo;
        int  fix_unit_add_hp;
        int  fix_unit_add_atk;

        MasterDataDefineLabel.BoolType fix_link_enable = MasterDataDefineLabel.BoolType.NONE;
        uint fix_unit_link_id;
        int  fix_unit_link_lv;
        int  fix_unit_link_add_hp;
        int  fix_unit_link_add_atk;
        int  fix_unit_link_point;
        int  fix_unit_link_lv_lo;

        switch (party_index)
        {
        default:
        case GlobalDefine.PartyCharaIndex.LEADER:
            //	情報格納:リーダー
            fix_enable            = requirement_param.fix_unit_00_enable;
            fix_unit_id           = requirement_param.fix_unit_00_id;
            fix_unit_lv           = requirement_param.fix_unit_00_lv;
            fix_unit_lv_lbs       = requirement_param.fix_unit_00_lv_lbs;
            fix_unit_lv_lo        = requirement_param.fix_unit_00_lv_lo;
            fix_unit_add_hp       = requirement_param.fix_unit_00_plus_hp;
            fix_unit_add_atk      = requirement_param.fix_unit_00_plus_atk;
            fix_link_enable       = requirement_param.fix_unit_00_link_enable;
            fix_unit_link_id      = requirement_param.fix_unit_00_link_id;
            fix_unit_link_lv      = requirement_param.fix_unit_00_link_lv;
            fix_unit_link_add_hp  = requirement_param.fix_unit_00_link_plus_hp;
            fix_unit_link_add_atk = requirement_param.fix_unit_00_link_plus_atk;
            fix_unit_link_point   = requirement_param.fix_unit_00_link_point;
            fix_unit_link_lv_lo   = requirement_param.fix_unit_00_link_lv_lo;
            break;

        case GlobalDefine.PartyCharaIndex.MOB_1:
            //	情報格納:サブ1
            fix_enable            = requirement_param.fix_unit_01_enable;
            fix_unit_id           = requirement_param.fix_unit_01_id;
            fix_unit_lv           = requirement_param.fix_unit_01_lv;
            fix_unit_lv_lbs       = requirement_param.fix_unit_01_lv_lbs;
            fix_unit_lv_lo        = requirement_param.fix_unit_01_lv_lo;
            fix_unit_add_hp       = requirement_param.fix_unit_01_plus_hp;
            fix_unit_add_atk      = requirement_param.fix_unit_01_plus_atk;
            fix_link_enable       = requirement_param.fix_unit_01_link_enable;
            fix_unit_link_id      = requirement_param.fix_unit_01_link_id;
            fix_unit_link_lv      = requirement_param.fix_unit_01_link_lv;
            fix_unit_link_add_hp  = requirement_param.fix_unit_01_link_plus_hp;
            fix_unit_link_add_atk = requirement_param.fix_unit_01_link_plus_atk;
            fix_unit_link_point   = requirement_param.fix_unit_01_link_point;
            fix_unit_link_lv_lo   = requirement_param.fix_unit_01_link_lv_lo;
            break;

        case GlobalDefine.PartyCharaIndex.MOB_2:
            //	情報格納:サブ2
            fix_enable            = requirement_param.fix_unit_02_enable;
            fix_unit_id           = requirement_param.fix_unit_02_id;
            fix_unit_lv           = requirement_param.fix_unit_02_lv;
            fix_unit_lv_lbs       = requirement_param.fix_unit_02_lv_lbs;
            fix_unit_lv_lo        = requirement_param.fix_unit_02_lv_lo;
            fix_unit_add_hp       = requirement_param.fix_unit_02_plus_hp;
            fix_unit_add_atk      = requirement_param.fix_unit_02_plus_atk;
            fix_link_enable       = requirement_param.fix_unit_02_link_enable;
            fix_unit_link_id      = requirement_param.fix_unit_02_link_id;
            fix_unit_link_lv      = requirement_param.fix_unit_02_link_lv;
            fix_unit_link_add_hp  = requirement_param.fix_unit_02_link_plus_hp;
            fix_unit_link_add_atk = requirement_param.fix_unit_02_link_plus_atk;
            fix_unit_link_point   = requirement_param.fix_unit_02_link_point;
            fix_unit_link_lv_lo   = requirement_param.fix_unit_02_link_lv_lo;
            break;

        case GlobalDefine.PartyCharaIndex.MOB_3:
            //	情報格納:サブ3
            fix_enable            = requirement_param.fix_unit_03_enable;
            fix_unit_id           = requirement_param.fix_unit_03_id;
            fix_unit_lv           = requirement_param.fix_unit_03_lv;
            fix_unit_lv_lbs       = requirement_param.fix_unit_03_lv_lbs;
            fix_unit_lv_lo        = requirement_param.fix_unit_03_lv_lo;
            fix_unit_add_hp       = requirement_param.fix_unit_03_plus_hp;
            fix_unit_add_atk      = requirement_param.fix_unit_03_plus_atk;
            fix_link_enable       = requirement_param.fix_unit_03_link_enable;
            fix_unit_link_id      = requirement_param.fix_unit_03_link_id;
            fix_unit_link_lv      = requirement_param.fix_unit_03_link_lv;
            fix_unit_link_add_hp  = requirement_param.fix_unit_03_link_plus_hp;
            fix_unit_link_add_atk = requirement_param.fix_unit_03_link_plus_atk;
            fix_unit_link_point   = requirement_param.fix_unit_03_link_point;
            fix_unit_link_lv_lo   = requirement_param.fix_unit_03_link_lv_lo;
            break;

        case GlobalDefine.PartyCharaIndex.FRIEND:
            //	情報格納:フレンド
            fix_enable            = requirement_param.fix_unit_04_enable;
            fix_unit_id           = requirement_param.fix_unit_04_id;
            fix_unit_lv           = requirement_param.fix_unit_04_lv;
            fix_unit_lv_lbs       = requirement_param.fix_unit_04_lv_lbs;
            fix_unit_lv_lo        = requirement_param.fix_unit_04_lv_lo;
            fix_unit_add_hp       = requirement_param.fix_unit_04_plus_hp;
            fix_unit_add_atk      = requirement_param.fix_unit_04_plus_atk;
            fix_link_enable       = requirement_param.fix_unit_04_link_enable;
            fix_unit_link_id      = requirement_param.fix_unit_04_link_id;
            fix_unit_link_lv      = requirement_param.fix_unit_04_link_lv;
            fix_unit_link_add_hp  = requirement_param.fix_unit_04_link_plus_hp;
            fix_unit_link_add_atk = requirement_param.fix_unit_04_link_plus_atk;
            fix_unit_link_point   = requirement_param.fix_unit_04_link_point;
            fix_unit_link_lv_lo   = requirement_param.fix_unit_04_link_lv_lo;
            break;
        }

        // ベースユニット強制置き換え
        switch (fix_enable)
        {
        case MasterDataDefineLabel.BoolType.ENABLE:
        {
            // 上書き
            if (unit == null)
            {
                // ベースユニットに設定がない場合
                if (fix_unit_id == 0)
                {
                    break;
                }

                unit = new UserDataUnitParam();
            }

            // ベースユニットに設定がある場合
            if (fix_unit_id != 0)
            {
                unit.m_UnitDataID            = fix_unit_id;
                unit.m_UnitParamLevel        = fix_unit_lv;
                unit.m_UnitParamLimitBreakLV = fix_unit_lv_lbs;
                unit.m_UnitParamLimitOverLV  = fix_unit_lv_lo;
                unit.m_UnitParamPlusHP       = fix_unit_add_hp;
                unit.m_UnitParamPlusPow      = fix_unit_add_atk;
                unit.m_UnitParamLinkPoint    = fix_unit_link_point;
            }
            else
            {
                // リーダー、フレンドは空にしない
                if (party_index != GlobalDefine.PartyCharaIndex.LEADER &&
                    party_index != GlobalDefine.PartyCharaIndex.FRIEND)
                {
                    // 空にする
                    unit = null;
                }
            }
        }
        break;

        case MasterDataDefineLabel.BoolType.DISABLE:
        {
            // リーダー、フレンドは空にしない
            if (party_index != GlobalDefine.PartyCharaIndex.LEADER &&
                party_index != GlobalDefine.PartyCharaIndex.FRIEND)
            {
                // 空にする
                unit = null;
            }
        }
        break;

        case MasterDataDefineLabel.BoolType.NONE:
            // 維持
            break;
        }

        // パーティにベースユニットが設定されていない場合
        if (unit == null)
        {
            return;
        }

        // リンクユニット強制置き換え
        switch (fix_link_enable)
        {
        case MasterDataDefineLabel.BoolType.ENABLE:
            // リンクユニットに設定がある場合
            if (fix_unit_link_id != 0)
            {
                unit.m_UnitParamLinkID          = fix_unit_link_id;
                unit.m_UnitParamLinkLv          = fix_unit_link_lv;
                unit.m_UnitParamLinkPlusPow     = fix_unit_link_add_hp;
                unit.m_UnitParamLinkPlusHP      = fix_unit_link_add_atk;
                unit.m_UnitParamLinkPoint       = fix_unit_link_point;
                unit.m_UnitParamLinkLimitOverLV = fix_unit_link_lv_lo;
            }
            else
            {
                unit.m_UnitParamLinkID          = 0;
                unit.m_UnitParamLinkLv          = 0;
                unit.m_UnitParamLinkPlusPow     = 0;
                unit.m_UnitParamLinkPlusHP      = 0;
                unit.m_UnitParamLinkPoint       = 0;
                unit.m_UnitParamLinkLimitOverLV = 0;
            }
            break;

        case MasterDataDefineLabel.BoolType.DISABLE:
            unit.m_UnitParamLinkID          = 0;
            unit.m_UnitParamLinkLv          = 0;
            unit.m_UnitParamLinkPlusPow     = 0;
            unit.m_UnitParamLinkPlusHP      = 0;
            unit.m_UnitParamLinkPoint       = 0;
            unit.m_UnitParamLinkLimitOverLV = 0;
            break;

        case MasterDataDefineLabel.BoolType.NONE:
            break;
        }
    }
    //----------------------------------------------------------------------------
    /*!
		@brief	フレンドリストの生成処理
	*/
    //----------------------------------------------------------------------------
    private void CreateFriendList(ref List<FriendDataSetting> friend_list, uint requirement_id)
    {
        if (friend_list == null)
        {
            return;
        }

        m_FixFriendUnit = false;
        m_FixFriendLinkUnit = false;

        //--------------------------------
        //	フレンド固定の指定があれば処理
        //--------------------------------
        PacketStructUnit unit = null;
        PacketStructUnit linkUnit = null;
        MasterDataQuestRequirement quest_requirement = null;

        uint unLinkPoint = 0;
        //bool bLinkUnitOnlyFix = false;

        if (requirement_id != 0) quest_requirement = MasterDataUtil.GetMasterDataQuestRequirementFromID(requirement_id);
        if (quest_requirement != null)
        {
            // リンクポイントを取得
            unLinkPoint = (uint)quest_requirement.fix_unit_04_link_point;

            // ベースユニット強制置き換え
            if (quest_requirement.fix_unit_04_enable == MasterDataDefineLabel.BoolType.ENABLE)
            {
                if (quest_requirement.fix_unit_04_id != 0)
                {
                    unit = MainMenuUtil.CreateDummyFriendUnit(quest_requirement.fix_unit_04_id,
                                                               (uint)quest_requirement.fix_unit_04_lv,
                                                               (uint)quest_requirement.fix_unit_04_plus_atk,
                                                               (uint)quest_requirement.fix_unit_04_plus_hp,
                                                                     0,
                                                               (uint)quest_requirement.fix_unit_04_lv_lbs,
                                                               (uint)quest_requirement.fix_unit_04_lv_lo,
                                                                     unLinkPoint);
                    m_FixFriendUnit = true;
                }
            }

            // リンクユニット強制置き換え
            switch (quest_requirement.fix_unit_04_link_enable)
            {
                case MasterDataDefineLabel.BoolType.ENABLE:
                    if (quest_requirement.fix_unit_04_link_id != 0)
                    {
                        linkUnit = MainMenuUtil.CreateDummyUnit(quest_requirement.fix_unit_04_link_id,
                                                                 (uint)quest_requirement.fix_unit_04_link_lv,
                                                                       0,
                                                                 (uint)quest_requirement.fix_unit_04_link_lv_lo,
                                                                 (uint)quest_requirement.fix_unit_04_link_plus_atk,
                                                                 (uint)quest_requirement.fix_unit_04_link_plus_hp,
                                                                       0,
                                                                 (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_LINK);
                    }
                    // 強制リンク外し
                    else
                    {
                        linkUnit = MainMenuUtil.CreateDummyUnit(0, 0, 0, 0, 0, 0, 0);
                    }

                    // ベースユニットも固定の場合
                    if (unit != null)
                    {
                        if (linkUnit != null)
                        {
                            unit.link_info = (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE;
                            unit.link_unique_id = 1;
                        }
                        else
                        {
                            unit.link_info = (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE;
                            unit.link_unique_id = 0;
                        }
                    }
                    // リンクユニットのみ固定の場合
                    else
                    {
                        m_FixFriendLinkUnit = true;
                    }
                    break;

                // 強制リンク外し
                case MasterDataDefineLabel.BoolType.DISABLE:
                    linkUnit = MainMenuUtil.CreateDummyUnit(0, 0, 0, 0, 0, 0, 0);
                    // ベースユニットが固定の場合
                    if (unit != null)
                    {
                        unit.link_info = (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE;
                        unit.link_unique_id = 0;
                    }
                    // リンクユニットのみ固定の場合
                    else
                    {
                        m_FixFriendLinkUnit = true;
                    }
                    break;

                case MasterDataDefineLabel.BoolType.NONE:
                    break;
            }
        }
        //--------------------------------
        //	現在のフレンドリストを削除
        //-------------------------------- 
        m_SelectFriend = null;
        friend_list.Clear();

        List<MasterDataParamChara> charaMasterList = MasterFinder<MasterDataParamChara>.Instance.FindAll();

        //--------------------------------
        //	新しいフレンドリストの作成
        //--------------------------------
        if (unit == null)
        {
            //--------------------------------
            //	固定フレンドの指定がない
            //--------------------------------

            // 助っ人の総数を取得
            int nFriendListTotal = 0;
            if (UserDataAdmin.Instance.m_StructHelperList != null)
            {
                nFriendListTotal += UserDataAdmin.Instance.m_StructHelperList.Length;
            }
            if (UserDataAdmin.Instance.m_StructFriendList != null)
            {
                nFriendListTotal += UserDataAdmin.Instance.m_StructFriendList.Length;
            }

            //	フレンド登録ユーザーリストの取得
            TemplateList<uint> cFavoriteFriendList = LocalSaveManager.Instance.LoadFuncAddFavoriteFriend();

            #region ==== 助っ人をフレンドリストに追加 =====
            //	助っ人をフレンドリストに追加
            //			friend_list.Alloc( nFriendListTotal );
            if (UserDataAdmin.Instance.m_StructHelperList != null)
            {
                for (int i = 0; i < UserDataAdmin.Instance.m_StructHelperList.Length; i++)
                {
                    if (UserDataAdmin.Instance.m_StructHelperList[i] == null)
                    {
                        continue;
                    }

                    FriendDataSetting cFriendParam = new FriendDataSetting();

                    if (m_FixFriendLinkUnit == false)
                    {
                        cFriendParam.FriendData = UserDataAdmin.Instance.m_StructHelperList[i];
                    }
                    // リンクユニットのみ固定の場合
                    else
                    {
                        // ヘルパーデータをコピー
                        cFriendParam.FriendData = new PacketStructFriend();
                        cFriendParam.FriendData.user_id = UserDataAdmin.Instance.m_StructHelperList[i].user_id;
                        cFriendParam.FriendData.user_name = UserDataAdmin.Instance.m_StructHelperList[i].user_name;
                        cFriendParam.FriendData.user_rank = UserDataAdmin.Instance.m_StructHelperList[i].user_rank;
                        cFriendParam.FriendData.last_play = UserDataAdmin.Instance.m_StructHelperList[i].last_play;
                        cFriendParam.FriendData.friend_point = UserDataAdmin.Instance.m_StructHelperList[i].friend_point;
                        cFriendParam.FriendData.friend_state = UserDataAdmin.Instance.m_StructHelperList[i].friend_state;
                        cFriendParam.FriendData.friend_state_update = UserDataAdmin.Instance.m_StructHelperList[i].friend_state_update;

                        unit = UserDataAdmin.Instance.m_StructHelperList[i].unit;
                        // リンク固定がある場合
                        if (linkUnit != null)
                        {
                            cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv,
                                                                                               unit.limitover_lv, unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE);
                            cFriendParam.FriendData.unit_link = linkUnit;
                        }
                        else
                        {
                            cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv,
                                                                                               unit.limitover_lv, unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE);
                        }
                    }

                    cFriendParam.MasterData = charaMasterList.Find((v) => v.fix_id == cFriendParam.FriendData.unit.id);

                    friend_list.Add(cFriendParam);
                }
            }
            #endregion

            #region ==== フレンド登録をしたフレンドを追加 =====
            //	フレンド登録をしたフレンドを追加
            if (UserDataAdmin.Instance.m_StructFriendList != null)
            {
                for (int i = 0; i < UserDataAdmin.Instance.m_StructFriendList.Length; i++)
                {
                    if (UserDataAdmin.Instance.m_StructFriendList[i] == null)
                    {
                        continue;
                    }

                    FriendDataSetting cFriendParam = new FriendDataSetting();

                    if (m_FixFriendLinkUnit == false)
                    {
                        cFriendParam.FriendData = UserDataAdmin.Instance.m_StructFriendList[i];
                    }
                    // リンクユニット固定の場合
                    else
                    {
                        // フレンドデータをコピー
                        cFriendParam.FriendData = new PacketStructFriend();
                        cFriendParam.FriendData.user_id = UserDataAdmin.Instance.m_StructFriendList[i].user_id;
                        cFriendParam.FriendData.user_name = UserDataAdmin.Instance.m_StructFriendList[i].user_name;
                        cFriendParam.FriendData.user_rank = UserDataAdmin.Instance.m_StructFriendList[i].user_rank;
                        cFriendParam.FriendData.last_play = UserDataAdmin.Instance.m_StructFriendList[i].last_play;
                        cFriendParam.FriendData.friend_point = UserDataAdmin.Instance.m_StructFriendList[i].friend_point;
                        cFriendParam.FriendData.friend_state = UserDataAdmin.Instance.m_StructFriendList[i].friend_state;
                        cFriendParam.FriendData.friend_state_update = UserDataAdmin.Instance.m_StructFriendList[i].friend_state_update;

                        unit = UserDataAdmin.Instance.m_StructFriendList[i].unit;
                        if (linkUnit != null)
                        {
                            cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv,
                                                                                               unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE);
                            cFriendParam.FriendData.unit_link = linkUnit;
                        }
                        else
                        {
                            cFriendParam.FriendData.unit = MainMenuUtil.CreateDummyFriendUnit(unit.id, unit.level, unit.add_pow, unit.add_hp, 0, unit.limitbreak_lv,
                                                                                               unLinkPoint, (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE);
                        }
                    }

                    cFriendParam.MasterData = charaMasterList.Find((v) => v.fix_id == cFriendParam.FriendData.unit.id);

                    if (cFavoriteFriendList != null)
                    {
                        cFriendParam.IsActiveLock = cFavoriteFriendList.ChkInside(TemplateListSort.ChkInsideUint, cFriendParam.FriendData.user_id);
                    }
                    else
                    {
                        cFriendParam.IsActiveLock = false;
                    }


                    friend_list.Add(cFriendParam);
                }
            }
            #endregion

            // フレンドのメンバーを条件で間引き
            friend_list = FriendListThinning(friend_list);
        }
        else
        {
            //--------------------------------
            //	固定フレンドの指定があった
            //--------------------------------
            MasterDataParamChara param_chara = charaMasterList.Find((v) => v.fix_id == unit.id);
            if (param_chara != null)
            {
                PacketStructFriend friend = new PacketStructFriend();
                friend.unit = unit;
                friend.user_id = 0;
                friend.user_name = param_chara.name;
                friend.user_rank = 999;
                friend.last_play = unit.get_time;
                friend.friend_point = 0;
                friend.friend_state = (uint)FRIEND_STATE.FRIEND_STATE_SUCCESS;

                // リンク固定がある場合
                if (linkUnit != null)
                {
                    friend.unit_link = linkUnit;
                }

                FriendDataSetting param_friend = new FriendDataSetting();
                param_friend.FriendData = friend;
                param_friend.MasterData = param_chara;

                friend_list.Add(param_friend);
            }
        }
    }