public MyGameExtendedInfo(MyGameInfo gameInfo) { GameInfo = gameInfo; Ping = MyMwcUtils.GetRandomInt(10, 20); SectorType = MySectorType.Official; GameType = gameInfo.GameType; }
public void HostGame(string sectorName, string password, MyGameTypes gameType, GameCreatedHandler onGameCreated, MyJoinMode joinMode, MyGameplayDifficultyEnum difficulty) { Debug.Assert(!MyMultiplayerGameplay.IsRunning); MyMultiplayerPeers.Static.Restart(); m_introductionTimer.Dispose(); m_hostTimer.Dispose(); m_createGameAction = onGameCreated; MyEventCreateGame createGameRequest = new MyEventCreateGame(); createGameRequest.SectorName = sectorName; createGameRequest.Password = password; createGameRequest.Type = gameType; createGameRequest.JoinMode = joinMode; createGameRequest.Difficulty = difficulty; MyMultiplayerGameplay.Static.JoinMode = joinMode; SetCallback <MyEventCreateGameResponse>(OnCreateGameResponse); MyMultiplayerPeers.Static.NetworkClient.RegisterCallback <MyEventLoginResponse>(OnLoginResponse); m_hostTimer = new Timer(); m_hostTimer.AutoReset = false; m_hostTimer.Elapsed += new ElapsedEventHandler(m_hostTimer_Elapsed); m_hostTimer.Interval = 10000; m_hostTimer.Start(); MyMultiplayerGameplay.Static.LastCreateGameRequest = createGameRequest; MyMultiplayerPeers.Static.SendServer(ref createGameRequest); }
private MyGuiScreenLoading JoinMultiplayerSession(MyGameTypes gameType, MyMwcObjectBuilder_Checkpoint checkpoint) { MyMultiplayerGameplay.Static.IsHost = false; //var checkpoint = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Checkpoint, null) as MyMwcObjectBuilder_Checkpoint; // This is just dummy ship for load //var ship = MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, MySession.Static.Player.Faction); MySession.Static.Player.Faction = checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction; MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static); MyGuiScreenGamePlayType? gameplayType = null; MyMwcStartSessionRequestTypeEnum?sessionType = null; switch (gameType) { case MyGameTypes.Story: gameplayType = MyGuiScreenGamePlayType.GAME_STORY; sessionType = MyMwcStartSessionRequestTypeEnum.JOIN_FRIEND_STORY; break; case MyGameTypes.Deathmatch: gameplayType = MyGuiScreenGamePlayType.GAME_SANDBOX; sessionType = MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS; break; default: break; } return(MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, sessionType, gameplayType)); }
public static MyGuiScreenLoading StartJoinMultiplayerSession(MyGameTypes gameType, MyGameplayDifficultyEnum difficulty, MyMwcObjectBuilder_Checkpoint checkpoint) { // Temporary MySession.Static = new MySinglePlayerSession(difficulty); MySession.Static.Init(); return(MySession.Static.JoinMultiplayerSession(gameType, checkpoint)); }
public void CheckChanged(MyGuiControlCheckbox sender) { m_gameTypeFilter &= ~MyGameTypes.Deathmatch; m_gameTypeFilter &= ~MyGameTypes.Story; if (m_deathCheck.Checked) { m_gameTypeFilter |= MyGameTypes.Deathmatch; } if (m_storyCheck.Checked) { m_gameTypeFilter |= MyGameTypes.Story; } GetDataFromServer(true); }
public string GetGameName(MyGameTypes gameType, MyGameplayDifficultyEnum difficulty) { if (gameType == MyGameTypes.Story) { if (MyMissions.ActiveMission != null) { return MyTextsWrapper.Get(MyMissions.ActiveMission.Name).ToString(); } else { return MyTextsWrapper.Get(MyTextsWrapperEnum.FreeRoaming).ToString(); } } else { return String.IsNullOrWhiteSpace(m_sectorIdentifier.SectorName) ? Checkpoint.SectorObjectBuilder.Name : m_sectorIdentifier.SectorName; } }
private MyGuiScreenLoading JoinMultiplayerSession(MyGameTypes gameType, MyMwcObjectBuilder_Checkpoint checkpoint) { MyMultiplayerGameplay.Static.IsHost = false; //var checkpoint = MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.Checkpoint, null) as MyMwcObjectBuilder_Checkpoint; // This is just dummy ship for load //var ship = MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(MyMwcObjectBuilder_SmallShip_TypesEnum.GETTYSBURG, MySession.Static.Player.Faction); MySession.Static.Player.Faction = checkpoint.PlayerObjectBuilder.ShipObjectBuilder.Faction; MyGuiManager.CloseAllScreensExcept(MyGuiScreenGamePlay.Static); MyGuiScreenGamePlayType? gameplayType = null; MyMwcStartSessionRequestTypeEnum? sessionType = null; switch (gameType) { case MyGameTypes.Story: gameplayType = MyGuiScreenGamePlayType.GAME_STORY; sessionType = MyMwcStartSessionRequestTypeEnum.JOIN_FRIEND_STORY; break; case MyGameTypes.Deathmatch: gameplayType = MyGuiScreenGamePlayType.GAME_SANDBOX; sessionType = MyMwcStartSessionRequestTypeEnum.SANDBOX_FRIENDS; break; default: break; } return MyGuiScreenGamePlay.ReloadGameplayScreen(checkpoint, sessionType, gameplayType); }
public static MyGuiScreenLoading StartJoinMultiplayerSession(MyGameTypes gameType, MyGameplayDifficultyEnum difficulty, MyMwcObjectBuilder_Checkpoint checkpoint) { // Temporary MySession.Static = new MySinglePlayerSession(difficulty); MySession.Static.Init(); return MySession.Static.JoinMultiplayerSession(gameType, checkpoint); }
public MyGuiScreenJoinGame(MyGuiScreenBase closeAfterSuccessfulEnter, MyGameTypes gameTypeFilter) : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.95f, 0.8f)) { m_size = new Vector2(0.95f, 0.85f); m_serverDisconnectedHandler = new ConnectionHandler(Static_ServerDisconnected); m_gameTypeFilter = gameTypeFilter; m_backgroundTexture = MyTextureManager.GetTexture <MyTexture2D>("Textures\\GUI\\BackgroundScreen\\VideoBackground", flags: TextureFlags.IgnoreQuality); m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter; m_enableBackgroundFade = true; m_games = new List <MyGameExtendedInfo>(); AddCaption(MyTextsWrapperEnum.JoinGame, new Vector2(0, 0.0075f)); Vector2 menuPositionOrigin = new Vector2(-0.31f, -m_size.Value.Y / 2.0f + 0.15f); Vector2 buttonDelta = new Vector2(0.22f, 0); const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED; Controls.Add(new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.SearchGameToJoin, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)); m_searchTextbox = new MyGuiControlTextbox(this, menuPositionOrigin + buttonDelta, MyGuiControlPreDefinedSize.LARGE, "", 40, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlTextboxType.NORMAL); m_searchTextbox.TextChanged += OnSearchTextChanged; Controls.Add(m_searchTextbox); menuPositionOrigin += new Vector2(0.395f, 0); var refreshButton = new MyGuiControlButton( this, menuPositionOrigin + buttonDelta, MyGuiConstants.BACK_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Refresh, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnRefreshButtonClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true); Controls.Add(refreshButton); menuPositionOrigin.Y += 0.052f; menuPositionOrigin.X = -0.33f; var storyLabel = new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.Story, Vector4.One, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER); Controls.Add(storyLabel); menuPositionOrigin.X = -0.35f; m_storyCheck = new MyGuiControlCheckbox(this, menuPositionOrigin, true, Vector4.One, null); m_storyCheck.OnCheck = CheckChanged; Controls.Add(m_storyCheck); menuPositionOrigin.X = -0.2f; var deathLabel = new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.Deathmatch, Vector4.One, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER); Controls.Add(deathLabel); menuPositionOrigin.X = -0.22f; m_deathCheck = new MyGuiControlCheckbox(this, menuPositionOrigin, true, Vector4.One, null); m_deathCheck.OnCheck = CheckChanged; Controls.Add(m_deathCheck); //var storyButton = new MyGuiControlButton(this, menuPositionOrigin, null, Vector4.One, MyTextsWrapperEnum.Story, Vector4.One, 1.0f, menuPositionOrigin.Y += 0.25f; menuPositionOrigin.X = 0; m_gameList = new MyGuiControlListbox(this, menuPositionOrigin, new Vector2(0.22f, 0.04f), MyGuiConstants.LISTBOX_BACKGROUND_COLOR, MyTextsWrapper.Get(MyTextsWrapperEnum.JoinGame), MyGuiConstants.LABEL_TEXT_SCALE, HeaderCount, 10, HeaderCount, true, true, false, null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f); m_gameList.ItemSelect += OnGamesItemSelect; m_gameList.DisplayHighlight = true; m_gameList.MultipleSelection = true; m_gameList.ItemDoubleClick += GameListOnItemDoubleClick; m_gameList.HighlightHeadline = true; m_gameList.EnableAllRowHighlightWhileMouseOver(true, true); m_gameList.SetCustomCollumnsWidths(new List <float>() { 0.15f, 0.30f, 0.15f, 0.10f }); Controls.Add(m_gameList); buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.06f); Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true)); Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true)); AddHeaders(); }
public MyGuiScreenJoinGame(MyGuiScreenBase closeAfterSuccessfulEnter, MyGameTypes gameTypeFilter) : base(new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, new Vector2(0.95f, 0.8f)) { m_size = new Vector2(0.95f, 0.85f); m_serverDisconnectedHandler = new ConnectionHandler(Static_ServerDisconnected); m_gameTypeFilter = gameTypeFilter; m_backgroundTexture = MyTextureManager.GetTexture<MyTexture2D>("Textures\\GUI\\BackgroundScreen\\VideoBackground", flags: TextureFlags.IgnoreQuality); m_closeAfterSuccessfulEnter = closeAfterSuccessfulEnter; m_enableBackgroundFade = true; m_games = new List<MyGameExtendedInfo>(); AddCaption(MyTextsWrapperEnum.JoinGame, new Vector2(0, 0.0075f)); Vector2 menuPositionOrigin = new Vector2(-0.31f, -m_size.Value.Y / 2.0f + 0.15f); Vector2 buttonDelta = new Vector2(0.22f, 0); const MyGuiControlButtonTextAlignment menuButtonTextAlignement = MyGuiControlButtonTextAlignment.CENTERED; Controls.Add(new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.SearchGameToJoin, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER)); m_searchTextbox = new MyGuiControlTextbox(this, menuPositionOrigin + buttonDelta, MyGuiControlPreDefinedSize.LARGE, "", 40, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlTextboxType.NORMAL); m_searchTextbox.TextChanged += OnSearchTextChanged; Controls.Add(m_searchTextbox); menuPositionOrigin += new Vector2(0.395f, 0); var refreshButton = new MyGuiControlButton( this, menuPositionOrigin + buttonDelta, MyGuiConstants.BACK_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Refresh, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnRefreshButtonClick, menuButtonTextAlignement, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true); Controls.Add(refreshButton); menuPositionOrigin.Y += 0.052f; menuPositionOrigin.X = -0.33f; var storyLabel = new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.Story, Vector4.One, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER); Controls.Add(storyLabel); menuPositionOrigin.X = -0.35f; m_storyCheck = new MyGuiControlCheckbox(this, menuPositionOrigin, true, Vector4.One, null); m_storyCheck.OnCheck = CheckChanged; Controls.Add(m_storyCheck); menuPositionOrigin.X = -0.2f; var deathLabel = new MyGuiControlLabel(this, menuPositionOrigin, null, MyTextsWrapperEnum.Deathmatch, Vector4.One, 1.0f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER); Controls.Add(deathLabel); menuPositionOrigin.X = -0.22f; m_deathCheck = new MyGuiControlCheckbox(this, menuPositionOrigin, true, Vector4.One, null); m_deathCheck.OnCheck = CheckChanged; Controls.Add(m_deathCheck); //var storyButton = new MyGuiControlButton(this, menuPositionOrigin, null, Vector4.One, MyTextsWrapperEnum.Story, Vector4.One, 1.0f, menuPositionOrigin.Y += 0.25f; menuPositionOrigin.X = 0; m_gameList = new MyGuiControlListbox(this, menuPositionOrigin, new Vector2(0.22f, 0.04f), MyGuiConstants.LISTBOX_BACKGROUND_COLOR, MyTextsWrapper.Get(MyTextsWrapperEnum.JoinGame), MyGuiConstants.LABEL_TEXT_SCALE, HeaderCount, 10, HeaderCount, true, true, false, null, null, MyGuiManager.GetScrollbarSlider(), MyGuiManager.GetHorizontalScrollbarSlider(), 2, 1, MyGuiConstants.LISTBOX_BACKGROUND_COLOR_BLUE, 0f, 0f, 0f, 0f, 0, 0, -0.01f, -0.01f, -0.02f, 0.02f); m_gameList.ItemSelect += OnGamesItemSelect; m_gameList.DisplayHighlight = true; m_gameList.MultipleSelection = true; m_gameList.ItemDoubleClick += GameListOnItemDoubleClick; m_gameList.HighlightHeadline = true; m_gameList.EnableAllRowHighlightWhileMouseOver(true, true); m_gameList.SetCustomCollumnsWidths(new List<float>() { 0.15f, 0.30f, 0.15f, 0.10f }); Controls.Add(m_gameList); buttonDelta = new Vector2(0.1f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y / 2.0f - 0.06f); Controls.Add(new MyGuiControlButton(this, new Vector2(-buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Ok, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnOkClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true)); Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X, buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE, MyGuiConstants.BUTTON_BACKGROUND_COLOR, MyTextsWrapperEnum.Cancel, MyGuiConstants.BUTTON_TEXT_COLOR, MyGuiConstants.BUTTON_TEXT_SCALE, OnCancelClick, MyGuiControlButtonTextAlignment.CENTERED, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true)); AddHeaders(); }
public void CheckChanged(MyGuiControlCheckbox sender) { m_gameTypeFilter &= ~MyGameTypes.Deathmatch; m_gameTypeFilter &= ~MyGameTypes.Story; if (m_deathCheck.Checked) m_gameTypeFilter |= MyGameTypes.Deathmatch; if (m_storyCheck.Checked) m_gameTypeFilter |= MyGameTypes.Story; GetDataFromServer(true); }
public void GetGames(GameListReceivedHandler onGameListReceived, string filter, MyGameTypes gameTypeFilter) { MyMultiplayerPeers.Static.Restart(); m_introductionTimer.Dispose(); m_hostTimer.Dispose(); m_gameListReceivedAction = onGameListReceived; MyEventGetGames gamesRequest = new MyEventGetGames(); gamesRequest.NameFilter = filter; gamesRequest.GameTypeFilter = gameTypeFilter; SetCallback <MyEventGetGamesResponse>(OnGetGamesResponse); MyMultiplayerPeers.Static.SendServer(ref gamesRequest); }