#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package PlayerSealDemon  
 | 
#  
 | 
# @todo:·âħ̳  
 | 
# @author xdh  
 | 
# @date 2017-12-28 16:30  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ·âħ̳  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2017-12-28 16:30"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import GameWorld  
 | 
import PyDataManager  
 | 
import CommFunc  
 | 
import PyGameDataStruct  
 | 
  
 | 
## ÉÏÏß  
 | 
#  @param None  
 | 
#  @return None  
 | 
def OnPlayerLogin(curPlayer):  
 | 
    PyDataManager.GetSealDemonRecordManager().CheckSealDemonAward(curPlayer)  
 | 
    return  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
# ·âħ̳½á¹û¹ÜÀí  
 | 
class SealDemonManager(object):  
 | 
         
 | 
    def __init__(self):  
 | 
        self.SealDemonDict = {}     # {playerid:price, ...} PyGameDataStruct.tagDBPySealDemonRecord  
 | 
        return  
 | 
  
 | 
    def UpdateSealDemonRecord(self, playerID, lineid, rank):  
 | 
        sealDemonRecord = PyGameDataStruct.tagDBPySealDemonRecord()  
 | 
        sealDemonRecord.clear()  
 | 
        sealDemonRecord.PlayerID = playerID  
 | 
        sealDemonRecord.LineID = lineid  
 | 
        sealDemonRecord.Rank = rank  
 | 
        self.SealDemonDict[playerID] = sealDemonRecord  
 | 
          
 | 
        GameWorld.DebugLog("¸üзâħ̳¼Ç¼ PlayerID=%s,lineid=%s,rank=%s" % (playerID, lineid, rank))  
 | 
        return  
 | 
      
 | 
    def CheckSealDemonAward(self, curPlayer):  
 | 
        playerID = curPlayer.GetPlayerID()  
 | 
        if playerID not in self.SealDemonDict:  
 | 
            return  
 | 
        sealDemonRecord = self.SealDemonDict.pop(playerID)  
 | 
        result = str([sealDemonRecord.LineID, sealDemonRecord.Rank])  
 | 
        curPlayer.MapServer_QueryPlayerResult(0, 0, "SealDemonAward", result, len(result))  
 | 
        return  
 | 
      
 | 
      
 | 
    # ±£´æÊý¾Ý ´æÊý¾Ý¿âºÍrealtimebackup  
 | 
    def GetSaveData(self):  
 | 
        savaData = ""  
 | 
        cntData = ""  
 | 
        cnt = 0  
 | 
        for sealDemonRecord in self.SealDemonDict.values():  
 | 
            cnt += 1  
 | 
            savaData += sealDemonRecord.getBuffer()  
 | 
                  
 | 
        GameWorld.Log("SaveSealDemonRecord cnt :%s" % cnt)  
 | 
        return CommFunc.WriteDWORD(cntData, cnt) + savaData  
 | 
      
 | 
    # ´ÓÊý¾Ý¿âÔØÈëºÃÓÑÊý¾Ý  
 | 
    def LoadPyGameData(self, datas, pos, dataslen):  
 | 
        cnt, pos = CommFunc.ReadDWORD(datas, pos)  
 | 
        GameWorld.Log("LoadSealDemonRecord cnt :%s" % cnt)  
 | 
          
 | 
        self.SealDemonDict = {}  
 | 
          
 | 
        for _ in xrange(cnt):  
 | 
            data = PyGameDataStruct.tagDBPySealDemonRecord()  
 | 
            data.clear()  
 | 
            pos += data.readData(datas, pos, dataslen)  
 | 
            playerID = data.PlayerID  
 | 
            self.SealDemonDict[playerID] = data  
 | 
              
 | 
        return pos  
 |