#!/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, 1)  
 | 
    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  
 | 
     
 |