| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Text; | 
|   | 
| public enum ChatBoolType | 
| { | 
|     ChannelSystem = 0 , //系统频道 | 
|     ChannelWorld,//世界频道 | 
|     ChannelATeam,//组队频道 | 
|     ChannelTeam,//队伍频道 | 
|     ChannelBugle,//喇叭频道 | 
|     ChannelGrad,//仙盟频道 | 
|     ChannelArea,//区域频道 | 
|     //ChannelAlliance,//同盟频道 | 
|   | 
|     Voice1, | 
|     Voice2, | 
|     Voice3, | 
|   | 
|     GradVoiceWifi,  //仙盟语音Wifi | 
|     PrivateChatVoiceWifi,//私聊语音Wifi | 
|     TeamVoiceWifi,//队伍语音Wifi | 
|     WorldVoiceWifi,//世界语音Wifi | 
|     AreaVoiceWifi,//区域语音Wifi | 
|    // AllianceVoiceWifi, //同盟语音Wifi | 
|   | 
|     GradVoice4G,//仙盟语音4G | 
|     PrivatChatVoice4G,//私聊语音4G | 
|     TeamVoice4G,//队伍语音4G | 
|     WorldVoice4G,//世界语音4G | 
|     AreaVoice4G,//区域语音4G | 
|                 //AllianceVoice4G, //同盟语音4G | 
|                 //后续IL开发添加预设 | 
|     default1, | 
|     default2, | 
|     default3, | 
|     default4, | 
|     default5, | 
|     default6, | 
|     default7, | 
|     default8, | 
|     default9, | 
|     default10, | 
| } | 
|   | 
|   | 
| public class ChatSetting : Singleton<ChatSetting> | 
|   | 
| { | 
|     const string ChatBoolSet_Key = "ChatBoolSet"; | 
|   | 
|     public event Action<ChatBoolType, bool> RefreshChatSetAct; | 
|   | 
|     #region 缓存数据 | 
|     public Dictionary<ChatBoolType, bool> boolSetDict { get; private set; } | 
|     public void GetLoginBoolSet() | 
|     { | 
|         boolSetDict = new Dictionary<ChatBoolType, bool>(); | 
|         for (int i = 0; i < 20; i++) | 
|         { | 
|             if (!boolSetDict.ContainsKey((ChatBoolType)i)) | 
|             { | 
|                 boolSetDict.Add((ChatBoolType)i, SettingMgr.Instance.GetAccountSetBoolInfo(((ChatBoolType)i).ToString())); | 
|             } | 
|   | 
|         } | 
|     } | 
|     #endregion | 
|   | 
|     public void SetBoolSetStr(ChatBoolType type, bool isOpen) | 
|     { | 
|         SettingMgr.Instance.SetAccountSetStr(type.ToString(),isOpen.ToString()); | 
|         switch (type) { | 
|             case ChatBoolType.ChannelSystem: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.System, isOpen); | 
|                 break; | 
|             case ChatBoolType.ChannelWorld: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.World, isOpen); | 
|                 break; | 
|             case ChatBoolType.ChannelATeam: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.Invite, isOpen); | 
|                 break; | 
|             case ChatBoolType.ChannelTeam: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.Team, isOpen); | 
|                 break; | 
|             case ChatBoolType.ChannelBugle: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.Trumpet, isOpen); | 
|                 break; | 
|             case ChatBoolType.ChannelGrad: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.Fairy, isOpen); | 
|                 break; | 
|             case ChatBoolType.ChannelArea: | 
|                 ChatManager.Instance.SetChatChannelShow(ChatInfoType.Area, isOpen); | 
|                 break; | 
|         } | 
|   | 
|         if (boolSetDict != null) | 
|         { | 
|             if (boolSetDict.ContainsKey(type)) | 
|             { | 
|                 boolSetDict[type] = isOpen; | 
|             } | 
|         } | 
|   | 
|         if(RefreshChatSetAct != null) | 
|         { | 
|             RefreshChatSetAct(type,isOpen); | 
|         } | 
|     } | 
|   | 
|     public bool GetBool(ChatBoolType type) | 
|     { | 
|         if (boolSetDict != null) | 
|         { | 
|             bool isOpen = false; | 
|             boolSetDict.TryGetValue(type, out isOpen); | 
|             return isOpen; | 
|         } | 
|         else | 
|         { | 
|             return SettingMgr.Instance.GetAccountSetBoolInfo(type.ToString()); | 
|         } | 
|     } | 
|   | 
|     public bool GetAutoPlayVoice(ChatInfoType type, int netState) | 
|     { | 
|         if (netState == 0) | 
|         { | 
|             return false; | 
|         } | 
|         switch (type) | 
|         { | 
|             case ChatInfoType.World: | 
|                 if (netState == 2) | 
|                 { | 
|                     return GetBool(ChatBoolType.WorldVoiceWifi); | 
|                 } | 
|                 else | 
|                 { | 
|                     return GetBool(ChatBoolType.WorldVoice4G); | 
|                 } | 
|             case ChatInfoType.Area: | 
|                 if (netState == 2) | 
|                 { | 
|                     return GetBool(ChatBoolType.AreaVoiceWifi); | 
|                 } | 
|                 else | 
|                 { | 
|                     return GetBool(ChatBoolType.AreaVoice4G); | 
|                 } | 
|             case ChatInfoType.Team: | 
|                 if (netState == 2) | 
|                 { | 
|                     return GetBool(ChatBoolType.TeamVoiceWifi); | 
|                 } | 
|                 else | 
|                 { | 
|                     return GetBool(ChatBoolType.TeamVoice4G); | 
|                 } | 
|             case ChatInfoType.Fairy: | 
|                 if (netState == 2) | 
|                 { | 
|                     return GetBool(ChatBoolType.GradVoiceWifi); | 
|                 } | 
|                 else | 
|                 { | 
|                     return GetBool(ChatBoolType.GradVoice4G); | 
|                 } | 
|             case ChatInfoType.Friend: | 
|                 if (netState == 2) | 
|                 { | 
|                     return GetBool(ChatBoolType.PrivateChatVoiceWifi); | 
|                 } | 
|                 else | 
|                 { | 
|                     return GetBool(ChatBoolType.PrivatChatVoice4G); | 
|                 } | 
|             case ChatInfoType.CrossServer: | 
|                 return false; | 
|         } | 
|         return false; | 
|     } | 
| } |