Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 private static int ReloadXmlFile_config_broadcastinfos()
 {
     try
     {
         BroadcastInfoMgr.LoadBroadcastInfoItemList();
     }
     catch (Exception)
     {
         return(-1);
     }
     return(0);
 }
Esempio n. 3
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);
                }
            }
        }
Esempio n. 4
0
        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;
                }
            }
        }