| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package PlayerHorsePetBoss  | 
| #  | 
| # @todo:Æï³èboss¸±±¾  | 
| # @author xdh  | 
| # @date 2019-03-21  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: Æï³èboss¸±±¾  | 
| #  | 
| #---------------------------------------------------------------------  | 
| #"""Version = 2019-03-21 18:00"""  | 
| #---------------------------------------------------------------------  | 
|   | 
| import GameWorld  | 
| import ChPyNetSendPack  | 
| import NetPackCommon  | 
| import ShareDefine  | 
| import PlayerDBGSEvent  | 
| import PlayerControl  | 
|   | 
| import time  | 
|   | 
| Def_LineCnt = 2  | 
|   | 
| ## Íæ¼ÒµÇ¼  | 
| #  @param curPlayer Íæ¼ÒʵÀý  | 
| #  @return None  | 
| def OnLogin(curPlayer):  | 
|     if IsInHorsePetBoss():  | 
|         NotifyHorsePetBossState(curPlayer)  | 
|     return  | 
|   | 
| def OnHorsePetBossStateChange(isOpen):  | 
|     if isOpen:  | 
|         #±¾´Î¿ªÆôʱ¼ä¾àÀëÉϴλ÷ɱʱ¼ä³¬¹ý1СʱÔòÖØÖà  | 
|         isNotify = False  | 
|         curTime = int(time.time())  | 
|         for i in xrange(Def_LineCnt):  | 
|             lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%i)  | 
|             if abs(curTime-lastKillTime)> 3600:  | 
|                 PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%i, 0)  | 
|                 isNotify = True  | 
|         if isNotify:  | 
|             #֪ͨ  | 
|             NotifyHorsePetBossState()  | 
|     return  | 
|   | 
| def HorsePetBossKilled(lineID):  | 
|     if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%lineID):  | 
|         GameWorld.Log('¶àÆï³èBossÒѱ»»÷ɱ£¬²»¿ÉÖØ¸´£¡£¡lineID=%s'%lineID)  | 
|         return  | 
|     curTime = int(time.time())  | 
|     PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%lineID, curTime)  | 
|     GameWorld.Log('¶àÆï³èBoss±»»÷ɱ!!lineID=%s'%lineID)  | 
|     NotifyHorsePetBossState()  | 
|     return  | 
|   | 
| def NotifyHorsePetBossState(curPlayer=None):  | 
|     IsEnd = 0  | 
|     for i in xrange(Def_LineCnt):  | 
|         lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_HorsePetBossTime%i)  | 
|         if lastKillTime:  | 
|             IsEnd |=pow(2, i)  | 
|     bossInfo = ChPyNetSendPack.tagGCHorsePetBossInfo()  | 
|     bossInfo.IsEnd = IsEnd  | 
|       | 
|     if curPlayer == None:  | 
|         playerManager = GameWorld.GetPlayerManager()  | 
|         for i in xrange(playerManager.GetActivePlayerCount()):  | 
|             curPlayer = playerManager.GetActivePlayerAt(i)  | 
|             if curPlayer == None or not curPlayer.GetInitOK():  | 
|                 continue  | 
|             if PlayerControl.GetIsTJG(curPlayer):  | 
|                 continue  | 
|             NetPackCommon.SendFakePack(curPlayer, bossInfo)  | 
|     else:  | 
|         if PlayerControl.GetIsTJG(curPlayer):  | 
|             return  | 
|         NetPackCommon.SendFakePack(curPlayer, bossInfo)  | 
|     return  | 
|   | 
| #ÊÇ·ñÔÚÆï³èBOSS»î¶¯ÖÐ  | 
| def IsInHorsePetBoss():  | 
|     state = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_HorsePetBoss)  | 
|     return state  | 
|      |