Example #1
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	通信処理
     */
    //----------------------------------------------------------------------------
    private void ServerCommunicate()
    {
        //--------------------------------
        // サーバーに送る情報を構築
        //--------------------------------
        uint unQuestID    = (uint)MainMenuParam.m_QuestSelectMissionID;
        uint unQuestState = 0;

        if (MainMenuParam.m_QuestSelectAreaAmendStamina != 100)
        {
            unQuestState = (int)MasterDataDefineLabel.AmendType.STAMINA;
        }                                                                                                                           // エリア補正タイプ:補正:スタミナ半減
        else if (MainMenuParam.m_QuestSelectAreaAmendEXP != 100)
        {
            unQuestState = (int)MasterDataDefineLabel.AmendType.EXP;
        }                                                                                                                       // エリア補正タイプ:補正:経験値アップ
        else if (MainMenuParam.m_QuestSelectAreaAmendCoin != 100)
        {
            unQuestState = (int)MasterDataDefineLabel.AmendType.MONEY;
        }                                                                                                                           // エリア補正タイプ:補正:コイン
        else if (MainMenuParam.m_QuestSelectAreaAmendDrop != 100)
        {
            unQuestState = (int)MasterDataDefineLabel.AmendType.DROP;
        }                                                                                                                       // エリア補正タイプ:補正:ドロップ率
        else if (MainMenuParam.m_QuestSelectAreaAmendTicket != 100)
        {
            unQuestState = (int)MasterDataDefineLabel.AmendType.TICKET;
        }                                                                                                                           // エリア補正タイプ:補正:チケット

        //----------------------------------------
        // 選択されている助っ人を取得
        //----------------------------------------
        //		PacketStructFriend cHelper = UserDataAdmin.Instance.SearchHelper( MainMenuParam.m_QuestHelperUserID );
        PacketStructFriend cHelper = MainMenuParam.m_QuestHelper;

        if (cHelper == null)
        {
            Debug.LogError("SelectFriendNone");
            return;
        }

        //----------------------------------------
        // フレンド使用のサイクルをもとにFP発生判定。
        // ここでも使用宣言が走るので使用情報を書き込んでおく
        //----------------------------------------
        // 指定のフレンドがフレンドポイント取得可能かどうか
        // bugweb3907対応、以前はクエストの取得可能情報も得ていたが、サーバーサイドに移動し、フレンドのみ見るように
        bool bFriendPointActive = (LocalSaveManager.Instance.GetLocalSaveUseFriend(cHelper.user_id) == null);

        //----------------------------------------
        // フレンドポイント付与情報をセーブ。
        //----------------------------------------
        uint unGetFriendPt = 0;

        if (bFriendPointActive == true)
        {
            // フレンドポイントを取得
            unGetFriendPt = MainMenuUtil.GetSelectFriendPoint(cHelper, MainMenuParam.m_QuestEventFP);
        }
        LocalSaveManager.Instance.SaveFuncQuestFriendPointActive(unGetFriendPt, UserDataAdmin.Instance.m_StructPlayer.have_friend_pt);

        //----------------------------------------
        //エリア補正リストを取得
        //----------------------------------------
        TemplateList <MasterDataAreaAmend> AreaAmendList = MainMenuParam.m_QuestAreaAmendList;

        uint[] aunAreaAmendID = new uint[AreaAmendList.m_BufferSize];

        for (int cnt = 0; cnt < AreaAmendList.m_BufferSize; cnt++)
        {
            aunAreaAmendID[cnt] = AreaAmendList[cnt].fix_id;
        }


        bool             is_auto_play = false;
        MasterDataQuest2 master       = MasterDataUtil.GetQuest2ParamFromID(unQuestID);

        if (master.enable_autoplay != MasterDataDefineLabel.BoolType.ENABLE)
        {
            LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption();
            is_auto_play = (cOption.m_OptionAutoPlayEnable == (int)LocalSaveDefine.OptionAutoPlayEnable.ON);
        }

        //--------------------------------
        // API通信リクエスト発行
        //--------------------------------
        switch (MasterDataUtil.GetQuestType(unQuestID))
        {
        case MasterDataDefineLabel.QuestType.NORMAL:
        {
            ServerDataUtilSend.SendPacketAPI_Quest2Start(
                unQuestID
                , unQuestState
                , cHelper.user_id
                , cHelper.unit
                , bFriendPointActive
                , UserDataAdmin.Instance.m_StructPlayer.unit_party_current
                , MainMenuParam.m_QuestEventFP
                , (MainMenuParam.m_BeginnerBoost != null) ? (int)MainMenuParam.m_BeginnerBoost.fix_id : 0
                , aunAreaAmendID
                , is_auto_play
                , cHelper.unit_link
                )
            .setSuccessAction(_data =>
                {
                    requestSuccessQuest2(_data);
                })
            .setErrorAction(_data =>
                {
                    requestError(_data);
                })
            .SendStart();
        }
        break;

        case MasterDataDefineLabel.QuestType.CHALLENGE:
        {
            ServerDataUtilSend.SendPacketAPI_ChallengeQuestStart(
                unQuestID
                , (uint)MainMenuParam.m_ChallengeQuestLevel
                , MainMenuParam.m_bChallengeQuestSkip
                , unQuestState
                , cHelper.user_id
                , cHelper.unit
                , bFriendPointActive
                , UserDataAdmin.Instance.m_StructPlayer.unit_party_current
                , MainMenuParam.m_QuestEventFP
                , (MainMenuParam.m_BeginnerBoost != null) ? (int)MainMenuParam.m_BeginnerBoost.fix_id : 0
                , aunAreaAmendID
                , is_auto_play
                , cHelper.unit_link
                )
            .setSuccessAction(_data =>
                {
                    requestSuccessChallengeQuest(_data);
                })
            .setErrorAction(_data =>
                {
                    requestError(_data);
                })
            .SendStart();
        }
        break;

        case MasterDataDefineLabel.QuestType.NONE:
            break;

        default:
            break;
        }
    }