void OnNewPlayer(ref MyEventNewPlayer msg) { Log("OnNewPlayer"); if (NewPlayer != null) { NewPlayer(); } if (IsHost) { SendCheckpoint(msg.SenderConnection); var playerLeftMsg = new MyEventPlayerStateChanged(); playerLeftMsg.UserId = msg.PlayerInfo.UserId; playerLeftMsg.NewState = MyMultiplayerStateEnum.Playing; Peers.SendServer(ref playerLeftMsg); UpdateMission(); } else { var player = new MyPlayerRemote(new StringBuilder(msg.PlayerInfo.DisplayName), msg.PlayerInfo.UserId, msg.PlayerInfo.PlayerId); player.Connection = msg.SenderConnection; player.Connection.Tag = player; Peers.Players.Add(player); Notify(MyTextsWrapperEnum.MP_XHasJoined, msg.PlayerInfo.DisplayName); } LogPlayers(); }
private void AnnounceGame() { if (!Peers.IsConnectedToServer) { try { Peers.NetworkClient.RemoveCallback <MyEventLoginResponse>(); Peers.NetworkClient.RemoveCallback <MyEventCreateGameResponse>(); LastCreateGameRequest.JoinMode = JoinMode; LastCreateGameRequest.SectorName = MyGuiScreenGamePlay.Static.GetGameName(GameType, MyGameplayConstants.GetGameplayDifficulty()); Peers.SendServer(ref LastCreateGameRequest); } catch { } } }
void Peers_PlayerDisconnected(MyPlayerRemote player) { if (player.UserId == Peers.HostUserId) { // TODO: Connection to host lost, shutdown var handler = OnShutdown; if (handler != null) { handler(); } } else { // Close all entities of disconnected player foreach (var e in MyEntities.GetEntities()) { if (e.EntityId.HasValue && e.EntityId.Value.PlayerId == player.PlayerId) { e.MarkForClose(); } } } if (player.Ship != null) { player.Ship.MarkForClose(); player.Ship = null; } if (IsHost) { ClearLocks(player.PlayerId); var playerLeftMsg = new MyEventPlayerStateChanged(); playerLeftMsg.UserId = player.UserId; playerLeftMsg.NewState = MyMultiplayerStateEnum.Disconnected; Peers.SendServer(ref playerLeftMsg); } Notify(MyTextsWrapperEnum.MP_XHasLeft, player.GetDisplayName()); }
public void UpdateGameInfo() { MyEventUpdateGame msg = new MyEventUpdateGame(); msg.Name = MyGuiScreenGamePlay.Static.GetGameName(GameType, MyGameplayConstants.GetGameplayDifficulty()); msg.Password = null; msg.JoinMode = JoinMode; //if (JoinMode == MyJoinMode.Open) //{ // MyEventCreateGame createGameRequest = new MyEventCreateGame(); // createGameRequest.SectorName = msg.Name; // createGameRequest.Password = String.Empty; // createGameRequest.Type = GameType; // createGameRequest.JoinMode = JoinMode; // createGameRequest.Difficulty = MyGameplayConstants.GetGameplayDifficulty(); // Peers.SendServer(ref createGameRequest); //} Peers.SendServer(ref msg); }