/// <summary> /// Handles initialization of the GameScreen. This will be invoked after the GameScreen has been /// completely and successfully added to the ScreenManager. It is highly recommended that you /// use this instead of the constructor. This is invoked only once. /// </summary> public override void Initialize() { _gameControls = new GameplayScreenControls(this); _dragDropHandler = new DragDropHandler(this); _socket = ClientSockets.Instance; _world = new World(this, new Camera2D(GameData.ScreenSize), new UserInfo(Socket)); _world.MapChanged += World_MapChanged; _sayHandler = new SayHandler(this); _profanityHandler = new ProfanityHandler(); // Create some misc goodies that require a reference to the Socket _equipmentInfoRequester = new EquipmentInfoRequester(UserInfo.Equipped, Socket); _inventoryInfoRequester = new InventoryInfoRequester(UserInfo.Inventory, Socket); // Other inits InitializeGUI(); _characterTargeter = new CharacterTargeter(World); // NOTE: Test lighting _userLight = new Light { Size = new Vector2(512), IsEnabled = false }; DrawingManager.LightManager.Add(_userLight); }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) _sockets = ClientSockets.Instance; _sockets.PacketHandler.AccountCharacterInfos.AccountCharactersLoaded += HandleCharInfosUpdated; }
/// <summary> /// Initializes a new instance of the <see cref="DemoGame"/> class. /// </summary> public DemoGame() : base( new Point((int)GameData.ScreenSize.X, (int)GameData.ScreenSize.Y), new Point((int)GameData.ScreenSize.X, (int)GameData.ScreenSize.Y), "NetGore") { EngineSettingsInitializer.Initialize(); // Create the screen manager var skinManager = new SkinManager("Default"); _screenManager = new ScreenManager(this, skinManager, "Font/Arial", 24); // Initialize the socket manager ClientSockets.Initialize(ScreenManager); _sockets = ClientSockets.Instance; // Read the GrhInfo LoadGrhInfo(); var lightGD = GrhInfo.GetData("Effect", "light"); _screenManager.DrawingManager.LightManager.DefaultSprite = new Grh(lightGD); // Set up our custom chat bubbles ChatBubble.CreateChatBubbleInstance = CreateChatBubbleInstanceHandler; // Create the screens new OptionsScreen(ScreenManager); new GameplayScreen(ScreenManager); new MainMenuScreen(ScreenManager); new LoginScreen(ScreenManager); new CharacterSelectionScreen(ScreenManager); new CreateCharacterScreen(ScreenManager); new NewAccountScreen(ScreenManager); ScreenManager.ConsoleScreen = new ConsoleScreen(ScreenManager); ScreenManager.SetScreen <MainMenuScreen>(); ShowMouseCursor = true; KeyPressed -= DemoGame_KeyPressed; KeyPressed += DemoGame_KeyPressed; var clientSettings = ClientSettings.Default; // Apply some of the initial settings ScreenManager.AudioManager.SoundManager.Volume = clientSettings.Audio_SoundVolume; ScreenManager.AudioManager.MusicManager.Volume = clientSettings.Audio_MusicVolume; UseVerticalSync = clientSettings.Graphics_VSync; IsFullscreen = clientSettings.Graphics_Fullscreen; // Listen for changes to the settings clientSettings.PropertyChanged -= Default_PropertyChanged; clientSettings.PropertyChanged += Default_PropertyChanged; }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) { _sockets = ClientSockets.Instance; } _sockets.PacketHandler.AccountCharacterInfos.AccountCharactersLoaded += HandleCharInfosUpdated; }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) _sockets = ClientSockets.Instance; _btnCreateCharacter.IsEnabled = true; _cStatus.IsVisible = false; _sockets.PacketHandler.ReceivedCreateAccountCharacter += PacketHandler_ReceivedCreateAccountCharacter; }
/// <summary> /// Initializes a new instance of the <see cref="DemoGame"/> class. /// </summary> public DemoGame() : base( new Point((int)GameData.ScreenSize.X, (int)GameData.ScreenSize.Y), new Point((int)GameData.ScreenSize.X, (int)GameData.ScreenSize.Y), "NetGore") { EngineSettingsInitializer.Initialize(); // Create the screen manager var skinManager = new SkinManager("Default"); _screenManager = new ScreenManager(this, skinManager, "Font/Arial", 24); // Initialize the socket manager ClientSockets.Initialize(ScreenManager); _sockets = ClientSockets.Instance; // Read the GrhInfo LoadGrhInfo(); var lightGD = GrhInfo.GetData("Effect", "light"); _screenManager.DrawingManager.LightManager.DefaultSprite = new Grh(lightGD); // Set up our custom chat bubbles ChatBubble.CreateChatBubbleInstance = CreateChatBubbleInstanceHandler; // Create the screens new OptionsScreen(ScreenManager); new GameplayScreen(ScreenManager); new MainMenuScreen(ScreenManager); new LoginScreen(ScreenManager); new CharacterSelectionScreen(ScreenManager); new CreateCharacterScreen(ScreenManager); new NewAccountScreen(ScreenManager); ScreenManager.ConsoleScreen = new ConsoleScreen(ScreenManager); ScreenManager.SetScreen<MainMenuScreen>(); ShowMouseCursor = true; KeyPressed -= DemoGame_KeyPressed; KeyPressed += DemoGame_KeyPressed; var clientSettings = ClientSettings.Default; // Apply some of the initial settings ScreenManager.AudioManager.SoundManager.Volume = clientSettings.Audio_SoundVolume; ScreenManager.AudioManager.MusicManager.Volume = clientSettings.Audio_MusicVolume; UseVerticalSync = clientSettings.Graphics_VSync; IsFullscreen = clientSettings.Graphics_Fullscreen; // Listen for changes to the settings clientSettings.PropertyChanged -= Default_PropertyChanged; clientSettings.PropertyChanged += Default_PropertyChanged; }
/// <summary> /// Handles initialization of the GameScreen. This will be invoked after the GameScreen has been /// completely and successfully added to the ScreenManager. It is highly recommended that you /// use this instead of the constructor. This is invoked only once. /// </summary> public override void Initialize() { base.Initialize(); _sockets = ClientSockets.Instance; _sockets.PacketHandler.ReceivedCreateAccount -= PacketHandler_ReceivedCreateAccount; _sockets.PacketHandler.ReceivedCreateAccount += PacketHandler_ReceivedCreateAccount; var cScreen = new Panel(GUIManager, Vector2.Zero, ScreenManager.ScreenSize); // Create the new account fields. Use a different font since our default TextBox font doesn't support some characters // needed for email, and it'd look funny to only change it for the email textbox. var textBoxFont = GameScreenHelper.DefaultChatFont; GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 180), "Name:"); _cNameText = new TextBox(cScreen, new Vector2(220, 180), new Vector2(200, 40)) { IsMultiLine = false, Text = string.Empty, Font = textBoxFont }; GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 260), "Password:"******"Email:"); _cEmailText = new TextBox(cScreen, new Vector2(220, 320), new Vector2(200, 40)) { IsMultiLine = false, Text = string.Empty, Font = textBoxFont }; var textBoxPos = new Vector2(60, _cEmailText.Position.Y + _cEmailText.Size.Y + 20); var textBoxSize = new Vector2(cScreen.ClientSize.X - (textBoxPos.X * 2), cScreen.ClientSize.Y - textBoxPos.Y - 60); _cStatus = new TextBox(cScreen, textBoxPos, textBoxSize) { ForeColor = Color.Red, Border = null, CanFocus = false, IsMultiLine = true, IsEnabled = false }; // Create the menu buttons var menuButtons = GameScreenHelper.CreateMenuButtons(ScreenManager, cScreen, "Create Account", "Back"); menuButtons["Create Account"].Clicked += ClickButton_CreateAccount; menuButtons["Back"].Clicked += delegate { ScreenManager.SetScreen <MainMenuScreen>(); }; _createAccountButton = menuButtons["Create Account"]; _sockets.StatusChanged -= _sockets_StatusChanged; _sockets.StatusChanged += _sockets_StatusChanged; }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) _sockets = ClientSockets.Instance; // Add event listeners _sockets.PacketHandler.AccountCharacterInfos.AccountCharactersLoaded -= HandleCharInfosUpdated; _sockets.PacketHandler.AccountCharacterInfos.AccountCharactersLoaded += HandleCharInfosUpdated; // Ensure the old user info is cleared out ScreenManager.GetScreen<GameplayScreen>().UserInfo.Clear(); }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) { _sockets = ClientSockets.Instance; } _btnCreateCharacter.IsEnabled = true; _cStatus.IsVisible = false; _sockets.PacketHandler.ReceivedCreateAccountCharacter += PacketHandler_ReceivedCreateAccountCharacter; }
/// <summary> /// Initializes the <see cref="ClientSockets"/> instance. This only needs to be called once. /// </summary> /// <param name="screenManager">The <see cref="IScreenManager"/> instance.</param> /// <exception cref="ArgumentNullException"><see cref="screenManager"/> is null.</exception> public static void Initialize(IScreenManager screenManager) { if (screenManager == null) { throw new ArgumentNullException("screenManager"); } if (Instance != null) { return; } _instance = new ClientSockets(screenManager); }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) { _sockets = ClientSockets.Instance; } // Add event listeners _sockets.PacketHandler.AccountCharacterInfos.AccountCharactersLoaded -= HandleCharInfosUpdated; _sockets.PacketHandler.AccountCharacterInfos.AccountCharactersLoaded += HandleCharInfosUpdated; // Ensure the old user info is cleared out ScreenManager.GetScreen <GameplayScreen>().UserInfo.Clear(); }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) _sockets = ClientSockets.Instance; // Set event hooks (remove first to ensure only one listener is set) _sockets.PacketHandler.ReceivedCreateAccountCharacter -= PacketHandler_ReceivedCreateAccountCharacter; _sockets.PacketHandler.ReceivedCreateAccountCharacter += PacketHandler_ReceivedCreateAccountCharacter; // Reset the control states SetError(null); _btnCreateCharacter.IsEnabled = true; _txtName.Text = string.Empty; }
/// <summary> /// Initializes a new instance of the <see cref="OnlineUsersForm"/> class. /// </summary> /// <param name="parent">The parent.</param> /// <exception cref="ArgumentNullException"><paramref name="userInfo" /> is <c>null</c>.</exception> public OnlineUsersForm(Control parent) : base(parent, Vector2.Zero, new Vector2(225, 400)) { _sockets = ClientSockets.Instance; this.VisibleChanged -= OnlineUsersForm_VisibleChanged; this.VisibleChanged += OnlineUsersForm_VisibleChanged; Online = new List<String>(); var items = new List<String>(); for (var i = 0; i < (Online.Count); i++) { items.Add(i.ToString()); } _lbOnlineUsers = new ListBox<String>(this, new Vector2(20, 20), this.ClientSize - new Vector2(50, 50)) { Items = items, ShowPaging = true, CanSelect = true }; }
/// <summary> /// Handles screen activation, which occurs every time the screen becomes the current /// active screen. Objects in here often will want to be destroyed on Deactivate(). /// </summary> public override void Activate() { base.Activate(); if (_sockets == null) { _sockets = ClientSockets.Instance; } // Set event hooks (remove first to ensure only one listener is set) _sockets.PacketHandler.ReceivedCreateAccountCharacter -= PacketHandler_ReceivedCreateAccountCharacter; _sockets.PacketHandler.ReceivedCreateAccountCharacter += PacketHandler_ReceivedCreateAccountCharacter; // Reset the control states SetError(null); _btnCreateCharacter.IsEnabled = true; _txtName.Text = string.Empty; }
/// <summary> /// Updates the <see cref="Control"/>. This is called for every <see cref="Control"/>, even if it is disabled or /// not visible. /// </summary> /// <param name="currentTime">The current time in milliseconds.</param> /// protected override void UpdateControl(TickCount currentTime) { base.UpdateControl(currentTime); if (currentTime >= _nextUpdateTime) { if (_sockets == null) { _sockets = ClientSockets.Instance; } using (var pw = ClientPacket.GetFriends()) { _sockets.Send(pw, ClientMessageType.General); } _nextUpdateTime = (TickCount)(currentTime + _updateTimeOut); } }
/// <summary> /// Method used to send the private message to the right player /// </summary> private void SendPrivateMessage() { string[] TextMessage = InputTextBox.Text.Split(new char[] { ' ' }, 2); string TargetCharName = TextMessage[0]; string Message = TextMessage[1]; // Empty input textbox InputTextBox.Text = ""; // Send the message if (_sockets == null) { _sockets = ClientSockets.Instance; } using (var pw = ClientPacket.SendPrivateMessage(TargetCharName, Message)) { _sockets.Send(pw, ClientMessageType.General); } }
/// <summary> /// Initializes a new instance of the <see cref="OnlineUsersForm"/> class. /// </summary> /// <param name="parent">The parent.</param> /// <exception cref="ArgumentNullException"><paramref name="userInfo" /> is <c>null</c>.</exception> public OnlineUsersForm(Control parent) : base(parent, Vector2.Zero, new Vector2(225, 400)) { _sockets = ClientSockets.Instance; this.VisibleChanged -= OnlineUsersForm_VisibleChanged; this.VisibleChanged += OnlineUsersForm_VisibleChanged; Online = new List <String>(); var items = new List <String>(); for (var i = 0; i < (Online.Count); i++) { items.Add(i.ToString()); } _lbOnlineUsers = new ListBox <String>(this, new Vector2(20, 20), this.ClientSize - new Vector2(50, 50)) { Items = items, ShowPaging = true, CanSelect = true }; }
/// <summary> /// Saves the friendlist /// </summary> private void SaveFriends() { string FriendNames = ""; // Make a string with the friend names so they can be stored in the Database. foreach (Friends _friend in _myFriends) { FriendNames += _friend.Name + ","; } FriendNames.TrimEnd(','); // Save the friends if (_sockets == null) { _sockets = ClientSockets.Instance; } using (var pw = ClientPacket.SaveFriends(FriendNames)) { _sockets.Send(pw, ClientMessageType.General); } }
/// <summary> /// Handles initialization of the GameScreen. This will be invoked after the GameScreen has been /// completely and successfully added to the ScreenManager. It is highly recommended that you /// use this instead of the constructor. This is invoked only once. /// </summary> public override void Initialize() { base.Initialize(); var decodedPass = MachineCrypto.ValidatedDecode(ClientSettings.Default.UI_EnteredPassword) ?? string.Empty; var cScreen = new Panel(GUIManager, Vector2.Zero, ScreenManager.ScreenSize); // Create the login fields GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 260), "Name:"); _cNameText = new TextBox(cScreen, new Vector2(220, 260), new Vector2(200, 40)) { IsMultiLine = false, Text = ClientSettings.Default.UI_EnteredUserName }; _cNameText.KeyPressed += cNameText_KeyPressed; _cNameText.TextChanged += cNameText_TextChanged; GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 320), "Password:"******"Remember Password", Value = ClientSettings.Default.UI_RememberPassword, ForeColor = Color.White, Font = GameScreenHelper.DefaultChatFont }; _cRememberPassword.ValueChanged += _cRememberPassword_ValueChanged; // Display the admin account info const string adminAccountInfo = "Use the following account for the default admin account:" + "\n Username: Spodi" + "\n Password: qwerty123"; new Label(cScreen, _cRememberPassword.Position + new Vector2(-32, _cRememberPassword.Size.Y + 32)) { Text = adminAccountInfo, ForeColor = Color.Green, Font = GameScreenHelper.DefaultChatFont }; // Create the menu buttons var menuButtons = GameScreenHelper.CreateMenuButtons(ScreenManager, cScreen, "Login", "Back"); _btnLogin = menuButtons["Login"]; _btnLogin.Clicked += _btnLogin_Clicked; menuButtons["Back"].Clicked += LoginScreen_Clicked; cScreen.SetFocus(); // Set up the networking stuff for this screen _sockets = ClientSockets.Instance; _sockets.StatusChanged -= _sockets_StatusChanged; _sockets.StatusChanged += _sockets_StatusChanged; _sockets.PacketHandler.ReceivedLoginSuccessful -= PacketHandler_ReceivedLoginSuccessful; _sockets.PacketHandler.ReceivedLoginSuccessful += PacketHandler_ReceivedLoginSuccessful; _sockets.PacketHandler.ReceivedLoginUnsuccessful -= PacketHandler_ReceivedLoginUnsuccessful; _sockets.PacketHandler.ReceivedLoginUnsuccessful += PacketHandler_ReceivedLoginUnsuccessful; }
/// <summary> /// Handles initialization of the GameScreen. This will be invoked after the GameScreen has been /// completely and successfully added to the ScreenManager. It is highly recommended that you /// use this instead of the constructor. This is invoked only once. /// </summary> public override void Initialize() { base.Initialize(); var decodedPass = MachineCrypto.ValidatedDecode(ClientSettings.Default.UI_EnteredPassword) ?? string.Empty; var cScreen = new Panel(GUIManager, Vector2.Zero, ScreenManager.ScreenSize); // Create the login fields GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 260), "Name:"); _cNameText = new TextBox(cScreen, new Vector2(220, 260), new Vector2(200, 40)) { IsMultiLine = false, Text = ClientSettings.Default.UI_EnteredUserName }; _cNameText.KeyPressed += cNameText_KeyPressed; _cNameText.TextChanged += cNameText_TextChanged; GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 320), "Password:"******"Remember Password", Value = ClientSettings.Default.UI_RememberPassword, ForeColor = Color.White, Font = GameScreenHelper.DefaultChatFont }; _cRememberPassword.ValueChanged += _cRememberPassword_ValueChanged; // NOTE: Display the admin account info const string adminAccountInfo = "Use the following account for the default admin account:" + "\n Username: Spodi" + "\n Password: qwerty123"; new Label(cScreen, _cRememberPassword.Position + new Vector2(-32, _cRememberPassword.Size.Y + 32)) { Text = adminAccountInfo, ForeColor = Color.Green, Font = GameScreenHelper.DefaultChatFont }; // Create the menu buttons var menuButtons = GameScreenHelper.CreateMenuButtons(ScreenManager, cScreen, "Login", "Back"); _btnLogin = menuButtons["Login"]; _btnLogin.Clicked += _btnLogin_Clicked; menuButtons["Back"].Clicked += LoginScreen_Clicked; cScreen.SetFocus(); // Set up the networking stuff for this screen _sockets = ClientSockets.Instance; _sockets.StatusChanged -= _sockets_StatusChanged; _sockets.StatusChanged += _sockets_StatusChanged; _sockets.PacketHandler.ReceivedLoginSuccessful += PacketHandler_ReceivedLoginSuccessful; _sockets.PacketHandler.ReceivedLoginUnsuccessful += PacketHandler_ReceivedLoginUnsuccessful; }
/// <summary> /// Handles initialization of the GameScreen. This will be invoked after the GameScreen has been /// completely and successfully added to the ScreenManager. It is highly recommended that you /// use this instead of the constructor. This is invoked only once. /// </summary> public override void Initialize() { _gameControls = new GameplayScreenControls(this); _dragDropHandler = new DragDropHandler(this); _socket = ClientSockets.Instance; _world = new World(this, new Camera2D(GameData.ScreenSize), new UserInfo(Socket)); _world.MapChanged += World_MapChanged; // Create some misc goodies that require a reference to the Socket _equipmentInfoRequester = new EquipmentInfoRequester(UserInfo.Equipped, Socket); _inventoryInfoRequester = new InventoryInfoRequester(UserInfo.Inventory, Socket); // Other inits InitializeGUI(); _characterTargeter = new CharacterTargeter(World); // NOTE: Test lighting _userLight = new Light { Size = new Vector2(512), IsEnabled = false }; DrawingManager.LightManager.Add(_userLight); }
/// <summary> /// Saves the friendlist /// </summary> private void SaveFriends() { string FriendNames = ""; // Make a string with the friend names so they can be stored in the Database. foreach (Friends _friend in _myFriends) { FriendNames += _friend.Name + ","; } FriendNames.TrimEnd(','); // Save the friends if (_sockets == null) _sockets = ClientSockets.Instance; using (var pw = ClientPacket.SaveFriends(FriendNames)) { _sockets.Send(pw, ClientMessageType.General); } }
/// <summary> /// Handles initialization of the GameScreen. This will be invoked after the GameScreen has been /// completely and successfully added to the ScreenManager. It is highly recommended that you /// use this instead of the constructor. This is invoked only once. /// </summary> public override void Initialize() { base.Initialize(); _sockets = ClientSockets.Instance; _sockets.PacketHandler.ReceivedCreateAccount -= PacketHandler_ReceivedCreateAccount; _sockets.PacketHandler.ReceivedCreateAccount += PacketHandler_ReceivedCreateAccount; var cScreen = new Panel(GUIManager, Vector2.Zero, ScreenManager.ScreenSize); // Create the new account fields. Use a different font since our default TextBox font doesn't support some characters // needed for email, and it'd look funny to only change it for the email textbox. var textBoxFont = GameScreenHelper.DefaultChatFont; GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 180), "Name:"); _cNameText = new TextBox(cScreen, new Vector2(220, 180), new Vector2(200, 40)) { IsMultiLine = false, Text = string.Empty, Font = textBoxFont }; GameScreenHelper.CreateMenuLabel(cScreen, new Vector2(60, 260), "Password:"******"Email:"); _cEmailText = new TextBox(cScreen, new Vector2(220, 320), new Vector2(200, 40)) { IsMultiLine = false, Text = string.Empty, Font = textBoxFont }; var textBoxPos = new Vector2(60, _cEmailText.Position.Y + _cEmailText.Size.Y + 20); var textBoxSize = new Vector2(cScreen.ClientSize.X - (textBoxPos.X * 2), cScreen.ClientSize.Y - textBoxPos.Y - 60); _cStatus = new TextBox(cScreen, textBoxPos, textBoxSize) { ForeColor = Color.Red, Border = null, CanFocus = false, IsMultiLine = true, IsEnabled = false }; // Create the menu buttons var menuButtons = GameScreenHelper.CreateMenuButtons(ScreenManager, cScreen, "Create Account", "Back"); menuButtons["Create Account"].Clicked += ClickButton_CreateAccount; menuButtons["Back"].Clicked += delegate { ScreenManager.SetScreen<MainMenuScreen>(); }; _createAccountButton = menuButtons["Create Account"]; _sockets.StatusChanged -= _sockets_StatusChanged; _sockets.StatusChanged += _sockets_StatusChanged; }
/// <summary> /// Method used to send the private message to the right player /// </summary> private void SendPrivateMessage() { string[] TextMessage = InputTextBox.Text.Split(new char[] { ' ' }, 2); string TargetCharName = TextMessage[0]; string Message = TextMessage[1]; // Empty input textbox InputTextBox.Text = ""; // Send the message if (_sockets == null) _sockets = ClientSockets.Instance; using (var pw = ClientPacket.SendPrivateMessage(TargetCharName, Message)) { _sockets.Send(pw, ClientMessageType.General); } }
/// <summary> /// Updates the <see cref="Control"/>. This is called for every <see cref="Control"/>, even if it is disabled or /// not visible. /// </summary> /// <param name="currentTime">The current time in milliseconds.</param> /// protected override void UpdateControl(TickCount currentTime) { base.UpdateControl(currentTime); if (currentTime >= _nextUpdateTime) { if (_sockets == null) _sockets = ClientSockets.Instance; using (var pw = ClientPacket.GetFriends()) { _sockets.Send(pw, ClientMessageType.General); } _nextUpdateTime = (TickCount)(currentTime + _updateTimeOut); } }
/// <summary> /// Initializes the <see cref="ClientSockets"/> instance. This only needs to be called once. /// </summary> /// <param name="screenManager">The <see cref="IScreenManager"/> instance.</param> /// <exception cref="ArgumentNullException"><see cref="screenManager"/> is null.</exception> public static void Initialize(IScreenManager screenManager) { if (screenManager == null) throw new ArgumentNullException("screenManager"); if (Instance != null) return; _instance = new ClientSockets(screenManager); }