// Start is called before the first frame update void Start() { mpReceivePlayer = Class_NetworkClient.GetInst().mUserInfoes.Find(u => u.mUserName != Class_NetworkClient.GetInst().mMyUserInfo.mUserName); mpPlayerName.text = mpReceivePlayer.mUserName; MaxHp = mpReceivePlayer.mHP; }
// Start is called before the first frame update void Start() { tFirstUser = Class_NetworkClient.GetInst().mUserInfoes.Find(f => f.mClearCount > 0); mpFirstUserInfoTxt.text = "1위 : <color='red'>" + tFirstUser.mUserName + "</color>\n직업 : <color='red'>" + tFirstUser.mOccupation + "</color>\n클리어 횟수 : <color='red'>" + tFirstUser.mClearCount + "</color>"; StartCoroutine("UpdateFromNetwork"); }
IEnumerator UpdateFromNetwork() { while (true) { byte[] tBuffer = new byte[1024]; int tRecvSize = Class_NetworkClient.GetInst().GetFromQueue(ref tBuffer, tBuffer.Length); if (tRecvSize > 0) { PROTOCOL tProtocolID = 0; tProtocolID = (PROTOCOL)tBuffer[0]; switch (tProtocolID) { case PROTOCOL.ACK_CREATE_ROOM: { Debug.Log("ACK_CREATE_ROOM"); int tRoomId = tBuffer[1]; int tMasterIdLength = tBuffer[2]; int tOffset = 3; string tMasterId = Encoding.UTF8.GetString(tBuffer, tOffset, tMasterIdLength); int tRoomNameLength = tBuffer[tMasterIdLength + tOffset]; tOffset = tOffset + tMasterIdLength + 1; string tRoomName = Encoding.UTF8.GetString(tBuffer, tOffset, tRoomNameLength); Class_NetworkClient.GetInst().mRoomId = tRoomId; Class_NetworkClient.GetInst().mRoomMaster = tMasterId; Class_NetworkClient.GetInst().mRoomName = tRoomName; Debug.Log("mRoomMaster : " + Class_NetworkClient.GetInst().mRoomMaster); Debug.Log("mRoomName : " + Class_NetworkClient.GetInst().mRoomName); SceneManager.LoadScene("RoomScene"); SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive); } break; case PROTOCOL.ACK_JOIN_ROOM: { Debug.Log("ACK_JOIN_ROOM"); int tRoomId = tBuffer[1]; int tUserCount = tBuffer[2]; int tMasterIdLength = tBuffer[3]; int tOffset = 4; string tMasterId = Encoding.UTF8.GetString(tBuffer, tOffset, tMasterIdLength); tOffset = tOffset + tMasterIdLength; int tRoomNameLength = tBuffer[tOffset]; tOffset += 1; string tRoomName = Encoding.UTF8.GetString(tBuffer, tOffset, tRoomNameLength); Debug.Log("방장 Name : " + tMasterId); Debug.Log("방 Name : " + tRoomName); //===== int tInitPos = tOffset + tRoomNameLength; tOffset = tInitPos; for (int ti = 0; ti < tUserCount; ti++) { int tLength = (int)tBuffer[tOffset]; tOffset = tOffset + 1; string tUserName = Encoding.UTF8.GetString(tBuffer, tOffset, tLength); tOffset = tOffset + tLength; Debug.Log("UserName_" + ti + " : " + tUserName); if (tUserName != Class_NetworkClient.GetInst().mMyUserInfo.mUserName) { Class_Singleton_User tUser = new Class_Singleton_User(); tUser.mUserName = tUserName; Class_NetworkClient.GetInst().mUserInfoes.Add(tUser); } } //===== Class_NetworkClient.GetInst().mRoomId = tRoomId; Class_NetworkClient.GetInst().mRoomMaster = tMasterId; Class_NetworkClient.GetInst().mRoomName = tRoomName; SceneManager.LoadScene("RoomScene"); SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive); } break; case PROTOCOL.ACK_JOIN_ROOM_FAIL: { Debug.Log("Join Room Fail.."); mpTxt.gameObject.SetActive(true); mpTxt.text = "<color='green'>방 입장에 실패했어요 ..ㅠㅠ</color>"; } break; case PROTOCOL.ACK_QUIT_GAME: { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } break; } } yield return(new WaitForSeconds(0.05f)); } }
IEnumerator UpdateFromNetwork() { while (true) { byte[] tBuffer = new byte[1024]; int tRecvSize = Class_NetworkClient.GetInst().GetFromQueue(ref tBuffer, tBuffer.Length); if (tRecvSize > 0) { PROTOCOL tProtocolID = 0; tProtocolID = (PROTOCOL)tBuffer[0]; switch (tProtocolID) { case PROTOCOL.ACK_START_GAME: { Debug.Log("ACK_START_GAME"); int tUserKey = tBuffer[1]; //방장 차례 if (tUserKey == Class_NetworkClient.GetInst().mMyUserInfo.mUserKey) { Class_NetworkClient.GetInst().CleanTurn(); Class_NetworkClient.GetInst().mMyUserInfo.mMyTurn = true; } else { Class_NetworkClient.GetInst().CleanTurn(); } } break; case PROTOCOL.ACK_TURN_OVER: { Debug.Log("ACK_TURN_OVER"); int tUserKey = tBuffer[1]; if (tUserKey == Class_NetworkClient.GetInst().mMyUserInfo.mUserKey) { Class_NetworkClient.GetInst().CleanTurn(); } else { Class_NetworkClient.GetInst().CleanTurn(); Class_NetworkClient.GetInst().mMyUserInfo.mMyTurn = true; switch (mStage) { case STAGE.Stage_1: if (Class_NetworkClient.GetInst().mRoomMaster != Class_NetworkClient.GetInst().mMyUserInfo.mUserName) { if (mpItemSpawn.mSpawn == false) { mpItemSpawn.StartSpawnItem(true); } } break; case STAGE.Stage_2: { if (mpEnemySpawn.mSpawn == false) { mpEnemySpawn.SpawnEnemy(); } } break; case STAGE.Stage_3: { if (mpMazeSpawn.mSpawn == false) { mpMazeSpawn.SpawnMaze(); } } break; } } } break; case PROTOCOL.ACK_GAME_CLEAR: { Debug.Log("ACK_GAME_CLEAR"); //서버에서 받은 데이터 입력 Class_Singleton_User tFirstUser = new Class_Singleton_User(); tFirstUser.mClearCount = tBuffer[1]; int tHPLength = tBuffer[2]; int tOffset = 3; tFirstUser.mHP = BitConverter.ToInt32(tBuffer, tOffset); tOffset += sizeof(int); int tAPLength = tBuffer[tOffset]; tOffset += 1; tFirstUser.mAP = BitConverter.ToInt32(tBuffer, tOffset); tOffset += sizeof(int); int tNameLength = tBuffer[tOffset]; tOffset += 1; tFirstUser.mUserName = Encoding.UTF8.GetString(tBuffer, tOffset, tNameLength); tOffset += tNameLength; int tOccupationLength = tBuffer[tOffset]; tOffset += 1; tFirstUser.mOccupation = Encoding.UTF8.GetString(tBuffer, tOffset, tOccupationLength); Class_NetworkClient.GetInst().mUserInfoes.Add(tFirstUser); //서버에서 받은 데이터 입력 SceneManager.LoadScene("ClearScene"); SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive); } break; case PROTOCOL.ACK_GAME_FAIL: { Debug.Log("ACK_GAME_FAIL"); SceneManager.LoadScene("FailScene"); SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive); } break; case PROTOCOL.ACK_QUIT_GAME: { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } break; } } yield return(new WaitForSeconds(0.05f)); } }
IEnumerator UpdateFromNetwork() { while (true) { byte[] tBuffer = new byte[1024]; int tRecvSize = Class_NetworkClient.GetInst().GetFromQueue(ref tBuffer, tBuffer.Length); if (tRecvSize > 0) { PROTOCOL tProtocolID = 0; tProtocolID = (PROTOCOL)tBuffer[0]; switch (tProtocolID) { case PROTOCOL.ACK_JOIN_ROOM: { Debug.Log("ACK_JOIN_ROOM"); int tUserCount = tBuffer[2]; int tMasterIdLength = tBuffer[3]; int tOffset = 4; tOffset += tMasterIdLength; int tRoomNameLength = tBuffer[tOffset]; tOffset += 1; //===== int tInitPos = tOffset + tRoomNameLength; tOffset = tInitPos; for (int ti = 0; ti < tUserCount; ti++) { int tLength = (int)tBuffer[tOffset]; tOffset = tOffset + 1; string tUserName = Encoding.UTF8.GetString(tBuffer, tOffset, tLength); tOffset = tOffset + tLength; Debug.Log("UserName_" + ti + " : " + tUserName); if (tUserName != Class_NetworkClient.GetInst().mMyUserInfo.mUserName) { Class_Singleton_User tUser = new Class_Singleton_User(); tUser.mUserName = tUserName; Class_NetworkClient.GetInst().mUserInfoes.Add(tUser); } mGuestImg.gameObject.SetActive(true); } } break; case PROTOCOL.ACK_READY: { Debug.Log("ACK_READY"); } break; case PROTOCOL.ACK_ALL_READY: { mBeginPlayBtn.gameObject.SetActive(true); Debug.Log("ACK_ALL_READY"); } break; case PROTOCOL.ACK_BEGIN_PLAY: { Debug.Log("ACK_BEGIN_PLAY"); //송신받은 게스트/방장의 정보를 상대유저정보에 입력 foreach (var o in Class_NetworkClient.GetInst().mUserInfoes) { if (o.mUserName != Class_NetworkClient.GetInst().mMyUserInfo.mUserName) { o.mUserKey = tBuffer[1]; int tHPLength = tBuffer[2]; int tOffset = 3; o.mHP = BitConverter.ToInt32(tBuffer, tOffset); tOffset += sizeof(int); int tAPLength = tBuffer[tOffset]; tOffset += 1; o.mAP = BitConverter.ToInt32(tBuffer, tOffset); tOffset += sizeof(int); int tOccupationLength = tBuffer[tOffset]; tOffset += 1; o.mOccupation = Encoding.UTF8.GetString(tBuffer, tOffset, tOccupationLength); } } SceneManager.LoadScene("MapScene"); SceneManager.LoadScene("AllPlayScene", LoadSceneMode.Additive); } break; case PROTOCOL.ACK_QUIT_GAME: { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } break; } } yield return(new WaitForSeconds(0.05f)); } }