public void OnLeaveMatchButtonClick() { if (_leaveMatchButton != null) { _leaveMatchButton.SetActive(false); } if (_showRoomUsersBtn != null) { _showRoomUsersBtn.SetActive(false); } if (m_hnGameManager == null) { m_hnGameManager = GameObject.FindObjectOfType <HNGameManager>(); } if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { m_hnGameManager.StopSingleGame(); m_hnGameManager.LeaveGameToHall(); return; } int nStatus = SocketDefines.US_NULL; IClientUserItem pMeItem = null; if (CServerItem.get() != null) { pMeItem = CServerItem.get().GetMeUserItem(); } if (pMeItem != null) { nStatus = pMeItem.GetUserStatus(); } if (true)//if (nStatus == SocketDefines.US_LOOKON) { m_hnGameManager.PopLeaveRoomWindow(); } else { //_joinMatchButton.active = true; m_hnGameManager.DismissBtnClicked(); if (GameManager.s_NetWorkClient != null) { GameManager.s_NetWorkClient.LeaveMatchToRoom(); } } HideMatchStartCountDown(); HideWaitToJoinNextMatchLabel(); }
//显示头顶信息 public void ShowPlayerTopHeadInfo(PlayerBase playerBase) { if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { if (GameManager.s_singleGameStatus == SocketDefines.GAME_STATUS_HIDE || GameManager.s_singleGameStatus == SocketDefines.GAME_STATUS_PLAY) { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); if (localHuman != null) { //本地玩家为警察时不显示躲藏者信息 if (localHuman.TeamType == PlayerTeam.PlayerTeamType.TaggerTeam && playerBase.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { playerBase.SetTopInfoVisible(false); return; } goto TopHeadInfo; } return; } else { return; } } else { if (CServerItem.get() == null) { return; } byte Gamestate = CServerItem.get().GetGameStatus(); if (Gamestate == SocketDefines.GAME_STATUS_HIDE || Gamestate == SocketDefines.GAME_STATUS_PLAY) { Human localHuman = GameObjectsManager.GetInstance().GetLocalHuman(); if (localHuman != null) { //本地玩家为警察时不显示躲藏者信息 if (localHuman.TeamType == PlayerTeam.PlayerTeamType.TaggerTeam && playerBase.TeamType == PlayerTeam.PlayerTeamType.HideTeam) { playerBase.SetTopInfoVisible(false); return; } goto TopHeadInfo; } else { IClientUserItem pMeItem = CServerItem.get().GetMeUserItem(); if (pMeItem == null) { return; } int nStatus = pMeItem.GetUserStatus(); if (nStatus == SocketDefines.US_LOOKON) { goto TopHeadInfo; } } } else { return; } } TopHeadInfo: { GameObject InfoPanelObj = playerBase.gameObject.transform.Find("InfoPanel").gameObject; if (InfoPanelObj != null) { TextMesh nameText = InfoPanelObj.transform.Find("Name").GetComponent <TextMesh>(); TextMesh levelText = InfoPanelObj.transform.Find("Level").GetComponent <TextMesh>(); if (playerBase.IsAI) { nameText.text = playerBase.gameObject.name; nameText.color = Color.white; if (levelText.text == "") { levelText.text = "等级:" + UnityEngine.Random.Range(0, 100); } levelText.color = Color.white; } else { var kernel = (GameScene)CServerItem.get().GetClientKernelSink(); string strNN = ""; if (GameManager.s_gameSingleMultiType == GameSingleMultiType.SingleGame) { strNN = GlobalUserInfo.getNickName(); } else if (GameManager.s_gameSingleMultiType == GameSingleMultiType.MultiGame_WangHu) { if (kernel != null) { strNN = kernel.getPlayerByChairID(playerBase.ChairID).GetNickName(); } } if (strNN != "") { String[] str = strNN.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); nameText.text = str[0]; nameText.color = Color.white; if (kernel != null) { tagUserInfo userInfo = (tagUserInfo)kernel.getPlayerByChairID(playerBase.ChairID).GetUserInfo(); levelText.text = "等级:" + (userInfo.lExperience / 100).ToString(); } else { levelText.text = "等级:" + (GlobalUserInfo.getUserExp() / 100).ToString(); } levelText.color = Color.white; } } if (InfoPanelObj != null) { InfoPanelObj.transform.LookAt(Camera.main.transform); } } return; } }
void OnPlayScence(byte[] data, int dataSize) { //旁观者或者重连 var typeValue = typeof(CMD_S_StatusPlay); int localDataSize = Marshal.SizeOf(typeValue); if (dataSize != localDataSize) { Debug.LogError("OnPlayScence:localDataSize=" + localDataSize + ", serverDataSize=" + dataSize); return; } CMD_S_StatusPlay pNetInfo = (CMD_S_StatusPlay)StructConverterByteArray.BytesToStruct(data, typeValue); GlobalUserInfo pGlobalUserInfo = GlobalUserInfo.GetInstance(); tagGlobalUserData pGlobalUserData = pGlobalUserInfo.GetGlobalUserData(); pGlobalUserData.cbMapIndexRand = pNetInfo.cbMapIndex; pGlobalUserData.wRandseed = pNetInfo.wRandseed; pGlobalUserData.wRandseedForRandomGameObject = pNetInfo.wRandseedForRandomGameObject; pGlobalUserData.wRandseedForInventory = pNetInfo.wRandseedForInventory; //道具同步 Array.Copy(pNetInfo.sInventoryList, pGlobalUserData.sInventoryList, pNetInfo.sInventoryList.Length); //Buffer.BlockCopy(pNetInfo.sInventoryList, 0, pGlobalUserData.sInventoryList, 0, pNetInfo.sInventoryList.Length); //旁观者 int nStatus = SocketDefines.US_NULL; IClientUserItem pMeItem = CServerItem.get().GetMeUserItem(); if (pMeItem != null) { nStatus = pMeItem.GetUserStatus(); } if (nStatus == SocketDefines.US_LOOKON) { Loom.QueueOnMainThread(() => { hnManager.LoadHideSeekSceneOfWangHu(); }); } else { //mChen add, temp Loom.QueueOnMainThread(() => { hnManager.LoadHideSeekSceneOfWangHu(); }); if (false)//if (!hnManager.bEnteredGameScene) { //没进入游戏场景 //强杀进程后进来 Debug.LogError("OnPlayScence : 在大厅重连?强杀进程后回来? cbGameStatus=" + pNetInfo.cbGameStatus + " UserStatus=" + nStatus + " bEnteredGameScene=" + hnManager.bEnteredGameScene); //在大厅重连? Loom.QueueOnMainThread(() => { //hnManager.LoadHideSeekSceneOfWangHu(); //hnManager.SetLoading(false); hnManager.StartOrStopGameSceneHeartBeat(false); hnManager.LeaveRoom(); hnManager.LeaveGameToHall(); //CServerItem.get().IntermitConnect(true); }); } } //重连 byte cbGameStatus = pNetInfo.cbGameStatus; Debug.Log("OnPlayScence : cbGameStatus=" + cbGameStatus + " UserStatus=" + nStatus + " bEnteredGameScene=" + hnManager.bEnteredGameScene); //mChen add, for HideSeek: //if (nStatus != SocketDefines.US_LOOKON && !hnManager.bEnteredGameScene) //{ // //在大厅重连? // StartOrStopGameSceneHeartBeat(false); // CServerItem.get().IntermitConnect(true); // hnManager.LeaveRoom(); //} defaultState(); }
//用户事件 //用户进入 public virtual void OnEventUserEnter(IClientUserItem pIClientUserItem, bool bLookonUser) { if (HNGameManager.LockObjOfLoadScene == null) { Debug.LogError("HNGameManager.LockObjOfLoadScene == null"); HNGameManager.LockObjOfLoadScene = new object(); } lock (HNGameManager.LockObjOfLoadScene) { GamePlayer pPlayer = getGamePlayerByUserItem(pIClientUserItem); if (pPlayer != null) { pPlayer.upPlayerInfo(); return; } } if (CServerItem.get() == null) { Debug.LogError("OnEventUserEnter:ServerItem.get() == null"); return; } IClientUserItem pMeItem = CServerItem.get().GetMeUserItem(); if (pMeItem == null) { return; } if (pMeItem.GetTableID() != pIClientUserItem.GetTableID()) { return; } if (pIClientUserItem.GetUserStatus() == SocketDefines.US_LOOKON) { return; } //UI Log string strNickName = GlobalUserInfo.GBToUtf8(pIClientUserItem.GetNickName()); Debug.Log("---------------------OnEventUserEnter:" + strNickName); String[] strName = strNickName.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); if (strName.Length > 0) { Loom.QueueOnMainThread(() => { if (ChatSystem.GetInstance != null) { ChatSystem.GetInstance.ShowChatText("通知", strName[0] + " 加入了房间!"); } }); } if (CServerItem.get().GetMeUserItem() == pIClientUserItem) { Debug.Log("OnEventUserEnter:Local Player Enter"); if (m_pSelfPlayer == null) { Debug.Log("---------------------Disconnect back 2 ?: Try to Create Local Player"); //GameObject LocalTaggerObj = GameObject.Find("Player/TaggerTeam/LocalTagger"); //GameObject.Destroy(LocalTaggerObj); //删除Human //GameObjectsManager.GetInstance().ClearPlayers(false); m_pSelfPlayer = CreatePlayer(pIClientUserItem); Loom.QueueOnMainThread(() => { if (hnManager == null) { hnManager = GameObject.FindObjectOfType <HNGameManager>(); } if (hnManager != null) { if (m_pSelfPlayer != null) { int nChairId = m_pSelfPlayer.GetChairID();//m_pSelfPlayer hnManager.LocalUserEnter(nChairId); } } }); addGamePlayerToList(m_pSelfPlayer); } upSelfPlayerInfo(); int iIdex = 0; while (true) { IClientUserItem pTempUserItem = CServerItem.get().GetTableUserItem((ushort)iIdex); iIdex++; if (pTempUserItem == null) { break; } if (pTempUserItem.GetTableID() != pMeItem.GetTableID()) { continue; } if (pTempUserItem.GetUserStatus() == SocketDefines.US_LOOKON) { continue; } if (m_bEnterGetUserInfo) { m_kIndividualMission.query((int)pIClientUserItem.GetUserID(), false); } if (pTempUserItem == pIClientUserItem) { continue; } GamePlayer pTempPlayer = CreatePlayer(pTempUserItem); addGamePlayerToList(pTempPlayer); } } else { if (m_pSelfPlayer != null || pMeItem.GetUserStatus() == SocketDefines.US_LOOKON) { GamePlayer pTempPlayer = CreatePlayer(pIClientUserItem); addGamePlayerToList(pTempPlayer); } } if (m_bEnterGetUserInfo) { m_kIndividualMission.query((int)pIClientUserItem.GetUserID(), false); } }