#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
  
 | 
##@package GameLogInfo  
 | 
# ·þÎñÆ÷¶ËÐÅÏ¢¼Ç¼  
 | 
#  
 | 
# @author Mark  
 | 
# @date 2010-4-28  
 | 
# @version 1.0  
 | 
#  
 | 
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ  
 | 
# VER = "2010-05-12 18:30" zhengyang Ìí¼Ó×¢ÊÍ  
 | 
#  
 | 
# Ä£¿éÏêϸ˵Ã÷  
 | 
#·þÎñÆ÷¶ËÐÅÏ¢¼Ç¼  
 | 
#---------------------------------------------------------------------  
 | 
#µ¼Èë  
 | 
import GameWorld  
 | 
import time  
 | 
#---------------------------------------------------------------------  
 | 
#È«¾Ö±äÁ¿  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
#---------------------------------------------------------------------  
 | 
#Â߼ʵÏÖ  
 | 
#===============================================================================  
 | 
# MapServer²ÎÊýͳ¼Æ(ÿ¸ömapServer¶ÀÁ¢¼Ç¼)  
 | 
# Ã¿ÈÕNPC´¦ÀíÂß¼´¦Àí×ܺÄʱms          'NPCLogicTime'  
 | 
# Ã¿ÈÕÈÎÎñ´¦ÀíÂß¼×ܺÄʱms             'MissionTime'  
 | 
# Ã¿ÈÕÍæ¼ÒÂß¼´¦Àí×ܺÄʱms             'PlayerLogicTime'   
 | 
# ÈÎÎñµÄÇëÇó´ÎÊý                         'MissionCount'  
 | 
#===============================================================================  
 | 
Def_LogInfo_NPCLogicTime = 'NPCLogicTime'  
 | 
Def_LogInfo_MissionTime = 'MissionTime'   
 | 
Def_LogInfo_PlayerLogicTime = 'PlayerLogicTime'  
 | 
Def_LogInfo_MissionCount = 'MissionCount'  
 | 
Def_LogInfo_PlayerSight = 'PlayerSightRefresh'           #Õâ¸öC++±£´æµÄ  
 | 
  
 | 
#×Ü±í£¬ÐèÒª¼Ç¼ËùÓеÄkey  
 | 
Def_LogInfo_Key_List = [   
 | 
                         Def_LogInfo_NPCLogicTime    , Def_LogInfo_MissionTime ,   
 | 
                         Def_LogInfo_PlayerLogicTime , Def_LogInfo_MissionCount,  
 | 
                         Def_LogInfo_PlayerSight     ,   
 | 
                         ]  
 | 
  
 | 
## »ñµÃ¼Ç¼¹ÜÀíÆ÷  
 | 
#  @param ÎÞ  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def GetLogInfoManager():  
 | 
    return GameWorld.GetGameWorld().GetDBMapServerInfoManager()  
 | 
  
 | 
## Ã¿ÈÕNPC´¦ÀíÂß¼´¦Àí×ܺÄʱms  
 | 
#  @param startClock Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def LogInfo_NPCLogicTime( startClock ):  
 | 
    return  
 | 
    __DoLogic_LogInfo_MS( Def_LogInfo_NPCLogicTime , startClock )  
 | 
    return  
 | 
  
 | 
## Ã¿ÈÕÈÎÎñ´¦ÀíÂß¼×ܺÄʱms  
 | 
#  @param startClock Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def LogInfo_MissionTime( startClock ):  
 | 
    return  
 | 
    __DoLogic_LogInfo_MS( Def_LogInfo_MissionTime , startClock )  
 | 
    return  
 | 
  
 | 
## Ã¿ÈÕÍæ¼ÒÂß¼´¦Àí×ܺÄʱms  
 | 
#  @param startClock Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def LogInfo_PlayerLogicTime( startClock ):  
 | 
    return  
 | 
    __DoLogic_LogInfo_MS( Def_LogInfo_PlayerLogicTime , startClock )  
 | 
    return  
 | 
  
 | 
## ÈÎÎñµÄÇëÇó´ÎÊý  
 | 
#  @param value ÇëÇó´ÎÊý  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def LogInfo_MissionCount( value ):  
 | 
    return  
 | 
    __DoLogic_LogInfo_Count( Def_LogInfo_MissionCount , value )  
 | 
    return  
 | 
  
 | 
## Ö´ÐмǼÂß¼,(ºÁÃë)  
 | 
#  @param key   
 | 
#  @param startClock Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __DoLogic_LogInfo_MS( key , startClock ):  
 | 
    lastClock = __GetLastClock( key , startClock )  
 | 
    __SaveLogInfo( key , lastClock )  
 | 
    return  
 | 
  
 | 
## Ö´ÐмǼÂß¼,(´ÎÊý)  
 | 
#  @param key   
 | 
#  @param value ´ÎÊý  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __DoLogic_LogInfo_Count( key , value ):  
 | 
    __SaveLogInfo( key , value )  
 | 
    return  
 | 
  
 | 
## »ñµÃ³ÖÐøÊ±¼ä  
 | 
#  @param key   
 | 
#  @param timeClock Ê±¼ä  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __GetLastClock( key , timeClock ):  
 | 
    lastClock = time.clock() - timeClock  
 | 
      
 | 
    if lastClock < 0 :  
 | 
        GameWorld.Log('###¼Ç¼key = %s ,  tick = %s , Òì³£'%( key , timeClock ))  
 | 
        return 0  
 | 
      
 | 
    #¼Ç¼ΪºÁÃë  
 | 
    return int( lastClock * 1000 )  
 | 
  
 | 
## Ö´ÐмǼÂß¼  
 | 
#  @param key   
 | 
#  @param addValue ¼Ç¼¸½¼ÓÖµ  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __SaveLogInfo( key , addValue ):  
 | 
    return  
 | 
    if addValue <= 0:  
 | 
        return  
 | 
      
 | 
    info = GetLogInfoManager().GetDBMapServerInfo( GameWorld.GetMap().GetMapID() , key )  
 | 
    info.SetValue( info.GetValue() + addValue )  
 | 
    return  
 | 
      
 | 
## Çå¿ÕËùÓмǼÐÅÏ¢  
 | 
#  @param ÎÞ   
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def ClearGameLogInfo():  
 | 
    #»ñµÃÐÅÏ¢¹ÜÀíÆ÷  
 | 
    infoManager = GetLogInfoManager()  
 | 
      
 | 
    for key in Def_LogInfo_Key_List:  
 | 
        __DoLogic_ClearGameLogInfo( key , infoManager )  
 | 
      
 | 
    #GameWorld.Log('SaveAndClearGameLogInfo_Success')      
 | 
    return  
 | 
  
 | 
## Çå¿ÕÓÎÏ·logÐÅÏ¢  
 | 
#  @param key  
 | 
#  @param infoManager log¹ÜÀíÆ÷  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def __DoLogic_ClearGameLogInfo( key , infoManager ):  
 | 
    info = infoManager.GetDBMapServerInfo( GameWorld.GetGameWorld().GetRealMapID() , key )  
 | 
    #Ïȱ£´æ  
 | 
    #info.DataServer_SaveInfo()  
 | 
    #ÔÚÇå¿Õ  
 | 
    info.SetValue( 0 )  
 | 
    return  
 |