//게임오버 프로토콜 체크 연산(게임씬으로 이동전에 게임오버 프로토콜을 받을수 있기때문에, 게임오버 프로토콜은 버퍼에 담아 놓고 게임플레이 상태에서 처리 해준다.) void Recv_GameOver_Operation() { if (Recv_TimerOver_State == RECV_GAMEOVER_SATAE.GET_PROTOCOL) { Game_Script.Recv_TimerOver(Recv_TimerOver_Data); Recv_TimerOver_State = RECV_GAMEOVER_SATAE.SET_INIT_END; } if (Recv_RewardEnd_State == RECV_GAMEOVER_SATAE.GET_PROTOCOL && Recv_TimerOver_State == RECV_GAMEOVER_SATAE.SET_INIT_END) { Game_Script.Recv_RewardEnd(); Recv_RewardEnd_State = RECV_GAMEOVER_SATAE.SET_INIT_END; } }
//팀플 조인 답변 void Recv_TeamPlay_Join(ByteData _Receive_data) { //플레이어 기본 정보 셋팅 Link_Script.i.User_Data_Init(); Game_Script = null; Recv_TimerOver_State = RECV_GAMEOVER_SATAE.IDLE; Recv_RewardEnd_State = RECV_GAMEOVER_SATAE.IDLE; Recv_TimerOver_Data = null; Network_State = NETWORK_STATE.QUICKJOINING; //1인 퀵조인 답변 Recv_Quick_Join(Receive_Buffer); }
//서버에서 게임 보상 셋팅 완료했다 게임 완전히 끝낸다. void Recv_RewardEnd() { Recv_RewardEnd_State = RECV_GAMEOVER_SATAE.GET_PROTOCOL; }
//================================================================================================================================================================================ //게임 시간이 끝났다, 보상 결과 올때까지 대기 void Recv_TimerOver(ByteData _Receive_data) { Recv_TimerOver_State = RECV_GAMEOVER_SATAE.GET_PROTOCOL; Recv_TimerOver_Data = _Receive_data; }
void Network_Operation() { if (!Link_Script.i.IsConnected()) { return; } switch (Network_State) { case NETWORK_STATE.IDEL: break; //case NETWORK_STATE.CONNECT_INIT: // break; //case NETWORK_STATE.CONNECT_START: // break; //case NETWORK_STATE.CONNECTING: // break; //case NETWORK_STATE.CONNECTING_OK: // break; //case NETWORK_STATE.LOGIN_START: // break; //case NETWORK_STATE.LOGGING: // break; //case NETWORK_STATE.LOGIN_OK: // break; case NETWORK_STATE.QUICKJOIN_START: //플레이어 기본 정보 셋팅 Link_Script.i.User_Data_Init(); Game_Script = null; Recv_TimerOver_State = RECV_GAMEOVER_SATAE.IDLE; Recv_RewardEnd_State = RECV_GAMEOVER_SATAE.IDLE; Recv_TimerOver_Data = null; Network_State = NETWORK_STATE.QUICKJOINING; Send_Quick_Join(); //Debug.Log("퀵조인 시도"); break; case NETWORK_STATE.QUICKJOINING: break; case NETWORK_STATE.QUICKJOIN_OK: if (!SendManager.Instance.Get_currentScene().Equals("Main")) { //Debug.Log("씬전환 완료!!!!!!!!!!!!!!!!!"); Game_Script = GameObject.Find("Script_Object").GetComponent <GamePlay_Script>(); Network_State = NETWORK_STATE.GAMEPLAY_START; } break; case NETWORK_STATE.GAMEPLAY_START: Send_GamePlay_Start(); Send_HeartBeat_Time = 0.0f; Recv_HeartBeat_Time = 0.0f; Network_Delay_Check = false; Network_State = NETWORK_STATE.GAMEPLAYING; //Debug.Log("게임 시작 들어간다"); break; case NETWORK_STATE.GAMEPLAYING: //하트비트 체크하기 HeartBeat_Oeration(); //게임오버 프로토콜 체크 연산 Recv_GameOver_Operation(); break; case NETWORK_STATE.GAMEPLAY_END: break; case NETWORK_STATE.ERROR: break; case NETWORK_STATE.ERROR_WAIT: break; } }