本文整理汇总了C#中MyMultiplayerBase.GetOwner方法的典型用法代码示例。如果您正苦于以下问题:C# MyMultiplayerBase.GetOwner方法的具体用法?C# MyMultiplayerBase.GetOwner怎么用?C# MyMultiplayerBase.GetOwner使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MyMultiplayerBase
的用法示例。
在下文中一共展示了MyMultiplayerBase.GetOwner方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnJoinScenario
public static void OnJoinScenario(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer)
{
MyLog.Default.WriteLine(String.Format("Lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState));
if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && multiplayer.GetOwner() != Sync.MyId)
{
// Create session with empty world
if (MySession.Static != null)
{
MySession.Static.Unload();
MySession.Static = null;
}
MySession.CreateWithEmptyWorld(multiplayer);
progress.CloseScreen();
MyScreenManager.CloseAllScreensNowExcept(null);
MyLog.Default.WriteLine("Scenario lobby joined");
if (MyPerGameSettings.GUI.ScenarioLobbyClientScreen != null)
MyGuiSandbox.AddScreen(MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.ScenarioLobbyClientScreen));
else
Debug.Fail("No scenario lobby client screen");
}
else
{
string status = "ServerHasLeft";
if (joinResult != Result.OK)
{
status = joinResult.ToString();
}
else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success)
{
status = enterInfo.EnterState.ToString();
}
OnJoinBattleFailed(progress, multiplayer, status);
}
}
示例2: OnJoinBattle
public static void OnJoinBattle(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer)
{
MyLog.Default.WriteLine(String.Format("Battle lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState));
bool battleCanBeJoined = multiplayer != null && multiplayer.BattleCanBeJoined;
if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && battleCanBeJoined && multiplayer.GetOwner() != Sync.MyId)
{
// Create session with empty world
Debug.Assert(MySession.Static == null);
MySession.CreateWithEmptyWorld(multiplayer);
MySession.Static.Settings.Battle = true;
progress.CloseScreen();
MyLog.Default.WriteLine("Battle lobby joined");
if (MyPerGameSettings.GUI.BattleLobbyClientScreen != null)
MyGuiSandbox.AddScreen(MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.BattleLobbyClientScreen));
else
Debug.Fail("No battle lobby client screen");
}
else
{
bool statusFullMessage = true;
string status = MyTexts.GetString(MyCommonTexts.MultiplayerErrorServerHasLeft);
if (joinResult != Result.OK)
{
status = joinResult.ToString();
statusFullMessage = false;
}
else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success)
{
status = enterInfo.EnterState.ToString();
statusFullMessage = false;
}
else if (!battleCanBeJoined)
{
if (MyFakes.ENABLE_JOIN_STARTED_BATTLE)
{
status = status = MyTexts.GetString(MyCommonTexts.MultiplayerErrorSessionEnded);
statusFullMessage = true;
}
else
{
status = "GameStarted";
statusFullMessage = false;
}
}
MyLog.Default.WriteLine("Battle join failed: " + status);
OnJoinBattleFailed(progress, multiplayer, status, statusFullMessage: statusFullMessage);
}
}
示例3: OnJoin
public static void OnJoin(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer)
{
// HACK: To hide multiplayer from ME
//if (!MySandboxGame.Services.SteamService.IsActive || MySandboxGame.Services.SteamService.AppId * 2 == 667900)
// return;
MyLog.Default.WriteLine(String.Format("Lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState));
if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && multiplayer.GetOwner() != Sync.MyId)
{
DownloadWorld(progress, multiplayer);
}
else
{
string status = "ServerHasLeft";
if (joinResult != Result.OK)
{
status = joinResult.ToString();
}
else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success)
{
status = enterInfo.EnterState.ToString();
}
OnJoinFailed(progress, multiplayer, status);
}
}
示例4: DownloadWorld
private static void DownloadWorld(MyGuiScreenProgress progress, MyMultiplayerBase multiplayer)
{
if (progress.Text != null)
{
progress.Text.Clear();
progress.Text.Append(MyTexts.Get(MyCommonTexts.MultiplayerStateConnectingToServer));
}
MyLog.Default.WriteLine("World requested");
const float worldRequestTimeout = 40; // in seconds
Stopwatch worldRequestTime = Stopwatch.StartNew();
ulong serverId = multiplayer.GetOwner();
bool connected = false;
progress.Tick += () =>
{
P2PSessionState state = default(P2PSessionState);
Peer2Peer.GetSessionState(multiplayer.ServerId, ref state);
if (!connected && state.ConnectionActive)
{
MyLog.Default.WriteLine("World requested - connection alive");
connected = true;
if (progress.Text != null)
{
progress.Text.Clear();
progress.Text.Append(MyTexts.Get(MyCommonTexts.MultiplayerStateWaitingForServer));
}
}
//progress.Text.Clear();
//progress.Text.AppendLine("Connecting: " + state.Connecting);
//progress.Text.AppendLine("ConnectionActive: " + state.ConnectionActive);
//progress.Text.AppendLine("Relayed: " + state.UsingRelay);
//progress.Text.AppendLine("Bytes queued: " + state.BytesQueuedForSend);
//progress.Text.AppendLine("Packets queued: " + state.PacketsQueuedForSend);
//progress.Text.AppendLine("Last session error: " + state.LastSessionError);
//progress.Text.AppendLine("Original server: " + serverId);
//progress.Text.AppendLine("Current server: " + multiplayer.Lobby.GetOwner());
//progress.Text.AppendLine("Game version: " + multiplayer.AppVersion);
if (serverId != multiplayer.GetOwner())
{
MyLog.Default.WriteLine("World requested - failed, server changed");
progress.Cancel();
MyGuiSandbox.Show(MyCommonTexts.MultiplayerErrorServerHasLeft);
multiplayer.Dispose();
}
if (worldRequestTime.IsRunning && worldRequestTime.Elapsed.TotalSeconds > worldRequestTimeout)
{
MyLog.Default.WriteLine("World requested - failed, server changed");
progress.Cancel();
MyGuiSandbox.Show(MyCommonTexts.MultiplaterJoin_ServerIsNotResponding);
multiplayer.Dispose();
}
};
var downloadResult = multiplayer.DownloadWorld();
downloadResult.ProgressChanged += (result) =>
{
worldRequestTime.Stop();
OnDownloadProgressChanged(progress, result, multiplayer);
};
progress.ProgressCancelled += () =>
{
downloadResult.Cancel();
multiplayer.Dispose();
//var joinScreen = MyScreenManager.GetScreenWithFocus() as MyGuiScreenJoinGame;
//if (joinScreen != null)
// joinScreen.ReloadList();
};
}
示例5: OnJoinBattle
public static void OnJoinBattle(MyGuiScreenProgress progress, Result joinResult, LobbyEnterInfo enterInfo, MyMultiplayerBase multiplayer)
{
MyLog.Default.WriteLine(String.Format("Battle lobby join response: {0}, enter state: {1}", joinResult.ToString(), enterInfo.EnterState));
bool battleCanBeJoined = multiplayer != null && multiplayer.BattleCanBeJoined;
if (joinResult == Result.OK && enterInfo.EnterState == LobbyEnterResponseEnum.Success && battleCanBeJoined && multiplayer.GetOwner() != MySteam.UserId)
{
// Create session with empty world
Debug.Assert(MySession.Static == null);
MySession.CreateWithEmptyWorld(multiplayer);
MySession.Static.Settings.Battle = true;
progress.CloseScreen();
MyLog.Default.WriteLine("Battle lobby joined");
if (MyPerGameSettings.GUI.BattleLobbyClientScreen != null)
MyGuiSandbox.AddScreen(MyGuiSandbox.CreateScreen(MyPerGameSettings.GUI.BattleLobbyClientScreen));
else
Debug.Fail("No battle lobby client screen");
}
else
{
string status = "ServerHasLeft";
if (joinResult != Result.OK)
{
status = joinResult.ToString();
}
else if (enterInfo.EnterState != LobbyEnterResponseEnum.Success)
{
status = enterInfo.EnterState.ToString();
}
else if (!battleCanBeJoined)
{
status = "Started battle cannot be joined";
}
OnJoinBattleFailed(progress, multiplayer, status);
}
}