#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package MergeBroadcast.py # ¿ç·þÈü·þÎñÆ÷¹ã²¥ # # @author wdb # @date 2012-10-31 16:50 # @version 1.1 # @note # @change: "2012-12-12 15:00" wdb ¿ç·þ¹ã²¥ÐÞ¸Ä #--------------------------------------------------------------------- """Version = 2012-12-12 15:00""" #--------------------------------------------------------------------- import IPY_GameServer import GameWorld import ChConfig #--------------------------------------------------------------------- # Òª¿ç·þ¹ã²¥µÄÐÅÏ¢ÄÚÈÝ g_broadcastMsgList= [] # ÖØ¸´¹ã²¥3´Î Def_MaxBroadcastCnt = 3 ## ¹ã²¥ÐÅÏ¢µ½×Ó·þÎñÆ÷ÉÏ # @param sendType ¹ã²¥ÀàÐÍ # @param infoDict ¹ã²¥ÐÅÏ¢×Öµä # @return None def SendBroadcastMerge(operType, mapID, dataDict, isRepeat=True): global g_broadcastMsgList sendDict = {'Oper':operType, 'MapID':mapID, 'Data':dataDict} GameWorld.Log("SendBroadcastMerge=>isRepeat:%s, sendDict%s"%(isRepeat, sendDict)) # ÐèÒª¼ÓÈëÖØ¸´¹ã²¥ÐÅÏ¢Áбí if isRepeat: g_broadcastMsgList.append((0, operType, mapID, dataDict)) # Ö±½Ó·¢ËÍ else: GameWorld.GetGameWorld().SendBroadcastMergeClient(str(sendDict)) return ## ʱÖÓµ÷Óô¦Àí # @param tick: ʱÖÓtick # @return None def OnBroadcastProccee(tick): global g_broadcastMsgList tempMsgList = [] #¼ä¸ôδµ½ if not GameWorld.SetWorldDictKey(ChConfig.TYPE_MergeBroadcastTick, tick): return # Òª¿ç·þ¹ã²¥µÄÐÅÏ¢ÄÚÈÝ for msgInfo in g_broadcastMsgList: broadcastCnt, operType, mapID, dataDict = msgInfo # ´ïµ½Öظ´¹ã²¥´ÎÊý if broadcastCnt >= Def_MaxBroadcastCnt: continue # ¹ã²¥ÐÅÏ¢µ½×Ó·þÎñÆ÷ÉÏ SendBroadcastMerge(operType, mapID, dataDict, False) # ¸üй㲥´ÎÊý tempMsgList.append((broadcastCnt + 1, operType, mapID, dataDict)) g_broadcastMsgList = tempMsgList[:] return