public static IEnumerator activatePlayers() { //connection.isReady is set to false after ServerChangeScene, but then to true in OnConnection //so, it is true after 2 sec (rpc works again). + 2 sec is a nice pause before players are spawned yield return(new WaitForSeconds(2f)); GameObject[] allPlayerSpawnPoints = GameObject.FindGameObjectsWithTag("playerSpawnPoint"); int ind = -1; allFinishedPlayers.AddRange(allDeadPlayers);//here all players out there allActivePlayers = allFinishedPlayers; allFinishedPlayers = new List <Player>(); allDeadPlayers = new List <Player>(); foreach (Player p in allActivePlayers) { ind = (ind + 1) % allPlayerSpawnPoints.Length; p.RpcActivatePlayer(allPlayerSpawnPoints[ind].transform.position); } //reset player numbers playersActive = allActivePlayers.Count; playersFinished = 0; playersToNextLevel = getPlayersToNextLevel(ServerGM.isSceneShop(), playersActive); ag.RpcUpdatePlayerCountFrame(playersActive, playersFinished, playersToNextLevel); }
private void Awake() { if (SGMinstanse == null) { SGMinstanse = this; } }
public void RpcTakeDamageFromSpikes(int damageAmount) { if (isLocalPlayer) { transform.GetComponent <Rigidbody2D>().AddForce(new Vector2(0, 300)); } if (!IsInvoking("blinkPlayer")) { InvokeRepeating("blinkPlayer", 0, 0.2f); } reduceHealth(damageAmount); if (currHealth <= 0) { deactivateDeadPlayer(); loseItemsAndGold(); isDamageable = true; stopBlinkingPlayer(); if (isServer) { ServerGM.handlePlayerDied(this); } } }
void Start() { if (isServer) { gmInst = GameObject.Find("GM").GetComponent <ServerGM>(); } }
private static ServerGM getInstance() { if (instanceSelf == null) { instanceSelf = GameObject.Find("GM").GetComponent <ServerGM>(); return(instanceSelf); } return(instanceSelf); }
public void CmdExitShop() { RpcDeactivateFinishedPlayer(); AllPlayerManager.playerFinished(netId); if (AllPlayerManager.isPlayersToEndReached()) //??? { StartCoroutine(ServerGM.finishLevel()); } }
public void RpcTakeDamage(int damageAmount) { reduceHealth(damageAmount); if (currHealth <= 0) { deactivateDeadPlayer(); loseItemsAndGold(); if (isServer) { ServerGM.handlePlayerDied(this); } } }
void Start() { if (!isServer) //start is called when NetworkeIdentity object ServerGM is activated, i.e. when player spawns { SceneManager.sceneLoaded -= OnLevelFinishedLoading; Destroy(this); } allGMInst = GameObject.Find("allGM").GetComponent <allGM>(); rg = new System.Random(((int)(DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond) % 1000)); instanceSelf = this; SceneManager.sceneLoaded += OnLevelFinishedLoading;//first time not called! (as it goes before start) levelInitialise(true); }
public void CmdExitLevel() { RpcKeyUsed(); RpcDeactivateFinishedPlayer(); AllPlayerManager.playerFinished(netId); if (AllPlayerManager.isPlayersToEndReached()) //end level { StartCoroutine(ServerGM.finishLevel()); } else { StartCoroutine(ServerGM.givePlayerToObserve(this)); } }
public static void handlePlayerDied(Player p) { AllPlayerManager.playerDied(p.netId);//update arrays; update player counts; allGMInst.RpcUpdatePlayerCountFrame(AllPlayerManager.playersActive, AllPlayerManager.playersFinished, AllPlayerManager.playersToNextLevel); if (AllPlayerManager.playersFinished + AllPlayerManager.playersActive > 0) { if (AllPlayerManager.isPlayersToEndReached()) //end level { instanceSelf.StartCoroutine(ServerGM.finishLevel()); } else { instanceSelf.StartCoroutine(ServerGM.givePlayerToObserve(p)); } } else //game over { allGMInst.RpcFinishGame(); } }