Example #1
0
    void RPC_addListTimeOut(string namePlayer, int actorNumber, float timeSend)
    {
        float         lag       = (float)PhotonNetwork.Time - timeSend;
        GameObject    timOutObj = Instantiate(m_playerTimeoutPrefabs, m_playerTimeOutTransform);
        PlayerTimeOut timeOut   = timOutObj.GetComponent <PlayerTimeOut>();

        timeOut.SetPlayer(namePlayer, actorNumber);
        timeOut.SetPauseTimer(true, lag);
        m_listPlayerTimeOut.Add(timeOut);
        Pause();
    }
Example #2
0
    void RPC_updateListTimeOut(int actorNumber, float timeSend, int length, int[] listActorNumber, string[] listName, float[] listTime)
    {
        if (PhotonNetwork.LocalPlayer.ActorNumber != actorNumber)
        {
            return;
        }
        float lag = (float)PhotonNetwork.Time - timeSend;

        for (int i = 0; i < length; i++)
        {
            GameObject    timOutObj = Instantiate(m_playerTimeoutPrefabs, m_playerTimeOutTransform);
            PlayerTimeOut timeOut   = timOutObj.GetComponent <PlayerTimeOut>();
            timeOut.SetPlayer(listName[i], listActorNumber[i]);
            timeOut.SetPauseTimer(true, lag + listTime[i]);
            m_listPlayerTimeOut.Add(timeOut);
        }
        Pause();
    }
Example #3
0
    void RPC_removeListTimeOut(string namePlayer, int actorNumber, bool isLeft)
    {
        if (isLeft)
        {
            CreateLeaveText(namePlayer);
        }
        else
        {
            CreateJoinText(namePlayer);
        }
        int index = m_listPlayerTimeOut.FindIndex(x => x.m_actorNumber == actorNumber);

        if (index == -1)
        {
            return;
        }
        PlayerTimeOut timeOut = m_listPlayerTimeOut[index];

        m_listPlayerTimeOut.RemoveAt(index);
        GameObject.Destroy(timeOut.gameObject);
    }
Example #4
0
    public override void OnPlayerEnteredRoom(Player newPlayer)
    {
        if (!m_isMaster)
        {
            return;
        }
        m_numPlayerInRoom = PhotonNetwork.PlayerList.Length;
        int index = m_listPlayerTimeOut.FindIndex(x => x.m_actorNumber == newPlayer.ActorNumber);

        if (index != -1)
        {
            m_PV.RPC("RPC_removeListTimeOut", RpcTarget.All,
                     newPlayer.NickName, newPlayer.ActorNumber, false);
            if (m_listPlayerTimeOut.Count <= 0)
            {
                float timeSend    = (float)PhotonNetwork.Time;
                float currentTime = m_timer.m_currentTime;
                m_PV.RPC("PRC_resume", RpcTarget.All, currentTime, timeSend);
                ClearCache();
            }
            else
            {
                float    timeSend  = (float)PhotonNetwork.Time;
                int      length    = m_listPlayerTimeOut.Count;
                int[]    listActor = new int[length];
                string[] listName  = new string[length];
                float[]  listTime  = new float[length];
                for (int i = 0; i < length; i++)
                {
                    PlayerTimeOut timeOut = m_listPlayerTimeOut[i];
                    listActor[i] = timeOut.m_actorNumber;
                    listName[i]  = timeOut.GetName();
                    listTime[i]  = timeOut.GetCurrentTime();
                }
                m_PV.RPC("RPC_updateListTimeOut", RpcTarget.Others,
                         newPlayer.ActorNumber, timeSend, length, listActor, listName, listTime);
            }
        }
    }
Example #5
0
    public void DropPlayer(int actorNumber)
    {
        int index = m_listPlayerTimeOut.FindIndex(x => x.m_actorNumber == actorNumber);

        if (index == -1)
        {
            return;
        }
        PlayerTimeOut timeOut = m_listPlayerTimeOut[index];

        timeOut.m_numDrop++;
        if (timeOut.m_numDrop >= m_numPlayerInRoom - m_listPlayerTimeOut.Count)
        {
            for (int i = 0; i < PhotonNetwork.PlayerList.Length; i++)
            {
                if (PhotonNetwork.PlayerList[i].ActorNumber == actorNumber)
                {
                    DropPlayer(PhotonNetwork.PlayerList[i]);
                    return;
                }
            }
        }
    }