private void ProcessMatchInGameAccess(MatchInGameSessionEventArgs args) { if (isReconnectProcess) { Debug.Log("재접속 프로세스 진행중 "); return; } Debug.Log(string.Format("성공", args.ErrInfo)); if (args.ErrInfo != ErrorCode.Success) { var errorLog = string.Format("접속실패", args.ErrInfo, args.Reason); Debug.Log(errorLog); LeaveInGameRoom(); return; } var record = args.GameRecord; Debug.Log(string.Format(string.Format("인게임 접속 유저 정보 [{0}] : {1} ", args.GameRecord, args.GameRecord.m_nickname))); if (!sessionIdList.Contains(args.GameRecord.m_sessionId)) { sessionIdList.Add(record.m_sessionId); gameRecords.Add(record.m_sessionId, record); Debug.Log(string.Format("인게임내 세션 갯수" + sessionIdList.Count)); } }
private void ProcessAIDate(Protocol.AIPlayerInfo aIPlayerInfo) { MatchInGameSessionEventArgs args = new MatchInGameSessionEventArgs(); args.GameRecord = aIPlayerInfo.GetMatchRecord(); ProcessMatchInGameAccess(args); }
// 클라이언트 들의 게임 룸 접속에 대한 리턴값 // 클라이언트가 게임 룸에 접속할 때마다 호출됨 // 재접속 했을 때는 수신되지 않음 private void ProcessMatchInGameAccess(MatchInGameSessionEventArgs args) { if (isReconnectProcess) { // 재접속 프로세스 인 경우 // 이 메시지는 수신되지 않고, 만약 수신되어도 무시함 Debug.Log("재접속 프로세스 진행중... 재접속 프로세스에서는 ProcessMatchInGameAccess 메시지는 수신되지 않습니다.\n" + args.ErrInfo); return; } Debug.Log(string.Format(SUCCESS_ACCESS_INGAME, args.ErrInfo)); if (args.ErrInfo != ErrorCode.Success) { // 게임 룸 접속 실패 var errorLog = string.Format(FAIL_ACCESS_INGAME, args.ErrInfo, args.Reason); Debug.Log(errorLog); LeaveInGameRoom(); return; } // 게임 룸 접속 성공 // 인자값에 방금 접속한 클라이언트(세션)의 세션ID와 매칭 기록이 들어있다. // 세션 정보는 누적되어 들어있기 때문에 이미 저장한 세션이면 건너뛴다. var record = args.GameRecord; Debug.Log(string.Format(string.Format("인게임 접속 유저 정보 [{0}] : {1}", args.GameRecord.m_sessionId, args.GameRecord.m_nickname))); if (!sessionIdList.Contains(args.GameRecord.m_sessionId)) { // 세션 정보, 게임 기록 등을 저장 sessionIdList.Add(record.m_sessionId); gameRecords.Add(record.m_sessionId, record); Debug.Log(string.Format(NUM_INGAME_SESSION, sessionIdList.Count)); } }