public static MyMultiplayerHostResult HostLobby(LobbyTypeEnum lobbyType, int maxPlayers, MySyncLayer syncLayer) { System.Diagnostics.Debug.Assert(syncLayer != null); MyTrace.Send(TraceWindow.Multiplayer, "Host game"); MyMultiplayerHostResult ret = new MyMultiplayerHostResult(); #if !XB1 SteamSDK.Lobby.Create(lobbyType, maxPlayers, (lobby, result) => { if (!ret.Cancelled) { if (result == Result.OK && lobby.GetOwner() != Sync.MyId) { result = Result.Fail; lobby.Leave(); } MyTrace.Send(TraceWindow.Multiplayer, "Lobby created"); lobby.SetLobbyType(lobbyType); ret.RaiseDone(result, result == Result.OK ? MyMultiplayer.Static = new MyMultiplayerLobby(lobby, syncLayer) : null); } }); #endif return(ret); }
public static MyMultiplayerJoinResult JoinLobby(ulong lobbyId) { MyTrace.Send(TraceWindow.Multiplayer, "Join game"); MyMultiplayerJoinResult ret = new MyMultiplayerJoinResult(); #if !XB1 Lobby.Join(lobbyId, (info, result) => { if (!ret.Cancelled) { if (result == Result.OK && info.EnterState == LobbyEnterResponseEnum.Success && info.Lobby.GetOwner() == Sync.MyId) { // Joining lobby as server is dead-end, nobody has world. It's considered doesn't exists info.EnterState = LobbyEnterResponseEnum.DoesntExist; info.Lobby.Leave(); } MyTrace.Send(TraceWindow.Multiplayer, "Lobby joined"); bool success = result == Result.OK && info.EnterState == LobbyEnterResponseEnum.Success; ret.RaiseJoined(result, info, success ? MyMultiplayer.Static = new MyMultiplayerLobbyClient(info.Lobby, new MySyncLayer(new MyTransportLayer(MyMultiplayer.GameEventChannel))) : null); } }); #endif return(ret); }
public static MyMultiplayerHostResult HostLobby(MyLobbyType lobbyType, int maxPlayers, MySyncLayer syncLayer) { MyMultiplayerHostResult ret = new MyMultiplayerHostResult(); MyGameService.CreateLobby(lobbyType, (uint)maxPlayers, delegate(IMyLobby lobby, bool succes, string msg) { if (!ret.Cancelled) { if (succes && (lobby.OwnerId != Sync.MyId)) { succes = false; lobby.Leave(); } lobby.LobbyType = lobbyType; MyMultiplayerBase multiplayer = null; if (succes) { MyMultiplayerLobby lobby1 = new MyMultiplayerLobby(lobby, syncLayer); Static = lobby1; multiplayer = lobby1; multiplayer.ExperimentalMode = true; } ret.RaiseDone(succes, msg, multiplayer); } }); return(ret); }
public MyDownloadWorldResult(int channel, ulong sender, MyMultiplayerBase mp) { m_mp = mp; m_sender = sender; m_channel = channel; MyNetworkReader.SetHandler(m_channel, MyDownloadWorldResult_Received); SteamSDK.Peer2Peer.ConnectionFailed += Peer2Peer_ConnectionFailed; }
public MyDownloadProfilerResult(int channel, ulong sender, MyMultiplayerBase mp) { m_mp = mp; m_sender = sender; m_channel = channel; m_receiveMsg = new MyMultipartMessage(channel); MyNetworkReader.SetHandler(m_channel, MyDownloadProfilerResult_Received, mp.DisconnectClient); }
public MyMultiplayerBattleData(MyMultiplayerBase multiplayer) { m_multiplayer = multiplayer; if (Sync.IsServer == false) { multiplayer.SyncLayer.TransportLayer.Register(MyMessageId.WORLD_BATTLE_DATA, OnValueChanged); } }
public MyDownloadWorldResult(int channel, ulong sender, MyMultiplayerBase mp) { m_mp = mp; m_sender = sender; m_channel = channel; m_receiveMsg = new MyMultipartMessage(channel); MyNetworkReader.SetHandler(m_channel, MyDownloadWorldResult_Received, mp.DisconnectClient); SteamSDK.Peer2Peer.ConnectionFailed += Peer2Peer_ConnectionFailed; }
public void RaiseDone(Result result, MyMultiplayerBase multiplayer) { Debug.Assert(!Cancelled, "Action is canceled, it should not raise event"); var handler = Done; if (handler != null) { handler(result, multiplayer); } }
public void RaiseJoined(Result result, LobbyEnterInfo info, MyMultiplayerBase multiplayer) { Debug.Assert(!Cancelled, "Cancelled action should not raise events"); var handler = JoinDone; if (handler != null) { handler(result, info, multiplayer); } }
public void RaiseDone(bool success, string msg, MyMultiplayerBase multiplayer) { Action <bool, string, MyMultiplayerBase> done = this.Done; if (done != null) { done(success, msg, multiplayer); } this.m_done = true; }
public MyMultiplayerBattleData(MyMultiplayerBase multiplayer) { m_multiplayer = multiplayer; m_multiplayer.RegisterControlMessage <KeyValueDataMsg>(MyControlMessageEnum.BattleKeyValue, OnKeyValueChanged); }
public MyMultiplayerBattleData(MyMultiplayerBase multiplayer) { m_multiplayer = multiplayer; m_multiplayer.RegisterControlMessage <KeyValueDataMsg>(MyControlMessageEnum.BattleKeyValue, OnKeyValueChanged, MyMessagePermissions.FromServer); }
public void RaiseJoined(bool success, IMyLobby lobby, MyLobbyEnterResponseEnum response, MyMultiplayerBase multiplayer) { Action <bool, IMyLobby, MyLobbyEnterResponseEnum, MyMultiplayerBase> joinDone = this.JoinDone; if (joinDone != null) { joinDone(success, lobby, response, multiplayer); } }