#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
# @todo:   
 | 
#  
 | 
# @author: Alee  
 | 
# @date 2017-12-29 ÏÂÎç02:02:23  
 | 
# @version 1.0  
 | 
#  
 | 
# @note: ¹¹½¨¹¤¾ßÐèͬ²½´Ë±í  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
import CommFunc  
 | 
import logging  
 | 
# 1. ¹¹½¨±í  
 | 
  
 | 
          
 | 
class MapEventPoint():  
 | 
    def __init__(self):  
 | 
        #int    int    int    int    int    int    int    int    string    string    string  
 | 
        self.Key = 0      
 | 
        self.MapID = 0  
 | 
        self.NPCID = 0      
 | 
        self.IsShowInfo = 0  
 | 
        self.Colour = 0  
 | 
        self.LowLV = 0      
 | 
        self.HighestLV = 0      
 | 
        self.Defense = 0      
 | 
        self.Drop1 = ""      
 | 
        self.Drop2 = ""  
 | 
        self.EXP = ""     
 | 
          
 | 
        self.count = 12  
 | 
          
 | 
    def ReadFromList(self, curList):  
 | 
        self.Key = CommFunc.ToIntDef(curList[0])  
 | 
        self.MapID = CommFunc.ToIntDef(curList[1])  
 | 
        self.NPCID = CommFunc.ToIntDef(curList[2])  
 | 
        self.IsShowInfo = CommFunc.ToIntDef(curList[3])  
 | 
        self.Colour = CommFunc.ToIntDef(curList[4])  
 | 
        self.LowLV = CommFunc.ToIntDef(curList[5])  
 | 
        self.HighestLV = CommFunc.ToIntDef(curList[6])  
 | 
        self.Defense = CommFunc.ToIntDef(curList[7])  
 | 
        self.Drop1 = CommFunc.ToIntDef(curList[8])  
 | 
        self.Drop2 = CommFunc.ToIntDef(curList[9])  
 | 
        self.EXP = CommFunc.ToIntDef(curList[10])  
 | 
          
 | 
        return  
 | 
  
 | 
class NPCPoint():  
 | 
    def __init__(self):  
 | 
        self.NPCID = 0  
 | 
        self.MapID = 0  
 | 
        self.Point = None  
 | 
        return  
 | 
  
 | 
    def ReadFromList(self, curList):  
 | 
        self.NPCID = CommFunc.ToIntDef(curList[0])  
 | 
        self.MapID = CommFunc.ToIntDef(curList[1])  
 | 
        self.Point = eval(curList[2])  
 | 
          
 | 
class MapEventPointMgr():  
 | 
    def __init__(self):  
 | 
        self.__Table = []  
 | 
        self.__NPCPoint = {}  
 | 
          
 | 
    def InitTable(self, tablePath):  
 | 
        fileIO = open(tablePath, "r")  
 | 
        lines = fileIO.readlines()  
 | 
          
 | 
        linenum = 0  
 | 
        for line in lines:  
 | 
            linenum += 1  
 | 
            # 1.×Ö¶ÎÀàÐÍ 2.×Ö¶ÎÃû 3.×ֶα¸×¢  
 | 
            if linenum <= 3:  
 | 
                continue  
 | 
            classObj = MapEventPoint()  
 | 
            lineList = line.split('\t')  
 | 
            classObj.ReadFromList(lineList)  
 | 
              
 | 
            # Åųý·ÇÍÑ»ú¹ÒµØÍ¼  
 | 
            if classObj.MapID / 10000 != 1:  
 | 
                continue  
 | 
            self.__Table.append(classObj)  
 | 
              
 | 
  
 | 
              
 | 
    def InitPointType(self, tablePath):  
 | 
        fileIO = open(tablePath, "r")  
 | 
        lines = fileIO.readlines()  
 | 
          
 | 
        linenum = 0  
 | 
        for line in lines:  
 | 
            linenum += 1  
 | 
            # 1.×Ö¶ÎÀàÐÍ 2.×Ö¶ÎÃû 3.×ֶα¸×¢  
 | 
            if linenum <= 3:  
 | 
                continue  
 | 
            classObj = NPCPoint()  
 | 
            lineList = line.strip().split('\t')  
 | 
  
 | 
            classObj.ReadFromList(lineList)  
 | 
              
 | 
            self.__NPCPoint[classObj.NPCID] = classObj  
 | 
        return  
 | 
      
 | 
      
 | 
    def FindNPC(self, robot):  
 | 
        lv = robot.GetPlayerInfo().GetPlayerLV()  
 | 
          
 | 
        # ÒÔ·ÀÓùΪµÚÒ»Ìõ¼þ£¬È¡µ±Ç°µØÍ¼¹ÖÎïµÈ¼¶ÔÚÍæ¼ÒµÈ¼¶ÉÏÏÂ20¼¶µÄµØ·½  
 | 
        # ÒԵȼ¶HighestLVΪ±ê׼ȡ×î¸ß  
 | 
        maxlv = 0  
 | 
        pointNPCID = 0  
 | 
        for point in self.__Table:  
 | 
            if lv < point.LowLV:  
 | 
                continue  
 | 
            if point.MapID/10000 != 1:  
 | 
                continue  
 | 
              
 | 
            # È¡×î¸ßµÄ  
 | 
            if maxlv < point.LowLV:  
 | 
                maxlv = point.LowLV  
 | 
                pointNPCID = point.NPCID  
 | 
  
 | 
  
 | 
        npcPoint = self.__NPCPoint.get(pointNPCID, None)  
 | 
        if not npcPoint:  
 | 
            return  
 | 
          
 | 
        tjgPoint = [npcPoint.MapID, npcPoint.Point, npcPoint.NPCID]  
 | 
          
 | 
        logging.debug("¹Ò»úµã------%s"%str(tjgPoint))  
 | 
        robot.GetPlayerInfo().SetTJGPoint(tjgPoint)  
 | 
        return  
 | 
      
 | 
      
 | 
  
 | 
__gMapEventPointReader = None  
 | 
  
 | 
def ReadMapEventPoint( PyBaseRoot):  
 | 
    global __gMapEventPointReader  
 | 
    if not __gMapEventPointReader:  
 | 
        __gMapEventPointReader =  MapEventPointMgr()  
 | 
        __gMapEventPointReader.InitTable(PyBaseRoot + "Data\\MapEventPoint.txt")  
 | 
        __gMapEventPointReader.InitPointType(PyBaseRoot + "Data\\MonsterRefreshPoint.txt")  
 | 
          
 | 
def GetMapEventPoint():  
 | 
    global __gMapEventPointReader  
 | 
    return __gMapEventPointReader  
 |