| #!/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  |