//소켓 작동 행동 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; } }
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); } }
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); } }
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; }
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); } } }
//소켓 에러 리시브 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; } }
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); } } }
public void Start_mainMenuServer() { ConnectLogin_State = MMSERVER_STATE.CONNECT_START; }
///////////////////////===============================================================================================////////////////////////////////// ///////////////////////=========================== Related Recieving ================================////////////////////////////////// ///////////////////////===============================================================================================////////////////////////////////// void Recieve_STC_Login() { Debug.Log("소켓서버 로그인 완료!"); ConnectLogin_State = MMSERVER_STATE.LOGIN_OK; }
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; } }