public static void LoadBroadcastInfoItemList() { XElement xml = null; string fileName = "Config/BroadcastInfos.xml"; try { xml = XElement.Load(Global.IsolateResPath(fileName)); if (null == xml) { throw new Exception(string.Format("加载系统xml配置文件:{0}, 失败。没有找到相关XML配置文件!", fileName)); } } catch (Exception) { throw new Exception(string.Format("加载系统xml配置文件:{0}, 失败。没有找到相关XML配置文件!", fileName)); } List <BroadcastInfoItem> broadcastInfoItemList = new List <BroadcastInfoItem>(); IEnumerable <XElement> nodes = xml.Elements("Infos").Elements <XElement>(); foreach (XElement node in nodes) { SystemXmlItem systemXmlItem = new SystemXmlItem { XMLNode = node }; BroadcastInfoMgr.ParseXmlItem(systemXmlItem, broadcastInfoItemList); } BroadcastInfoMgr.BroadcastInfoItemList = broadcastInfoItemList; }
private static int ReloadXmlFile_config_broadcastinfos() { try { BroadcastInfoMgr.LoadBroadcastInfoItemList(); } catch (Exception) { return(-1); } return(0); }
private static void ParseXmlItem(SystemXmlItem systemXmlItem, List <BroadcastInfoItem> broadcastInfoItemList) { int id = systemXmlItem.GetIntValue("ID", -1); int infoClass = systemXmlItem.GetIntValue("InfoClass", -1); int hintErrID = systemXmlItem.GetIntValue("HintErrID", -1); int timeType = systemXmlItem.GetIntValue("TimeType", -1); int kaiFuStartDay = systemXmlItem.GetIntValue("StartDay", -1); int kaiFuShowType = systemXmlItem.GetIntValue("ShowType", -1); string weekDays = systemXmlItem.GetStringValue("WeekDays"); string times = systemXmlItem.GetStringValue("Times"); string text = systemXmlItem.GetStringValue("Text"); string onlineNotice = systemXmlItem.GetStringValue("OnlineNotice"); int minZhuanSheng = systemXmlItem.GetIntValue("MinZhuanSheng", -1); int minLevel = systemXmlItem.GetIntValue("MinLevel", -1); if (string.IsNullOrEmpty(times)) { LogManager.WriteLog(LogTypes.Error, string.Format("解析广播配置表中的时间项失败, ID={0}", id), null, true); } else { BroadcastTimeItem[] broadcastTimeItemArray = BroadcastInfoMgr.ParseBroadcastTimeItems(times); if (null == broadcastTimeItemArray) { LogManager.WriteLog(LogTypes.Error, string.Format("解析广播配置表中的时间项为数组时失败, ID={0}", id), null, true); } else if (string.IsNullOrEmpty(text)) { LogManager.WriteLog(LogTypes.Error, string.Format("解析广播配置表中的时间项失败, ID={0}", id), null, true); } else { DateTimeRange[] onlineNoticeTimeRanges = Global.ParseDateTimeRangeStr(onlineNotice); BroadcastInfoItem broadcastInfoItem = new BroadcastInfoItem { ID = id, InfoClass = infoClass, HintErrID = hintErrID, TimeType = timeType, KaiFuStartDay = kaiFuStartDay, KaiFuShowType = kaiFuShowType, WeekDays = weekDays, Times = broadcastTimeItemArray, OnlineNoticeTimeRanges = onlineNoticeTimeRanges, Text = text.Replace(":", ""), MinZhuanSheng = minZhuanSheng, MinLevel = minLevel }; broadcastInfoItemList.Add(broadcastInfoItem); } } }
public static void ProcessBroadcastInfos() { DateTime now = TimeUtil.NowDateTime(); int weekDayID = (int)now.DayOfWeek; int day = now.DayOfYear; int hour = now.Hour; int minute = now.Minute; if (day != BroadcastInfoMgr.LastBroadcastDay) { BroadcastInfoMgr.LastBroadcastDay = day; BroadcastInfoMgr.LastBroadcastTimeItem.Hour = hour; BroadcastInfoMgr.LastBroadcastTimeItem.Minute = minute; } else if (hour != BroadcastInfoMgr.LastBroadcastTimeItem.Hour || minute != BroadcastInfoMgr.LastBroadcastTimeItem.Minute) { List <BroadcastInfoItem> broadcastInfoItemList = BroadcastInfoMgr.BroadcastInfoItemList; if (broadcastInfoItemList == null || broadcastInfoItemList.Count <= 0) { BroadcastInfoMgr.LastBroadcastDay = day; BroadcastInfoMgr.LastBroadcastTimeItem.Hour = hour; BroadcastInfoMgr.LastBroadcastTimeItem.Minute = minute; } else { for (int i = 0; i < broadcastInfoItemList.Count; i++) { if (BroadcastInfoMgr.CanBroadcast(broadcastInfoItemList[i], BroadcastInfoMgr.LastBroadcastTimeItem, weekDayID, hour, minute)) { if (broadcastInfoItemList[i].InfoClass <= 1) { Global.BroadcastRoleActionMsg(null, (broadcastInfoItemList[i].InfoClass == 0) ? RoleActionsMsgTypes.Bulletin : RoleActionsMsgTypes.HintMsg, broadcastInfoItemList[i].Text, false, GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlySysHint, broadcastInfoItemList[i].MinZhuanSheng, broadcastInfoItemList[i].MinLevel, 100, 100); } else if (3 == broadcastInfoItemList[i].InfoClass) { GameManager.ClientMgr.NotifyAllImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, null, broadcastInfoItemList[i].Text, GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox, Math.Max(broadcastInfoItemList[i].HintErrID, 0), broadcastInfoItemList[i].MinZhuanSheng, broadcastInfoItemList[i].MinLevel, 100, 100); } } } BroadcastInfoMgr.LastBroadcastDay = day; BroadcastInfoMgr.LastBroadcastTimeItem.Hour = hour; BroadcastInfoMgr.LastBroadcastTimeItem.Minute = minute; } } }