public static void AddAndInitializeWithControl(WindowManager wm, XNAControl control) { var dp = new DarkeningPanel(wm); wm.AddAndInitializeControl(dp); dp.AddChild(control); }
/// <summary> /// Creates and displays a new message box with the specified caption and description. /// </summary> /// <param name="game">The game.</param> /// <param name="caption">The caption/header of the message box.</param> /// <param name="description">The description of the message box.</param> public static void Show(WindowManager windowManager, string caption, string description) { var panel = new DarkeningPanel(windowManager); panel.Focused = true; windowManager.AddAndInitializeControl(panel); var msgBox = new XNAMessageBox(windowManager, Renderer.GetSafeString(caption, 1), Renderer.GetSafeString(description, 0), XNAMessageBoxButtons.OK); panel.AddChild(msgBox); msgBox.OKClickedAction = MsgBox_OKClicked; windowManager.AddAndInitializeControl(msgBox); }
/// <summary> /// Shows a message box with "Yes" and "No" being the user input options. /// </summary> /// <param name="windowManager">The WindowManager.</param> /// <param name="caption">The caption of the message box.</param> /// <param name="description">The description in the message box.</param> /// <returns>The XNAMessageBox instance that is created.</returns> public static XNAMessageBox ShowYesNoDialog(WindowManager windowManager, string caption, string description) { var panel = new DarkeningPanel(windowManager); windowManager.AddAndInitializeControl(panel); var msgBox = new XNAMessageBox(windowManager, Renderer.GetSafeString(caption, 1), Renderer.GetSafeString(description, 0), XNAMessageBoxButtons.YesNo); panel.AddChild(msgBox); msgBox.YesClickedAction = MsgBox_YesClicked; msgBox.NoClickedAction = MsgBox_NoClicked; return(msgBox); }
public override void Initialize() { dp = new DarkeningPanel(WindowManager); //WindowManager.AddAndInitializeControl(dp); //dp.AddChildWithoutInitialize(this); //dp.Alpha = 0.0f; //dp.Hide(); localGame = ClientConfiguration.Instance.LocalGame; base.Initialize(); connectionManager.ConnectionLost += ConnectionManager_ConnectionLost; connectionManager.Disconnected += ConnectionManager_Disconnected; tunnelSelectionWindow = new TunnelSelectionWindow(WindowManager, tunnelHandler); tunnelSelectionWindow.Initialize(); tunnelSelectionWindow.DrawOrder = 1; tunnelSelectionWindow.UpdateOrder = 1; DarkeningPanel.AddAndInitializeWithControl(WindowManager, tunnelSelectionWindow); tunnelSelectionWindow.CenterOnParent(); tunnelSelectionWindow.Disable(); tunnelSelectionWindow.TunnelSelected += TunnelSelectionWindow_TunnelSelected; btnChangeTunnel = new XNAClientButton(WindowManager); btnChangeTunnel.Name = nameof(btnChangeTunnel); btnChangeTunnel.ClientRectangle = new Rectangle(btnLeaveGame.Right - btnLeaveGame.Width - 145, btnLeaveGame.Y, 133, 23); btnChangeTunnel.Text = "Change Tunnel"; btnChangeTunnel.LeftClick += BtnChangeTunnel_LeftClick; AddChild(btnChangeTunnel); gameBroadcastTimer = new XNATimerControl(WindowManager); gameBroadcastTimer.AutoReset = true; gameBroadcastTimer.Interval = TimeSpan.FromSeconds(GAME_BROADCAST_INTERVAL); gameBroadcastTimer.Enabled = true; gameBroadcastTimer.TimeElapsed += GameBroadcastTimer_TimeElapsed; WindowManager.AddAndInitializeControl(gameBroadcastTimer); }
public override void Initialize() { dp = new DarkeningPanel(WindowManager); //WindowManager.AddAndInitializeControl(dp); //dp.AddChildWithoutInitialize(this); //dp.Alpha = 0.0f; //dp.Hide(); localGame = ClientConfiguration.Instance.LocalGame; base.Initialize(); connectionManager.ConnectionLost += ConnectionManager_ConnectionLost; connectionManager.Disconnected += ConnectionManager_Disconnected; gameBroadcastTimer = new XNATimerControl(WindowManager); gameBroadcastTimer.AutoReset = true; gameBroadcastTimer.Interval = TimeSpan.FromSeconds(GAME_BROADCAST_INTERVAL); gameBroadcastTimer.Enabled = true; gameBroadcastTimer.TimeElapsed += GameBroadcastTimer_TimeElapsed; WindowManager.AddAndInitializeControl(gameBroadcastTimer); }
public override void Initialize() { Name = "PrivateMessagingWindow"; ClientRectangle = new Rectangle(0, 0, 600, 600); BackgroundTexture = AssetLoader.LoadTextureUncached("privatemessagebg.png"); unknownGameIcon = AssetLoader.TextureFromImage(ClientCore.Properties.Resources.unknownicon); adminGameIcon = AssetLoader.TextureFromImage(ClientCore.Properties.Resources.cncneticon); personalMessageColor = AssetLoader.GetColorFromString(ClientConfiguration.Instance.SentPMColor); otherUserMessageColor = AssetLoader.GetColorFromString(ClientConfiguration.Instance.ReceivedPMColor); lblPrivateMessaging = new XNALabel(WindowManager); lblPrivateMessaging.Name = "lblPrivateMessaging"; lblPrivateMessaging.FontIndex = 1; lblPrivateMessaging.Text = "PRIVATE MESSAGING"; AddChild(lblPrivateMessaging); lblPrivateMessaging.CenterOnParent(); lblPrivateMessaging.ClientRectangle = new Rectangle( lblPrivateMessaging.ClientRectangle.X, 12, lblPrivateMessaging.ClientRectangle.Width, lblPrivateMessaging.ClientRectangle.Height); tabControl = new XNAClientTabControl(WindowManager); tabControl.Name = "tabControl"; tabControl.ClientRectangle = new Rectangle(60, 50, 0, 0); tabControl.SoundOnClick = AssetLoader.LoadSound("button.wav"); tabControl.FontIndex = 1; tabControl.AddTab("Messages", 160); tabControl.AddTab("Friend List", 160); tabControl.AddTab("All Players", 160); tabControl.SelectedIndexChanged += TabControl_SelectedIndexChanged; lblPlayers = new XNALabel(WindowManager); lblPlayers.Name = "lblPlayers"; lblPlayers.ClientRectangle = new Rectangle(12, tabControl.ClientRectangle.Bottom + 24, 0, 0); lblPlayers.FontIndex = 1; lblPlayers.Text = "PLAYERS:"; lbUserList = new XNAListBox(WindowManager); lbUserList.Name = "lbUserList"; lbUserList.ClientRectangle = new Rectangle(lblPlayers.ClientRectangle.X, lblPlayers.ClientRectangle.Bottom + 6, 150, ClientRectangle.Height - lblPlayers.ClientRectangle.Bottom - 18); lbUserList.RightClick += LbUserList_RightClick; lbUserList.SelectedIndexChanged += LbUserList_SelectedIndexChanged; lbUserList.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbUserList.DrawMode = PanelBackgroundImageDrawMode.STRETCHED; lblMessages = new XNALabel(WindowManager); lblMessages.Name = "lblMessages"; lblMessages.ClientRectangle = new Rectangle(lbUserList.ClientRectangle.Right + 12, lblPlayers.ClientRectangle.Y, 0, 0); lblMessages.FontIndex = 1; lblMessages.Text = "MESSAGES:"; lbMessages = new ChatListBox(WindowManager); lbMessages.Name = "lbMessages"; lbMessages.ClientRectangle = new Rectangle(lblMessages.ClientRectangle.X, lbUserList.ClientRectangle.Y, ClientRectangle.Width - lblMessages.ClientRectangle.X - 12, lbUserList.ClientRectangle.Height - 25); lbMessages.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbMessages.DrawMode = PanelBackgroundImageDrawMode.STRETCHED; tbMessageInput = new XNATextBox(WindowManager); tbMessageInput.Name = "tbMessageInput"; tbMessageInput.ClientRectangle = new Rectangle(lbMessages.ClientRectangle.X, lbMessages.ClientRectangle.Bottom + 6, lbMessages.ClientRectangle.Width, 19); tbMessageInput.EnterPressed += TbMessageInput_EnterPressed; tbMessageInput.MaximumTextLength = 200; tbMessageInput.Enabled = false; playerContextMenu = new PlayerContextMenu(WindowManager); playerContextMenu.Name = "playerContextMenu"; playerContextMenu.ClientRectangle = new Rectangle(0, 0, 150, 2); playerContextMenu.Enabled = false; playerContextMenu.Visible = false; playerContextMenu.AddItem("Add Friend"); playerContextMenu.OptionSelected += PlayerContextMenu_OptionSelected; notificationBox = new PrivateMessageNotificationBox(WindowManager); notificationBox.Enabled = false; notificationBox.Visible = false; AddChild(tabControl); AddChild(lblPlayers); AddChild(lbUserList); AddChild(lblMessages); AddChild(lbMessages); AddChild(tbMessageInput); AddChild(playerContextMenu); WindowManager.AddAndInitializeControl(notificationBox); base.Initialize(); CenterOnParent(); try { friendList = File.ReadAllLines(ProgramConstants.GamePath + FRIEND_LIST_PATH).ToList(); } catch { Logger.Log("Loading friend list failed!"); friendList = new List <string>(); } tabControl.SelectedTab = 0; connectionManager.PrivateMessageReceived += ConnectionManager_PrivateMessageReceived; sndMessageSound = new EnhancedSoundEffect("message.wav"); sndPrivateMessageSound = new EnhancedSoundEffect("pm.wav"); sndMessageSound.Enabled = UserINISettings.Instance.MessageSound; GameProcessLogic.GameProcessExited += SharedUILogic_GameProcessExited; }
public override void Initialize() { Name = nameof(PrivateMessagingWindow); ClientRectangle = new Rectangle(0, 0, 600, 600); BackgroundTexture = AssetLoader.LoadTextureUncached("privatemessagebg.png"); unknownGameIcon = AssetLoader.TextureFromImage(ClientCore.Properties.Resources.unknownicon); adminGameIcon = AssetLoader.TextureFromImage(ClientCore.Properties.Resources.cncneticon); personalMessageColor = AssetLoader.GetColorFromString(ClientConfiguration.Instance.SentPMColor); otherUserMessageColor = AssetLoader.GetColorFromString(ClientConfiguration.Instance.ReceivedPMColor); lblPrivateMessaging = new XNALabel(WindowManager); lblPrivateMessaging.Name = nameof(lblPrivateMessaging); lblPrivateMessaging.FontIndex = 1; lblPrivateMessaging.Text = "PRIVATE MESSAGING"; AddChild(lblPrivateMessaging); lblPrivateMessaging.CenterOnParent(); lblPrivateMessaging.ClientRectangle = new Rectangle( lblPrivateMessaging.X, 12, lblPrivateMessaging.Width, lblPrivateMessaging.Height); tabControl = new XNAClientTabControl(WindowManager); tabControl.Name = nameof(tabControl); tabControl.ClientRectangle = new Rectangle(60, 50, 0, 0); tabControl.ClickSound = new EnhancedSoundEffect("button.wav"); tabControl.FontIndex = 1; tabControl.AddTab("Messages", 160); tabControl.AddTab("Friend List", 160); tabControl.AddTab("All Players", 160); tabControl.SelectedIndexChanged += TabControl_SelectedIndexChanged; lblPlayers = new XNALabel(WindowManager); lblPlayers.Name = nameof(lblPlayers); lblPlayers.ClientRectangle = new Rectangle(12, tabControl.Bottom + 24, 0, 0); lblPlayers.FontIndex = 1; lblPlayers.Text = "PLAYERS:"; lbUserList = new XNAListBox(WindowManager); lbUserList.Name = nameof(lbUserList); lbUserList.ClientRectangle = new Rectangle(lblPlayers.X, lblPlayers.Bottom + 6, 150, Height - lblPlayers.Bottom - 18); lbUserList.RightClick += LbUserList_RightClick; lbUserList.SelectedIndexChanged += LbUserList_SelectedIndexChanged; lbUserList.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbUserList.PanelBackgroundDrawMode = PanelBackgroundImageDrawMode.STRETCHED; lblMessages = new XNALabel(WindowManager); lblMessages.Name = nameof(lblMessages); lblMessages.ClientRectangle = new Rectangle(lbUserList.Right + 12, lblPlayers.Y, 0, 0); lblMessages.FontIndex = 1; lblMessages.Text = "MESSAGES:"; lbMessages = new ChatListBox(WindowManager); lbMessages.Name = nameof(lbMessages); lbMessages.ClientRectangle = new Rectangle(lblMessages.X, lbUserList.Y, Width - lblMessages.X - 12, lbUserList.Height - 25); lbMessages.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbMessages.PanelBackgroundDrawMode = PanelBackgroundImageDrawMode.STRETCHED; tbMessageInput = new XNATextBox(WindowManager); tbMessageInput.Name = nameof(tbMessageInput); tbMessageInput.ClientRectangle = new Rectangle(lbMessages.X, lbMessages.Bottom + 6, lbMessages.Width, 19); tbMessageInput.EnterPressed += TbMessageInput_EnterPressed; tbMessageInput.MaximumTextLength = 200; tbMessageInput.Enabled = false; playerContextMenu = new XNAContextMenu(WindowManager); playerContextMenu.Name = nameof(playerContextMenu); playerContextMenu.ClientRectangle = new Rectangle(0, 0, 150, 2); playerContextMenu.Disable(); playerContextMenu.AddItem("Add Friend", PlayerContextMenu_ToggleFriend); playerContextMenu.AddItem("Toggle Block", PlayerContextMenu_ToggleIgnore, null, () => (bool)lbUserList.SelectedItem.Tag, null); playerContextMenu.AddItem("Invite", PlayerContextMenu_Invite, null, () => !string.IsNullOrEmpty(inviteChannelName)); notificationBox = new PrivateMessageNotificationBox(WindowManager); notificationBox.Enabled = false; notificationBox.Visible = false; notificationBox.LeftClick += NotificationBox_LeftClick; AddChild(tabControl); AddChild(lblPlayers); AddChild(lbUserList); AddChild(lblMessages); AddChild(lbMessages); AddChild(tbMessageInput); AddChild(playerContextMenu); WindowManager.AddAndInitializeControl(notificationBox); base.Initialize(); CenterOnParent(); tabControl.SelectedTab = 0; connectionManager.PrivateMessageReceived += ConnectionManager_PrivateMessageReceived; connectionManager.UserAdded += ConnectionManager_UserAdded; connectionManager.UserRemoved += ConnectionManager_UserRemoved; connectionManager.UserGameIndexUpdated += ConnectionManager_UserGameIndexUpdated; sndMessageSound = new EnhancedSoundEffect("message.wav", 0.0, 0.0, ClientConfiguration.Instance.SoundMessageCooldown); sndPrivateMessageSound = new EnhancedSoundEffect("pm.wav", 0.0, 0.0, ClientConfiguration.Instance.SoundPrivateMessageCooldown); sndMessageSound.Enabled = UserINISettings.Instance.MessageSound; GameProcessLogic.GameProcessExited += SharedUILogic_GameProcessExited; }
public override void Initialize() { BackgroundTexture = AssetLoader.LoadTexture("missionselectorbg.png"); ClientRectangle = new Rectangle(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT); BorderColor = UISettings.ActiveSettings.PanelBorderColor; Name = "CampaignSelector"; var lblSelectCampaign = new XNALabel(WindowManager); lblSelectCampaign.Name = "lblSelectCampaign"; lblSelectCampaign.FontIndex = 1; lblSelectCampaign.ClientRectangle = new Rectangle(12, 12, 0, 0); lblSelectCampaign.Text = "MISSIONS:"; lbCampaignList = new BattleListBox(WindowManager); lbCampaignList.Name = "lbCampaignList"; lbCampaignList.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 2, 2); lbCampaignList.PanelBackgroundDrawMode = PanelBackgroundImageDrawMode.STRETCHED; lbCampaignList.ClientRectangle = new Rectangle(12, lblSelectCampaign.Bottom + 6, 300, 516); lbCampaignList.SelectedIndexChanged += LbCampaignList_SelectedIndexChanged; var lblMissionDescriptionHeader = new XNALabel(WindowManager); lblMissionDescriptionHeader.Name = "lblMissionDescriptionHeader"; lblMissionDescriptionHeader.FontIndex = 1; lblMissionDescriptionHeader.ClientRectangle = new Rectangle( lbCampaignList.Right + 12, lblSelectCampaign.Y, 0, 0); lblMissionDescriptionHeader.Text = "MISSION DESCRIPTION:"; tbMissionDescription = new MissionDescriptionBox(WindowManager); tbMissionDescription.Name = "tbMissionDescription"; tbMissionDescription.ClientRectangle = new Rectangle( lblMissionDescriptionHeader.X, lblMissionDescriptionHeader.Bottom + 6, Width - 24 - lbCampaignList.Right, 430); tbMissionDescription.PanelBackgroundDrawMode = PanelBackgroundImageDrawMode.STRETCHED; tbMissionDescription.Alpha = 1.0f; tbMissionDescription.BackgroundTexture = AssetLoader.CreateTexture(AssetLoader.GetColorFromString(ClientConfiguration.Instance.AltUIBackgroundColor), tbMissionDescription.Width, tbMissionDescription.Height); var lblDifficultyLevel = new XNALabel(WindowManager); lblDifficultyLevel.Name = "lblDifficultyLevel"; lblDifficultyLevel.Text = "DIFFICULTY LEVEL"; lblDifficultyLevel.FontIndex = 1; Vector2 textSize = Renderer.GetTextDimensions(lblDifficultyLevel.Text, lblDifficultyLevel.FontIndex); lblDifficultyLevel.ClientRectangle = new Rectangle( tbMissionDescription.X + (tbMissionDescription.Width - (int)textSize.X) / 2, tbMissionDescription.Bottom + 12, (int)textSize.X, (int)textSize.Y); trbDifficultySelector = new XNATrackbar(WindowManager); trbDifficultySelector.Name = "trbDifficultySelector"; trbDifficultySelector.ClientRectangle = new Rectangle( tbMissionDescription.X, lblDifficultyLevel.Bottom + 6, tbMissionDescription.Width, 30); trbDifficultySelector.MinValue = 0; trbDifficultySelector.MaxValue = 2; trbDifficultySelector.BackgroundTexture = AssetLoader.CreateTexture( new Color(0, 0, 0, 128), 2, 2); trbDifficultySelector.ButtonTexture = AssetLoader.LoadTextureUncached( "trackbarButton_difficulty.png"); int y = lblDifficultyLevel.Y - UIDesignConstants.EMPTY_SPACE_BOTTOM; // Create controls for global variable customization // The indexes increase from bottom to top, meaning // that with 4 lines the global indexes go like this: // global slot #3 // global slot #2 // global slot #1 // global slot #0 for (int i = 0; i < MAX_GLOBAL_COUNT; i++) { globalVariableValues[i] = new XNADropDown(WindowManager); globalVariableValues[i].Name = "globalVariableValue" + i; globalVariableValues[i].X = trbDifficultySelector.X; globalVariableValues[i].Width = trbDifficultySelector.Width; globalVariableValues[i].AddItem("Disabled"); globalVariableValues[i].AddItem("Enabled"); AddChild(globalVariableValues[i]); globalVariableValues[i].Y = y - (UIDesignConstants.EMPTY_SPACE_BOTTOM * 2) - globalVariableValues[i].Height; globalVariableValues[i].Disable(); globalVariableNames[i] = new XNALabel(WindowManager); globalVariableNames[i].Name = "globalVariableName" + i; globalVariableNames[i].Text = "Global Variable #" + i; globalVariableNames[i].TextAnchor = LabelTextAnchorInfo.RIGHT; globalVariableNames[i].AnchorPoint = new Vector2(globalVariableValues[i].X, globalVariableValues[i].Y - globalVariableNames[i].Height); AddChild(globalVariableNames[i]); globalVariableNames[i].Disable(); y = globalVariableNames[i].Y; } lblPreconditionsHeader = new XNALabel(WindowManager); lblPreconditionsHeader.Name = nameof(lblPreconditionsHeader); lblPreconditionsHeader.FontIndex = UIDesignConstants.BOLD_FONT_INDEX; lblPreconditionsHeader.TextAnchor = LabelTextAnchorInfo.HORIZONTAL_CENTER; lblPreconditionsHeader.AnchorPoint = new Vector2(trbDifficultySelector.ClientRectangle.Center.X, globalVariableNames[0].Y - UIDesignConstants.CONTROL_VERTICAL_MARGIN * 2); lblPreconditionsHeader.Text = "PRECONDITIONS"; AddChild(lblPreconditionsHeader); lblPreconditionsHeader.Disable(); PreconditionUIConfig(null); lblEasy = new XNALabel(WindowManager); lblEasy.Name = "lblEasy"; lblEasy.TextAnchor = LabelTextAnchorInfo.RIGHT; lblEasy.AnchorPoint = new Vector2(trbDifficultySelector.X, trbDifficultySelector.Bottom + UIDesignConstants.CONTROL_VERTICAL_MARGIN); lblEasy.FontIndex = 1; lblEasy.Text = DifficultyNamesUIDefault[0]; lblNormal = new XNALabel(WindowManager); lblNormal.Name = "lblNormal"; lblNormal.TextAnchor = LabelTextAnchorInfo.HORIZONTAL_CENTER; lblNormal.AnchorPoint = new Vector2(trbDifficultySelector.ClientRectangle.Center.X, lblEasy.AnchorPoint.Y); lblNormal.FontIndex = 1; lblNormal.Text = DifficultyNamesUIDefault[1]; lblHard = new XNALabel(WindowManager); lblHard.Name = "lblHard"; lblHard.TextAnchor = LabelTextAnchorInfo.LEFT; lblHard.AnchorPoint = new Vector2(trbDifficultySelector.Right, lblEasy.AnchorPoint.Y); lblHard.FontIndex = 1; lblHard.Text = DifficultyNamesUIDefault[2]; btnLaunch = new XNAClientButton(WindowManager); btnLaunch.Name = "btnLaunch"; btnLaunch.ClientRectangle = new Rectangle(12, Height - 35, 133, 23); btnLaunch.Text = "Launch"; btnLaunch.AllowClick = false; btnLaunch.LeftClick += BtnLaunch_LeftClick; var btnCancel = new XNAClientButton(WindowManager); btnCancel.Name = "btnCancel"; btnCancel.ClientRectangle = new Rectangle(Width - 145, btnLaunch.Y, 133, 23); btnCancel.Text = "Cancel"; btnCancel.LeftClick += BtnCancel_LeftClick; AddChild(lblSelectCampaign); AddChild(lblMissionDescriptionHeader); AddChild(lbCampaignList); AddChild(tbMissionDescription); AddChild(lblDifficultyLevel); AddChild(btnLaunch); AddChild(btnCancel); AddChild(trbDifficultySelector); AddChild(lblEasy); AddChild(lblNormal); AddChild(lblHard); // Set control attributes from INI file base.Initialize(); // Center on screen CenterOnParent(); trbDifficultySelector.Value = UserINISettings.Instance.Difficulty; cheaterWindow = new CheaterWindow(WindowManager); DarkeningPanel dp = new DarkeningPanel(WindowManager); dp.AddChild(cheaterWindow); AddChild(dp); dp.CenterOnParent(); cheaterWindow.CenterOnParent(); cheaterWindow.YesClicked += CheaterWindow_YesClicked; cheaterWindow.Disable(); EnabledChanged += CampaignSelector_EnabledChanged; missionCompletionNotification = new MissionCompletionNotification(WindowManager); WindowManager.AddAndInitializeControl(missionCompletionNotification); missionCompletionNotification.DrawOrder = 9999; missionCompletionNotification.UpdateOrder = 9999; missionCompletionNotification.Disable(); CampaignHandler.Instance.MissionRankUpdated += CampaignHandler_MissionRankUpdated; CampaignHandler.Instance.MissionCompleted += CampaignHandler_MissionCompleted; }
private void Finish() { ProgramConstants.GAME_VERSION = ClientConfiguration.Instance.ModMode ? "N/A" : CUpdater.GameVersion; DiscordHandler discordHandler = null; if (!string.IsNullOrEmpty(ClientConfiguration.Instance.DiscordAppId)) { discordHandler = new DiscordHandler(WindowManager); } var gameCollection = new GameCollection(); gameCollection.Initialize(GraphicsDevice); var lanLobby = new LANLobby(WindowManager, gameCollection, mapLoader.GameModes, mapLoader, discordHandler); var cncnetUserData = new CnCNetUserData(WindowManager); var cncnetManager = new CnCNetManager(WindowManager, gameCollection); var tunnelHandler = new TunnelHandler(WindowManager, cncnetManager); var topBar = new TopBar(WindowManager, cncnetManager); var optionsWindow = new OptionsWindow(WindowManager, gameCollection, topBar); var pmWindow = new PrivateMessagingWindow(WindowManager, cncnetManager, gameCollection, cncnetUserData); privateMessagingPanel = new PrivateMessagingPanel(WindowManager); var cncnetGameLobby = new CnCNetGameLobby(WindowManager, "MultiplayerGameLobby", topBar, mapLoader.GameModes, cncnetManager, tunnelHandler, gameCollection, cncnetUserData, mapLoader, discordHandler); var cncnetGameLoadingLobby = new CnCNetGameLoadingLobby(WindowManager, topBar, cncnetManager, tunnelHandler, mapLoader.GameModes, gameCollection, discordHandler); var cncnetLobby = new CnCNetLobby(WindowManager, cncnetManager, cncnetGameLobby, cncnetGameLoadingLobby, topBar, pmWindow, tunnelHandler, gameCollection, cncnetUserData); var gipw = new GameInProgressWindow(WindowManager); var skirmishLobby = new SkirmishLobby(WindowManager, topBar, mapLoader.GameModes, discordHandler); topBar.SetSecondarySwitch(cncnetLobby); var mainMenu = new MainMenu(WindowManager, skirmishLobby, lanLobby, topBar, optionsWindow, cncnetLobby, cncnetManager, discordHandler); WindowManager.AddAndInitializeControl(mainMenu); DarkeningPanel.AddAndInitializeWithControl(WindowManager, skirmishLobby); DarkeningPanel.AddAndInitializeWithControl(WindowManager, cncnetGameLoadingLobby); DarkeningPanel.AddAndInitializeWithControl(WindowManager, cncnetGameLobby); DarkeningPanel.AddAndInitializeWithControl(WindowManager, cncnetLobby); DarkeningPanel.AddAndInitializeWithControl(WindowManager, lanLobby); DarkeningPanel.AddAndInitializeWithControl(WindowManager, optionsWindow); WindowManager.AddAndInitializeControl(privateMessagingPanel); privateMessagingPanel.AddChild(pmWindow); topBar.SetTertiarySwitch(pmWindow); topBar.SetOptionsWindow(optionsWindow); WindowManager.AddAndInitializeControl(gipw); skirmishLobby.Disable(); cncnetLobby.Disable(); cncnetGameLobby.Disable(); cncnetGameLoadingLobby.Disable(); lanLobby.Disable(); pmWindow.Disable(); optionsWindow.Disable(); WindowManager.AddAndInitializeControl(topBar); topBar.AddPrimarySwitchable(mainMenu); mainMenu.PostInit(); if (UserINISettings.Instance.AutomaticCnCNetLogin && NameValidator.IsNameValid(ProgramConstants.PLAYERNAME) == null) { cncnetManager.Connect(); } WindowManager.RemoveControl(this); Cursor.Visible = visibleSpriteCursor; }
public override void Initialize() { Name = nameof(PrivateMessagingWindow); ClientRectangle = new Rectangle(0, 0, 600, 600); BackgroundTexture = AssetLoader.LoadTextureUncached("privatemessagebg.png"); unknownGameIcon = AssetLoader.TextureFromImage(ClientCore.Properties.Resources.unknownicon); adminGameIcon = AssetLoader.TextureFromImage(ClientCore.Properties.Resources.cncneticon); personalMessageColor = AssetLoader.GetColorFromString(ClientConfiguration.Instance.SentPMColor); otherUserMessageColor = AssetLoader.GetColorFromString(ClientConfiguration.Instance.ReceivedPMColor); lblPrivateMessaging = new XNALabel(WindowManager); lblPrivateMessaging.Name = nameof(lblPrivateMessaging); lblPrivateMessaging.FontIndex = 1; lblPrivateMessaging.Text = "PRIVATE MESSAGING"; AddChild(lblPrivateMessaging); lblPrivateMessaging.CenterOnParent(); lblPrivateMessaging.ClientRectangle = new Rectangle( lblPrivateMessaging.X, 12, lblPrivateMessaging.Width, lblPrivateMessaging.Height); tabControl = new XNAClientTabControl(WindowManager); tabControl.Name = nameof(tabControl); tabControl.ClientRectangle = new Rectangle(34, 50, 0, 0); tabControl.ClickSound = new EnhancedSoundEffect("button.wav"); tabControl.FontIndex = 1; tabControl.AddTab("Messages", UIDesignConstants.BUTTON_WIDTH_133); tabControl.AddTab("Friend List", UIDesignConstants.BUTTON_WIDTH_133); tabControl.AddTab("All Players", UIDesignConstants.BUTTON_WIDTH_133); tabControl.AddTab("Recent Players", UIDesignConstants.BUTTON_WIDTH_133); tabControl.SelectedIndexChanged += TabControl_SelectedIndexChanged; lblPlayers = new XNALabel(WindowManager); lblPlayers.Name = nameof(lblPlayers); lblPlayers.ClientRectangle = new Rectangle(12, tabControl.Bottom + 24, 0, 0); lblPlayers.FontIndex = 1; lblPlayers.Text = DEFAULT_PLAYERS_TEXT; lbUserList = new XNAListBox(WindowManager); lbUserList.Name = nameof(lbUserList); lbUserList.ClientRectangle = new Rectangle(lblPlayers.X, lblPlayers.Bottom + 6, LB_USERS_WIDTH, Height - lblPlayers.Bottom - 18); lbUserList.RightClick += LbUserList_RightClick; lbUserList.SelectedIndexChanged += LbUserList_SelectedIndexChanged; lbUserList.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbUserList.PanelBackgroundDrawMode = PanelBackgroundImageDrawMode.STRETCHED; lbUserList.DoubleLeftClick += UserList_LeftDoubleClick; lblMessages = new XNALabel(WindowManager); lblMessages.Name = nameof(lblMessages); lblMessages.ClientRectangle = new Rectangle(lbUserList.Right + 12, lblPlayers.Y, 0, 0); lblMessages.FontIndex = 1; lblMessages.Text = "MESSAGES:"; lbMessages = new ChatListBox(WindowManager); lbMessages.Name = nameof(lbMessages); lbMessages.ClientRectangle = new Rectangle(lblMessages.X, lbUserList.Y, Width - lblMessages.X - 12, lbUserList.Height - 25); lbMessages.BackgroundTexture = AssetLoader.CreateTexture(new Color(0, 0, 0, 128), 1, 1); lbMessages.PanelBackgroundDrawMode = PanelBackgroundImageDrawMode.STRETCHED; lbMessages.RightClick += ChatListBox_RightClick; tbMessageInput = new XNATextBox(WindowManager); tbMessageInput.Name = nameof(tbMessageInput); tbMessageInput.ClientRectangle = new Rectangle(lbMessages.X, lbMessages.Bottom + 6, lbMessages.Width, 19); tbMessageInput.EnterPressed += TbMessageInput_EnterPressed; tbMessageInput.MaximumTextLength = 200; tbMessageInput.Enabled = false; mclbRecentPlayerList = new RecentPlayerTable(WindowManager, connectionManager); mclbRecentPlayerList.ClientRectangle = new Rectangle(lbUserList.X, lbUserList.Y, lbMessages.Right - lbUserList.X, lbUserList.Height); mclbRecentPlayerList.PlayerRightClick += RecentPlayersList_RightClick; mclbRecentPlayerList.Disable(); globalContextMenu = new GlobalContextMenu(WindowManager, connectionManager, cncnetUserData, this); globalContextMenu.JoinEvent += PlayerContextMenu_JoinUser; notificationBox = new PrivateMessageNotificationBox(WindowManager); notificationBox.Enabled = false; notificationBox.Visible = false; notificationBox.LeftClick += NotificationBox_LeftClick; AddChild(tabControl); AddChild(lblPlayers); AddChild(lbUserList); AddChild(lblMessages); AddChild(lbMessages); AddChild(tbMessageInput); AddChild(mclbRecentPlayerList); AddChild(globalContextMenu); WindowManager.AddAndInitializeControl(notificationBox); base.Initialize(); CenterOnParent(); tabControl.SelectedTab = MESSAGES_INDEX; privateMessageHandler.PrivateMessageReceived += PrivateMessageHandler_PrivateMessageReceived; connectionManager.UserAdded += ConnectionManager_UserAdded; connectionManager.UserRemoved += ConnectionManager_UserRemoved; connectionManager.UserGameIndexUpdated += ConnectionManager_UserGameIndexUpdated; sndMessageSound = new EnhancedSoundEffect("message.wav", 0.0, 0.0, ClientConfiguration.Instance.SoundMessageCooldown); sndPrivateMessageSound = new EnhancedSoundEffect("pm.wav", 0.0, 0.0, ClientConfiguration.Instance.SoundPrivateMessageCooldown); sndMessageSound.Enabled = UserINISettings.Instance.MessageSound; GameProcessLogic.GameProcessExited += SharedUILogic_GameProcessExited; }
protected override void Initialize() { Logger.Log("Initializing GameClass."); string windowTitle = ClientConfiguration.Instance.WindowTitle; Window.Title = string.IsNullOrEmpty(windowTitle) ? string.Format("{0} Client", MainClientConstants.GAME_NAME_SHORT) : windowTitle; base.Initialize(); string primaryNativeCursorPath = ProgramConstants.GetResourcePath() + "cursor.cur"; string alternativeNativeCursorPath = ProgramConstants.GetBaseResourcePath() + "cursor.cur"; AssetLoader.Initialize(GraphicsDevice, content); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GetResourcePath()); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GetBaseResourcePath()); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GamePath); #if !XNA && !WINDOWSGL // Try to create and load a texture to check for MonoGame 3.7.1 compatibility try { Texture2D texture = new Texture2D(GraphicsDevice, 100, 100, false, SurfaceFormat.Color); Color[] colorArray = new Color[100 * 100]; texture.SetData(colorArray); UISettings.ActiveSettings.CheckBoxClearTexture = AssetLoader.LoadTextureUncached("checkBoxClear.png"); } catch (Exception ex) { if (ex.Message.Contains("DeviceRemoved")) { Logger.Log("Creating texture on startup failed! Creating .dxfail file and re-launching client launcher."); if (!Directory.Exists(ProgramConstants.GamePath + "Client")) { Directory.CreateDirectory(ProgramConstants.GamePath + "Client"); } // Create .dxfail file that the launcher can check for this error // and handle it by redirecting the user to the XNA version instead File.WriteAllBytes(ProgramConstants.GamePath + "Client" + Path.DirectorySeparatorChar + ".dxfail", new byte[] { 1 }); string launcherExe = ClientConfiguration.Instance.LauncherExe; if (string.IsNullOrEmpty(launcherExe)) { // LauncherExe is unspecified, just throw the exception forward // because we can't handle it Logger.Log("No LauncherExe= specified in ClientDefinitions.ini! " + "Forwarding exception to regular exception handler."); throw ex; } else { Logger.Log("Starting " + launcherExe + " and exiting."); Process.Start(ProgramConstants.GamePath + launcherExe); Environment.Exit(0); } } } #endif InitializeUISettings(); WindowManager wm = new WindowManager(this, graphics); wm.Initialize(content, ProgramConstants.GetBaseResourcePath()); SetGraphicsMode(wm); wm.SetIcon(ProgramConstants.GetBaseResourcePath() + "clienticon.ico"); wm.SetControlBox(true); wm.Cursor.Textures = new Texture2D[] { AssetLoader.LoadTexture("cursor.png"), AssetLoader.LoadTexture("waitCursor.png") }; if (File.Exists(primaryNativeCursorPath)) { wm.Cursor.LoadNativeCursor(primaryNativeCursorPath); } else if (File.Exists(alternativeNativeCursorPath)) { wm.Cursor.LoadNativeCursor(alternativeNativeCursorPath); } Components.Add(wm); string playerName = UserINISettings.Instance.PlayerName.Value.Trim(); if (UserINISettings.Instance.AutoRemoveUnderscoresFromName) { while (playerName.EndsWith("_")) { playerName = playerName.Substring(0, playerName.Length - 1); } } if (string.IsNullOrEmpty(playerName)) { playerName = WindowsIdentity.GetCurrent().Name; playerName = playerName.Substring(playerName.IndexOf("\\") + 1); } playerName = Renderer.GetSafeString(NameValidator.GetValidOfflineName(playerName), 0); ProgramConstants.PLAYERNAME = playerName; UserINISettings.Instance.PlayerName.Value = playerName; LoadingScreen ls = new LoadingScreen(wm); wm.AddAndInitializeControl(ls); ls.ClientRectangle = new Rectangle((wm.RenderResolutionX - ls.Width) / 2, (wm.RenderResolutionY - ls.Height) / 2, ls.Width, ls.Height); }
protected override void Initialize() { Logger.Log("Initializing GameClass."); base.Initialize(); string primaryNativeCursorPath = ProgramConstants.GetResourcePath() + "cursor.cur"; string alternativeNativeCursorPath = ProgramConstants.GetBaseResourcePath() + "cursor.cur"; AssetLoader.Initialize(GraphicsDevice, content); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GetResourcePath()); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GetBaseResourcePath()); AssetLoader.AssetSearchPaths.Add(ProgramConstants.GamePath); InitializeUISettings(); WindowManager wm = new WindowManager(this, graphics); wm.Initialize(content, ProgramConstants.GetBaseResourcePath()); int windowWidth = UserINISettings.Instance.ClientResolutionX; int windowHeight = UserINISettings.Instance.ClientResolutionY; if (Screen.PrimaryScreen.Bounds.Width >= windowWidth && Screen.PrimaryScreen.Bounds.Height >= windowHeight) { if (!wm.InitGraphicsMode(windowWidth, windowHeight, false)) { throw new Exception("Setting graphics mode failed! " + windowWidth + "x" + windowHeight); } } else { if (!wm.InitGraphicsMode(1024, 600, false)) { throw new Exception("Setting default graphics mode failed!"); } } int renderResolutionX = Math.Max(windowWidth, ClientConfiguration.Instance.MinimumRenderWidth); int renderResolutionY = Math.Max(windowHeight, ClientConfiguration.Instance.MinimumRenderHeight); renderResolutionX = Math.Min(renderResolutionX, ClientConfiguration.Instance.MaximumRenderWidth); renderResolutionY = Math.Min(renderResolutionY, ClientConfiguration.Instance.MaximumRenderHeight); wm.SetBorderlessMode(UserINISettings.Instance.BorderlessWindowedClient); wm.CenterOnScreen(); wm.SetRenderResolution(renderResolutionX, renderResolutionY); wm.SetIcon(ProgramConstants.GetBaseResourcePath() + "clienticon.ico"); wm.SetControlBox(true); wm.Cursor.Textures = new Texture2D[] { AssetLoader.LoadTexture("cursor.png"), AssetLoader.LoadTexture("waitCursor.png") }; if (File.Exists(primaryNativeCursorPath)) { wm.Cursor.LoadNativeCursor(primaryNativeCursorPath); } else if (File.Exists(alternativeNativeCursorPath)) { wm.Cursor.LoadNativeCursor(alternativeNativeCursorPath); } Components.Add(wm); string playerName = UserINISettings.Instance.PlayerName.Value.Trim(); if (UserINISettings.Instance.AutoRemoveUnderscoresFromName) { while (playerName.EndsWith("_")) { playerName = playerName.Substring(0, playerName.Length - 1); } } if (string.IsNullOrEmpty(playerName)) { playerName = WindowsIdentity.GetCurrent().Name; playerName = playerName.Substring(playerName.IndexOf("\\") + 1); } playerName = playerName.Replace(",", string.Empty); playerName = Renderer.GetSafeString(playerName, 0); playerName.Trim(); int maxNameLength = ClientConfiguration.Instance.MaxNameLength; if (playerName.Length > maxNameLength) { playerName = playerName.Substring(0, maxNameLength); } ProgramConstants.PLAYERNAME = playerName; UserINISettings.Instance.PlayerName.Value = playerName; LoadingScreen ls = new LoadingScreen(wm); wm.AddAndInitializeControl(ls); ls.ClientRectangle = new Rectangle((renderResolutionX - ls.ClientRectangle.Width) / 2, (renderResolutionY - ls.ClientRectangle.Height) / 2, ls.ClientRectangle.Width, ls.ClientRectangle.Height); }