# -*- coding: GBK -*-
|
# ¶ÁÈ¡µØÍ¼ÇÐͼµã
|
# author: Alee
|
# Date: 2011.9.1
|
# history: 2011.9.1 Created
|
|
import string
|
import CommFunc
|
import binascii
|
import os
|
import logging
|
from ConfigurationReader import ConfigIniReader
|
|
DUMP_TRANSPORT = False
|
|
|
class tagTransportRefresh:
|
RefreshID = 0 # (DWORD RefreshID )
|
MapID = 0 # (WORD MapID )
|
PosX = 0 # (WORD PosX ) //×ø±ê
|
PosY = 0 # (WORD PosY )
|
Range = 0 # (WORD Range ) //·¶Î§
|
TargetMapID = 0 # (WORD TargetMapID ) //Ä¿±êµØÍ¼ID
|
TargetPosX = 0 # (WORD TargetPosX ) //Ä¿±ê×ø±ê
|
TargetPosY = 0 # (WORD TargetPosY )
|
count = 8
|
def __init__(self):
|
self.Clear()
|
|
return
|
def ReadData(self, _lpData, _pos=0, _Len=0):
|
self.Clear()
|
|
self.RefreshID, _pos = CommFunc.ReadDWORD(_lpData, _pos)
|
self.MapID, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
self.PosX, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
self.PosY, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
self.Range, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
self.TargetMapID, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
self.TargetPosX, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
self.TargetPosY, _pos = CommFunc.ReadWORD(_lpData, _pos)
|
|
if _Len != 0 and _pos != _Len:
|
logging.error("Error in tagTransportRefresh : %s "% binascii.b2a_hex(_lpData))
|
return 0
|
return _pos
|
|
def Clear(self):
|
self.RefreshID = 0
|
self.MapID = 0
|
self.PosX = 0
|
self.PosY = 0
|
self.Range = 0
|
self.TargetMapID = 0
|
self.TargetPosX = 0
|
self.TargetPosY = 0
|
self.count = 0
|
return
|
|
def GetLength(self):
|
length = 0
|
length += 4
|
length += 2
|
length += 2
|
length += 2
|
length += 2
|
length += 2
|
length += 2
|
length += 2
|
return length;
|
|
def GetBuffer(self):
|
data = ''
|
data = CommFunc.WriteDWORD(data, self.RefreshID)
|
data = CommFunc.WriteWORD(data, self.MapID)
|
data = CommFunc.WriteWORD(data, self.PosX)
|
data = CommFunc.WriteWORD(data, self.PosY)
|
data = CommFunc.WriteWORD(data, self.Range)
|
data = CommFunc.WriteWORD(data, self.TargetMapID)
|
data = CommFunc.WriteWORD(data, self.TargetPosX)
|
data = CommFunc.WriteWORD(data, self.TargetPosY)
|
return data
|
|
def ReadFromList(self, curList):
|
self.RefreshID = CommFunc.ToIntDef(curList[0])
|
self.MapID = CommFunc.ToIntDef(curList[1])
|
self.PosX = CommFunc.ToIntDef(curList[2])
|
self.PosY = CommFunc.ToIntDef(curList[3])
|
self.Range = CommFunc.ToIntDef(curList[4])
|
self.TargetMapID = CommFunc.ToIntDef(curList[5])
|
self.TargetPosX = CommFunc.ToIntDef(curList[6])
|
self.TargetPosY = CommFunc.ToIntDef(curList[7])
|
self.count = 8
|
return
|
|
def __str__(self):
|
DumpString = "Çл»µã¶¨Òå#tagTransportRefresh:"\
|
"RefreshID:%d,"\
|
"MapID:%d,"\
|
"PosX:%d,"\
|
"PosY:%d,"\
|
"Range:%d,"\
|
"TargetMapID:%d,"\
|
"TargetPosX:%d,"\
|
"TargetPosY:%d"\
|
%( \
|
self.RefreshID,\
|
self.MapID,\
|
self.PosX,\
|
self.PosY,\
|
self.Range,\
|
self.TargetMapID,\
|
self.TargetPosX,\
|
self.TargetPosY\
|
)
|
|
return DumpString
|
|
|
class TransportDataReader():
|
def __init__(self, PyBaseRoot, mapDataPath ):
|
self.__AllTransportData = {}
|
|
mapTransportPath = os.path.join( PyBaseRoot, mapDataPath,'maptransport.txt' )
|
f = file(mapTransportPath)
|
lines = f.readlines()
|
for line in lines:
|
if line.strip() == '':
|
continue
|
items = line.split('\t')
|
curData = tagTransportRefresh()
|
if len(items) != 8:
|
continue
|
curData.ReadFromList(items)
|
if self.__AllTransportData.has_key(curData.MapID) == False:
|
self.__AllTransportData[curData.MapID] = []
|
self.__AllTransportData[curData.MapID].append(curData)
|
|
def GetAllTransportData(self):
|
return self.__AllTransportData
|
|
def GetTransportDataByMapID(self, mapID):
|
if not self.__AllTransportData.has_key( mapID ):
|
return []
|
else:
|
return self.__AllTransportData[mapID]
|
|
def __str__(self):
|
data = "TransportData Dump:\n"
|
for mapID in self.__AllTransportData.keys():
|
for transData in self.__AllTransportData[mapID]:
|
data += str(transData)
|
data += "\n"
|
return data
|
|
|
__gTransportData = None
|
|
def ReadTransportData( PyBaseRoot ):
|
global __gTransportData
|
if not __gTransportData:
|
__gTransportData = TransportDataReader( PyBaseRoot,\
|
ConfigIniReader.GetConfig().GetMapFilePath())
|
if DUMP_TRANSPORT:
|
logging.debug( "%s", str(__gTransportData) )
|
|
|
def GetTransportData():
|
global __gTransportData
|
return __gTransportData
|
|