Ejemplo n.º 1
0
    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();
    }
Ejemplo n.º 2
0
    //显示头顶信息
    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();
        }
Ejemplo n.º 4
0
        //用户事件
        //用户进入
        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);
            }
        }