public override void Initialize() { Name = "MultiplayerGameLobby"; base.Initialize(); InitPlayerOptionDropdowns(); ReadyBoxes = new XNACheckBox[MAX_PLAYER_COUNT]; int readyBoxX = GameOptionsIni.GetIntValue(Name, "PlayerReadyBoxX", 7); int readyBoxY = GameOptionsIni.GetIntValue(Name, "PlayerReadyBoxY", 4); for (int i = 0; i < MAX_PLAYER_COUNT; i++) { XNACheckBox chkPlayerReady = new XNACheckBox(WindowManager); chkPlayerReady.Name = "chkPlayerReady" + i; chkPlayerReady.Checked = false; chkPlayerReady.AllowChecking = false; chkPlayerReady.ClientRectangle = new Rectangle(readyBoxX, ddPlayerTeams[i].ClientRectangle.Y + readyBoxY, 0, 0); PlayerOptionsPanel.AddChild(chkPlayerReady); chkPlayerReady.DisabledClearTexture = chkPlayerReady.ClearTexture; chkPlayerReady.DisabledCheckedTexture = chkPlayerReady.CheckedTexture; ReadyBoxes[i] = chkPlayerReady; ddPlayerSides[i].AddItem("Spectator", AssetLoader.LoadTexture("spectatoricon.png")); } ddGameMode.ClientRectangle = new Rectangle( MapPreviewBox.ClientRectangle.X - 12 - ddGameMode.ClientRectangle.Width, MapPreviewBox.ClientRectangle.Y, ddGameMode.ClientRectangle.Width, ddGameMode.ClientRectangle.Height); lblGameModeSelect.ClientRectangle = new Rectangle( btnLaunchGame.ClientRectangle.X, ddGameMode.ClientRectangle.Y + 1, lblGameModeSelect.ClientRectangle.Width, lblGameModeSelect.ClientRectangle.Height); lbMapList.ClientRectangle = new Rectangle(btnLaunchGame.ClientRectangle.X, MapPreviewBox.ClientRectangle.Y + 23, MapPreviewBox.ClientRectangle.X - btnLaunchGame.ClientRectangle.X - 12, MapPreviewBox.ClientRectangle.Height - 23); lbChatMessages = new ChatListBox(WindowManager); lbChatMessages.Name = "lbChatMessages"; lbChatMessages.ClientRectangle = new Rectangle(lbMapList.ClientRectangle.Left, GameOptionsPanel.ClientRectangle.Y, lbMapList.ClientRectangle.Width, GameOptionsPanel.ClientRectangle.Height - 24); lbChatMessages.DrawMode = PanelBackgroundImageDrawMode.STRETCHED; lbChatMessages.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbChatMessages.LineHeight = 16; tbChatInput = new XNASuggestionTextBox(WindowManager); tbChatInput.Name = "tbChatInput"; tbChatInput.Suggestion = "Type here to chat.."; tbChatInput.ClientRectangle = new Rectangle(lbChatMessages.ClientRectangle.Left, lbChatMessages.ClientRectangle.Bottom + 3, lbChatMessages.ClientRectangle.Width, 21); tbChatInput.MaximumTextLength = 150; tbChatInput.EnterPressed += TbChatInput_EnterPressed; btnLockGame = new XNAClientButton(WindowManager); btnLockGame.Name = "btnLockGame"; btnLockGame.ClientRectangle = new Rectangle(btnLaunchGame.ClientRectangle.Right + 12, btnLaunchGame.ClientRectangle.Y, 133, 23); btnLockGame.Text = "Lock Game"; btnLockGame.LeftClick += BtnLockGame_LeftClick; AddChildToFirstIndex(lbChatMessages); AddChildToFirstIndex(tbChatInput); AddChild(btnLockGame); MapPreviewBox.LocalStartingLocationSelected += MapPreviewBox_LocalStartingLocationSelected; MapPreviewBox.StartingLocationApplied += MapPreviewBox_StartingLocationApplied; InitializeWindow(); sndJoinSound = new PrioritizedSound("joingame.wav"); sndLeaveSound = new PrioritizedSound("leavegame.wav"); sndMessageSound = new PrioritizedSound("message.wav"); sndGetReadySound = new PrioritizedSound("getready.wav", 0.0, 0.0, 5.0f); if (SavedGameManager.AreSavedGamesAvailable()) { fsw = new FileSystemWatcher(ProgramConstants.GamePath + "Saved Games", "*.NET"); fsw.EnableRaisingEvents = false; fsw.Created += fsw_Created; fsw.Changed += fsw_Created; } else { Logger.Log("MultiplayerGameLobby: Saved games are not available!"); } CenterOnParent(); // To move the lblMapAuthor label into its correct position // if it was moved in the theme description INI file LoadDefaultMap(); }
public override void Initialize() { Name = "GameLoadingLobby"; ClientRectangle = new Rectangle(0, 0, 590, 510); BackgroundTexture = AssetLoader.LoadTexture("loadmpsavebg.png"); lblDescription = new XNALabel(WindowManager); lblDescription.Name = "lblDescription"; lblDescription.ClientRectangle = new Rectangle(12, 12, 0, 0); lblDescription.Text = "Wait for all players to join and get ready, then click Load Game to load the saved multiplayer game."; panelPlayers = new XNAPanel(WindowManager); panelPlayers.ClientRectangle = new Rectangle(12, 32, 373, 125); panelPlayers.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); panelPlayers.DrawMode = PanelBackgroundImageDrawMode.STRETCHED; AddChild(lblDescription); AddChild(panelPlayers); lblPlayerNames = new XNALabel[8]; for (int i = 0; i < 4; i++) { XNALabel lblPlayerName = new XNALabel(WindowManager); lblPlayerName.Name = "lblPlayerName" + i; lblPlayerName.ClientRectangle = new Rectangle(9, 9 + 30 * i, 0, 0); lblPlayerName.Text = "Player " + i; panelPlayers.AddChild(lblPlayerName); lblPlayerNames[i] = lblPlayerName; } for (int i = 4; i < 8; i++) { XNALabel lblPlayerName = new XNALabel(WindowManager); lblPlayerName.Name = "lblPlayerName" + i; lblPlayerName.ClientRectangle = new Rectangle(190, 9 + 30 * (i - 4), 0, 0); lblPlayerName.Text = "Player " + i; panelPlayers.AddChild(lblPlayerName); lblPlayerNames[i] = lblPlayerName; } lblMapName = new XNALabel(WindowManager); lblMapName.Name = "lblMapName"; lblMapName.FontIndex = 1; lblMapName.ClientRectangle = new Rectangle(panelPlayers.Right + 12, panelPlayers.Y, 0, 0); lblMapName.Text = "MAP:"; lblMapNameValue = new XNALabel(WindowManager); lblMapNameValue.Name = "lblMapNameValue"; lblMapNameValue.ClientRectangle = new Rectangle(lblMapName.X, lblMapName.Y + 18, 0, 0); lblMapNameValue.Text = "Map name"; lblGameMode = new XNALabel(WindowManager); lblGameMode.Name = "lblGameMode"; lblGameMode.ClientRectangle = new Rectangle(lblMapName.X, panelPlayers.Y + 40, 0, 0); lblGameMode.FontIndex = 1; lblGameMode.Text = "GAME MODE:"; lblGameModeValue = new XNALabel(WindowManager); lblGameModeValue.Name = "lblGameModeValue"; lblGameModeValue.ClientRectangle = new Rectangle(lblGameMode.X, lblGameMode.Y + 18, 0, 0); lblGameModeValue.Text = "Game mode"; lblSavedGameTime = new XNALabel(WindowManager); lblSavedGameTime.Name = "lblSavedGameTime"; lblSavedGameTime.ClientRectangle = new Rectangle(lblMapName.X, panelPlayers.Bottom - 40, 0, 0); lblSavedGameTime.FontIndex = 1; lblSavedGameTime.Text = "SAVED GAME:"; ddSavedGame = new XNAClientDropDown(WindowManager); ddSavedGame.Name = "ddSavedGame"; ddSavedGame.ClientRectangle = new Rectangle(lblSavedGameTime.X, panelPlayers.Bottom - 21, Width - lblSavedGameTime.X - 12, 21); ddSavedGame.SelectedIndexChanged += DdSavedGame_SelectedIndexChanged; lbChatMessages = new ChatListBox(WindowManager); lbChatMessages.Name = "lbChatMessages"; lbChatMessages.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbChatMessages.DrawMode = PanelBackgroundImageDrawMode.STRETCHED; lbChatMessages.ClientRectangle = new Rectangle(12, panelPlayers.Bottom + 12, Width - 24, Height - panelPlayers.Bottom - 12 - 29 - 34); tbChatInput = new XNATextBox(WindowManager); tbChatInput.Name = "tbChatInput"; tbChatInput.ClientRectangle = new Rectangle(lbChatMessages.X, lbChatMessages.Bottom + 3, lbChatMessages.Width, 19); tbChatInput.MaximumTextLength = 200; tbChatInput.EnterPressed += TbChatInput_EnterPressed; btnLoadGame = new XNAClientButton(WindowManager); btnLoadGame.Name = "btnLoadGame"; btnLoadGame.ClientRectangle = new Rectangle(lbChatMessages.X, tbChatInput.Bottom + 6, 133, 23); btnLoadGame.Text = "Load Game"; btnLoadGame.LeftClick += BtnLoadGame_LeftClick; btnLeaveGame = new XNAClientButton(WindowManager); btnLeaveGame.Name = "btnLeaveGame"; btnLeaveGame.ClientRectangle = new Rectangle(Width - 145, btnLoadGame.Y, 133, 23); btnLeaveGame.Text = "Leave Game"; btnLeaveGame.LeftClick += BtnLeaveGame_LeftClick; AddChild(lblMapName); AddChild(lblMapNameValue); AddChild(lblGameMode); AddChild(lblGameModeValue); AddChild(lblSavedGameTime); AddChild(lbChatMessages); AddChild(tbChatInput); AddChild(btnLoadGame); AddChild(btnLeaveGame); AddChild(ddSavedGame); base.Initialize(); sndGetReady = new EnhancedSoundEffect("getready.wav"); sndJoinSound = new EnhancedSoundEffect("joingame.wav"); sndLeaveSound = new EnhancedSoundEffect("leavegame.wav"); sndMessageSound = new EnhancedSoundEffect("message.wav"); MPColors = MultiplayerColor.LoadColors(); WindowManager.CenterControlOnScreen(this); if (SavedGameManager.AreSavedGamesAvailable()) { fsw = new FileSystemWatcher(ProgramConstants.GamePath + "Saved Games", "*.NET"); fsw.EnableRaisingEvents = false; fsw.Created += fsw_Created; fsw.Changed += fsw_Created; } }
/// <summary> /// Changes the game lobby's UI depending on whether the local player is the host. /// </summary> /// <param name="isHost">Determines whether the local player is the host of the game.</param> protected void Refresh(bool isHost) { IsHost = isHost; switched = false; Locked = false; MapPreviewBox.EnableContextMenu = IsHost; btnLaunchGame.Text = IsHost ? "Launch Game" : "I'm Ready"; if (IsHost) { ShowMapList(); btnLockGame.Text = "Lock Game"; btnLockGame.Enabled = true; btnLockGame.Visible = true; foreach (GameLobbyDropDown dd in DropDowns) { dd.InputEnabled = true; } foreach (GameLobbyCheckBox checkBox in CheckBoxes) { checkBox.InputEnabled = true; } GenerateGameID(); } else { HideMapList(); btnLockGame.Enabled = false; btnLockGame.Visible = false; foreach (GameLobbyDropDown dd in DropDowns) { dd.InputEnabled = false; } foreach (GameLobbyCheckBox checkBox in CheckBoxes) { checkBox.InputEnabled = false; } } LoadDefaultMap(); lbChatMessages.Clear(); lbChatMessages.TopIndex = 0; if (SavedGameManager.AreSavedGamesAvailable()) { fsw.EnableRaisingEvents = true; } if (SavedGameManager.GetSaveGameCount() > 0) { lbChatMessages.AddItem("Multiplayer saved games from a previous match have been detected. " + "The saved games of the previous match will be deleted if you create new saves during this match.", Color.Yellow, true); } }