public MyGameExtendedInfo(MyGameInfo gameInfo)
 {
     GameInfo = gameInfo;
     Ping = MyMwcUtils.GetRandomInt(10, 20);
     SectorType = MySectorType.Official;
     GameType = gameInfo.GameType;
 }
 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);
        }
Example #4
0
        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));
        }
Example #5
0
 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;
     }
 }
Example #8
0
        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);
        }
Example #9
0
 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);
        }