/// <summary> /// Player is allowed to join game, controllable actor should be created /// </summary> private void OnPacketCreateControllablePlayer(ref CreateControllablePlayer p) { // ToDo: throw on mismatch? localPlayerIndex = p.Index; PlayerType type = p.Type; Vector3 pos = p.Pos; byte health = p.Health; bool controllable = p.Controllable; Await.NextAfterUpdate().OnCompleted(() => { if (players.Count > 0) { Player oldPlayer = players[0]; if (oldPlayer.PlayerType == type) { oldPlayer.Respawn(pos.Xy); oldPlayer.Health = health; return; } RemoveActor(oldPlayer); Players.Remove(oldPlayer); } Player player = new Player(); player.OnActivated(new ActorActivationDetails { LevelHandler = this, Pos = pos, Params = new[] { (ushort)type, (ushort)0 } }); player.Health = health; AddPlayer(player); cameras[0].Transform.Pos = new Vector3(pos.Xy, 0); cameras[0].GetComponent <CameraController>().TargetObject = player; Hud hud = rootObject.AddComponent <Hud>(); hud.LevelHandler = this; player.AttachToHud(hud); //player.ReceiveLevelCarryOver(data.ExitType, ref data.PlayerCarryOvers[i]); // Wait for server to start game player.IsControllableExternal = controllable; }); }
private void OnCreateControllablePlayer(ref CreateControllablePlayer p) { // ToDo: throw on mismatch? localPlayerIndex = p.Index; PlayerType type = p.Type; Vector3 pos = p.Pos; byte health = p.Health; Root.DispatchToMainThread(delegate { if (players.Count > 0) { Player oldPlayer = players[0]; if (oldPlayer.PlayerType == type) { oldPlayer.Respawn(pos.Xy); oldPlayer.Health = health; return; } RemoveActor(oldPlayer); Players.Remove(oldPlayer); } Player player = new Player(); player.OnActivated(new ActorActivationDetails { Api = Api, Pos = pos, Params = new[] { (ushort)type, (ushort)0 } }); player.Health = health; AddPlayer(player); cameras[0].Transform.Pos = new Vector3(pos.Xy, 0); cameras[0].GetComponent <CameraController>().TargetObject = player; player.AttachToHud(rootObject.AddComponent <Hud>()); //player.ReceiveLevelCarryOver(data.ExitType, ref data.PlayerCarryOvers[i]); }); }