コード例 #1
0
    //소켓  작동 행동
    void Behaviour_Operation()
    {
        switch (Operation_State)
        {
        case MMSERVER_STATE.IDEL:
            break;


        case MMSERVER_STATE.TRY_QUICKJOIN:

            isCompleteQuickjoin = false;
            StartCoroutine(RecieceComplete_Try_Quickjoin());
            Operation_State = MMSERVER_STATE.IDEL;
            break;

        case MMSERVER_STATE.COMPLETE_QUICKJOIN:
            tryQuickJoin_Time   = 0;
            isCompleteQuickjoin = true;
            Operation_State     = MMSERVER_STATE.IDEL;
            RecieveComplete_QuickJoin();
            break;

        case MMSERVER_STATE.ERROR:
            RecieveError_Process();
            break;

        case MMSERVER_STATE.ERROR_END:
            RecieveError_EndProcess();
            break;
        }
    }
コード例 #2
0
    IEnumerator RecieceComplete_Try_Quickjoin()
    {
        tryQuickJoin_Time = 3f;

        if (!IsConnect())
        {
            //네트워크 소켓 재연결시도
            if (ConnectLogin_State != MMSERVER_STATE.RECONNECT_START)
            {
                UserEditor.Getsingleton.EditLog("퀵조인 : 네트웍끊김, 네트웍재연결시도");
                ConnectLogin_State = MMSERVER_STATE.RECONNECT_START;
            }
        }

        while (true)
        {
            if (ConnectLogin_State == MMSERVER_STATE.CONNECT_FAIL)
            {
                break;
            }
            if (ConnectLogin_State == MMSERVER_STATE.LOGIN_COMPLETE)
            {
                if (!IsConnect())
                {
                    UserEditor.Getsingleton.EditLog("퀵조인 : LOGIN_COMPLETE 이지만 네트웍끊김, 네트웍재연결시도");
                    StartCoroutine(RecieceComplete_Try_Quickjoin());
                    break;
                }

                if (!isCompleteQuickjoin)
                {
                    if (TimeCount(ref tryQuickJoin_Time, 3f))
                    {
                        tryQuickJoin_Time = 0f;
                        //퀵조인 요청 다시 보내기
                        UserEditor.Getsingleton.EditLog("퀵조인 재요청 , 배틀 종류 : " + UserDataManager.instance.user.user_Games.battleGameKind);
                        Link_Script.i.GamePlay_Send_Quick_Join(UserDataManager.instance.user.user_Games.battleGameKind);
                    }
                }
                else
                {
                    UserEditor.Getsingleton.EditLog("퀵조인 완료");
                    break;
                }
            }
            yield return(null);
        }
    }
コード例 #3
0
    IEnumerator Chk_RoomMake()
    {
        //로비 로테이트 비활성
        User.isSelectedCharacter = true;

        //로딩바
        Loadmanager.instance.LoadingUI(true);

        if (!IsConnect())
        {
            //네트워크 소켓 재연결시도
            if (ConnectLogin_State != MMSERVER_STATE.RECONNECT_START)
            {
                UserEditor.Getsingleton.EditLog("방만들기 : 네트웍끊김, 네트웍재연결시도");
                ConnectLogin_State = MMSERVER_STATE.RECONNECT_START;
            }
        }

        while (true)
        {
            if (ConnectLogin_State == MMSERVER_STATE.CONNECT_FAIL)
            {
                break;
            }
            else if (ConnectLogin_State == MMSERVER_STATE.LOGIN_COMPLETE)
            {
                if (!IsConnect())
                {
                    UserEditor.Getsingleton.EditLog("방만들기 : LOGIN_COMPLETE 이지만 네트웍끊김, 네트웍재연결시도");
                    StartCoroutine(Chk_RoomMake());
                    break;
                }

                UserEditor.Getsingleton.EditLog("방만들기 : 네트웍및 로그인이상무 방만들기 시도");

                SetSendBuffer_roomMake();
                Net_Script.Send_Data(NETKIND.CTS_ROOM_MAKE, SendBuffer.GetTrimByteData());
                //로비 로테이트 비활성
                User.isSelectedCharacter = false;

                //로딩바
                Loadmanager.instance.LoadingUI(false);
                break;
            }
            yield return(null);
        }
    }
