public void Death(PlayerManager playerManager) { playerManager.IsImmobile = true; playerManager.IsInvulnerable = true; SyncPlayerServer.PlayerDied(playerManager.Player.Id); ServerManager.Instance.Server.Dispatcher.InvokeAsync(() => { playerManager.Model.SetActive(false); playerManager.DestroyChaser(); }); // Check if highscore and save it if (_controlSLA.GameMode != GameMode.Practice) { // _score.SetHighScore(); } // TODO: Send info to the players if (_controlSLA.PlayerManagers.Values.Any(player => !player.IsDead)) { return; } _levelManager.EndLevel(1); }
private void Start() { ServerManager.Instance.Server.Dispatcher.InvokeAsync(() => { Text.text = "Gamemode: " + GameMode; }); foreach (var player in ServerManager.Instance.Players.Values) { PlayerManagers[player.Id] = _initializeGame.InitializePlayer(player); } SyncPlayerServer.InitializePlayers(); InitializeLevel(); }
private IEnumerator PrepareLevel() { // Show Highscore and current level SyncGameServer.PrepareLevel(CurrentLevel); yield return(new WaitForSeconds(3)); SyncGameServer.HidePanels(); yield return(new WaitForSeconds(1)); ServerManager.Instance.Server.Dispatcher.InvokeAsync(() => { Text.text = "Level " + CurrentLevel; }); // Spawn Players and Drones var playerStates = new List <PlayerState>(); foreach (var playerManager in PlayerManagers.Values) { playerStates.Add(_initializeGame.SpawnPlayer(playerManager)); } SyncPlayerServer.SpawnPlayers(playerStates); _levelManager.LoadDrones(CurrentLevel); yield return(new WaitForSeconds(1)); // Countdown for (ushort i = 3; i > 0; i--) { SyncGameServer.Countdown(i); yield return(new WaitForSeconds(1)); } SyncGameServer.Countdown(0); _initializeGame.StartLevel(); }