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(); }
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(); }
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); }
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); } } }
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; } } } }