コード例 #4
0
    void ConnetingRryFailProcess()
    {
        UserEditor.Getsingleton.EditLog("2회 연결시도 실패 해서 타이틀 보냄");

        //연결 실패
        ConnectLogin_State = MMSERVER_STATE.CONNECT_FAIL;

        //로딩바
        Loadmanager.instance.LoadingUI(false);

        UI_Popup_Notice popup = UI_Manager.Getsingleton.CreatAndGetPopup <UI_Popup_Notice>(UIPOPUP.POPUPNOTICE);

        popup.Set_PopupTitleMessage(TextDataManager.Dic_TranslateText[145]);                                                                //알림
        popup.SetPopupMessage(string.Format("{0} \n {1}", TextDataManager.Dic_TranslateText[433], TextDataManager.Dic_TranslateText[434])); //네트워크가 불안정합니다 , 네트워크 확인해주세요
        popup.Set_addEventButton(callback_connectingfail);

        connectingTry_Count = 0;
    }
コード例 #5
0
    public void RecieveError_EndProcess()
    {
        Scene _scene = SceneManager.GetActiveScene();

        if (_scene.name == DefineKey.Main)
        {
            if (UI_Manager.Getsingleton.Dic_UILst.ContainsKey(UI.LOBBY))
            {
                //ConnectLogin_State = MMSERVER_STATE.RECONNECT_START;
                Operation_State = MMSERVER_STATE.IDEL;
                //로딩바있을수 있으니 로딩방 false
                Loadmanager.instance.LoadingUI(false);

                UI_Popup_Notice popup = UI_Manager.Getsingleton.CreatAndGetPopup <UI_Popup_Notice>(UIPOPUP.POPUPNOTICE);
                popup.Set_PopupTitleMessage(TextDataManager.Dic_TranslateText[145]);                //알림
                popup.SetPopupMessage(string.Format("{0} \n {1}", TextDataManager.Dic_TranslateText[433], TextDataManager.Dic_TranslateText[434]));
                //popup.Set_addEventButton(callback_ConfirmError);
            }
        }
    }
コード例 #6
0
    //소켓 에러 리시브
    public void RecieveError_Process()
    {
        Scene _scene = SceneManager.GetActiveScene();



        if (_scene.name == DefineKey.Main)
        {
            //재연결 작동 시작~
            //ConnectLogin_State = MMSERVER_STATE.RECONNECT_START;

            Operation_State = MMSERVER_STATE.IDEL;

            if (UI_Manager.Getsingleton.Dic_UILst.ContainsKey(UI.CUSTOMROOM))
            {
                //팝업
                UI_Popup_Notice popup = UI_Manager.Getsingleton.CreatAndGetPopup <UI_Popup_Notice>(UIPOPUP.POPUPNOTICE);
                popup.Set_PopupTitleMessage(TextDataManager.Dic_TranslateText[145]);                //알림
                popup.SetPopupMessage(string.Format("{0} \n {1}", TextDataManager.Dic_TranslateText[433], TextDataManager.Dic_TranslateText[434]));

                //로비로 이동
                Transform _canvasTr = UI_Manager.Getsingleton.CanvasTr;
                UI_Manager.Getsingleton.CreatUI(UI.LOBBY, _canvasTr);
                UI_Manager.Getsingleton.CreatUI(UI.TOP, _canvasTr);
            }
        }
        else
        {
            //모든팝업 클리어하기
            UI_Manager.Getsingleton.ClearPopupUI();

            UI_Manager.Getsingleton.ClearALL_UI();

            UI_Manager.Getsingleton._UI = UI.LOBBY;

            SceneManager.LoadScene(DefineKey.Main);

            Operation_State = MMSERVER_STATE.ERROR_END;
        }
    }
