OSDN Git Service

RAD-58 related, make Alice survive reconnect.
authorLatif Khalifa <latifer@streamgrid.net>
Mon, 26 Oct 2009 08:30:45 +0000 (08:30 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Mon, 26 Oct 2009 08:30:45 +0000 (08:30 +0000)
git-svn-id: https://radegast.googlecode.com/svn/trunk@370 f7a694da-4d33-11de-9ad6-1127a62b9fcd

plugins/Radegast.Plugin.Alice/Alice.cs

index c1f50fb..ebc28bc 100644 (file)
@@ -56,6 +56,7 @@ namespace Radegast.Plugin.Alice
         public void StartPlugin(RadegastInstance inst)\r
         {\r
             Instance = inst;\r
+            Instance.ClientChanged += new EventHandler<ClientChangedEventArgs>(Instance_ClientChanged);\r
 \r
             Alice = new AIMLbot.Bot();\r
             Alice.isAcceptingUserInput = false;\r
@@ -87,11 +88,7 @@ namespace Radegast.Plugin.Alice
             }\r
 \r
             // Events\r
-            Client.Self.ChatFromSimulator += new EventHandler<ChatEventArgs>(Self_ChatFromSimulator);\r
-            Client.Self.IM += new EventHandler<InstantMessageEventArgs>(Self_IM);\r
-            Client.Avatars.AvatarPropertiesReply += new EventHandler<AvatarPropertiesReplyEventArgs>(Avatars_AvatarPropertiesReply);\r
-            Client.Network.OnConnected += new NetworkManager.ConnectedCallback(Network_OnConnected);\r
-\r
+            RegisterClientEvents(Client);\r
         }\r
 \r
 \r
@@ -101,12 +98,31 @@ namespace Radegast.Plugin.Alice
             Instance.MainForm.ToolsMenu.DropDownItems.Remove(MenuButton);\r
 \r
             // Unregister events\r
+            UnregisterClientEvents(Client);\r
+        }\r
+\r
+        private void RegisterClientEvents(GridClient client)\r
+        {\r
+            Client.Self.ChatFromSimulator += new EventHandler<ChatEventArgs>(Self_ChatFromSimulator);\r
+            Client.Self.IM += new EventHandler<InstantMessageEventArgs>(Self_IM);\r
+            Client.Avatars.AvatarPropertiesReply += new EventHandler<AvatarPropertiesReplyEventArgs>(Avatars_AvatarPropertiesReply);\r
+            Client.Network.OnConnected += new NetworkManager.ConnectedCallback(Network_OnConnected);\r
+        }\r
+\r
+        private void UnregisterClientEvents(GridClient client)\r
+        {\r
             Client.Self.ChatFromSimulator -= new EventHandler<ChatEventArgs>(Self_ChatFromSimulator);\r
             Client.Self.IM -= new EventHandler<InstantMessageEventArgs>(Self_IM);\r
             Client.Avatars.AvatarPropertiesReply -= new EventHandler<AvatarPropertiesReplyEventArgs>(Avatars_AvatarPropertiesReply);\r
             Client.Network.OnConnected -= new NetworkManager.ConnectedCallback(Network_OnConnected);\r
         }\r
 \r
+        void Instance_ClientChanged(object sender, ClientChangedEventArgs e)\r
+        {\r
+            UnregisterClientEvents(e.OldClient);\r
+            RegisterClientEvents(Client);\r
+        }\r
+        \r
         void Network_OnConnected(object sender)\r
         {\r
             Alice.GlobalSettings.updateSetting("name", FirstName(Client.Self.Name));\r