コード例 #7
0
    public void Disconnect(DISCONNECT_STATE _DisConnect_State, String Error_Note = "")
    {
        if (Net_Script == null)
        {
            Debug.Log("Net_Script = 널");

            return;
        }
        else
        {
            Debug.Log("Net_Script = 널아님");


            if (_DisConnect_State == DISCONNECT_STATE.IDLE)
            {
                DisConnect_State = DISCONNECT_STATE.ERROR;

                Operation_State = MMSERVER_STATE.ERROR;

                if (Net_Script != null)
                {
                    Net_Script.Disconnect();
                }

                Debug.LogError("Disconnet_Note : " + Error_Note);
            }
            else if (_DisConnect_State == DISCONNECT_STATE.NORMALITY)
            {
                if (Net_Script != null)
                {
                    Net_Script.Disconnect();
                }

                Debug.LogError("Disconnet_Note : " + Error_Note);
            }
        }
    }
コード例 #8
0
 public void Start_mainMenuServer()
 {
     ConnectLogin_State = MMSERVER_STATE.CONNECT_START;
 }
コード例 #9
0
    ///////////////////////===============================================================================================//////////////////////////////////
    ///////////////////////===========================			Related Recieving			================================//////////////////////////////////
    ///////////////////////===============================================================================================//////////////////////////////////
    void Recieve_STC_Login()
    {
        Debug.Log("소켓서버 로그인 완료!");

        ConnectLogin_State = MMSERVER_STATE.LOGIN_OK;
    }
コード例 #10
0
    void ConnectLoginServer_Operation()
    {
        switch (ConnectLogin_State)
        {
        case MMSERVER_STATE.IDEL:
            break;

        case MMSERVER_STATE.CONNECT_FAIL:
            break;

        case MMSERVER_STATE.RECONNECT_START:
            //테스트2초용
            //if (TimeCount(ref connecting_Time, 2.0f))
        {
            Start_mainMenuServer();
            //ConnectLogin_State = MMSERVER_STATE.IDEL;
            connecting_Time = 0f;
        }
        break;

        case MMSERVER_STATE.CONNECT_START:
            mainMenuServerConnect();
            ConnectLogin_State = MMSERVER_STATE.CONNECTING;
            UserEditor.Getsingleton.EditLog("네트웍  CONNECT_START");

            break;

        case MMSERVER_STATE.CONNECTING:
            if (Net_Script.IsConnected)
            {
                UserEditor.Getsingleton.EditLog("네트웍 접속 완료");

                //네트웍 이상없으니 DIsconnect state 를 IDLE로
                DisConnect_State = DISCONNECT_STATE.IDLE;

                connecting_Time    = 0f;
                ConnectLogin_State = MMSERVER_STATE.LOGIN_START;
            }
            else
            {
                //연결시도 체크
                if (connectingTry_Count > 1)
                {
                    //재연결시도 실패 해서 그냥 타이틀로 돌려보냄
                    ConnetingRryFailProcess();
                }
                else
                {
                    if (TimeCount(ref connecting_Time, 10.0f))
                    {
                        UserEditor.Getsingleton.EditLog("네트웍 접속 시도 : " + connectingTry_Count + 1);


                        UserEditor.Getsingleton.EditLog("일정 시간 접속 불가상태여서 끊어버린다");

                        Disconnect(DISCONNECT_STATE.NORMALITY);

                        ConnectLogin_State = MMSERVER_STATE.CONNECT_START;
                        connectingTry_Count++;
                    }
                }
            }
            break;

        case MMSERVER_STATE.LOGIN_START:
            //로그인위해 서버로 로그인정보보내기
            Send_CTS_Login();
            ConnectLogin_State = MMSERVER_STATE.IDEL;

            break;

        case MMSERVER_STATE.LOGIN_OK:
            ConnectLogin_State = MMSERVER_STATE.LOGIN_COMPLETE;
            //로그인됫으니 , 리텐션 시작

            if (ct_Retention == null)
            {
                ct_Retention = Retention_Checking();
                StartCoroutine(ct_Retention);
            }
            else
            {
                StopCoroutine(ct_Retention);
                ct_Retention = null;
                ct_Retention = Retention_Checking();
                StartCoroutine(ct_Retention);
            }
            UserEditor.Getsingleton.EditLog("리텐션 시작");
            break;

        case MMSERVER_STATE.LOGIN_COMPLETE:
            connectingTry_Count = 0;
            break;
        }
    }