#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package Player.PlayerCharm  
 | 
#  
 | 
# @todo:÷ÈÁ¦  
 | 
# @author hxp  
 | 
# @date 2021-12-03  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ÷ÈÁ¦  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2021-12-03 19:00"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import ChConfig  
 | 
import PlayerControl  
 | 
import IpyGameDataPY  
 | 
import ItemControler  
 | 
import GameWorld  
 | 
  
 | 
def OnPlayerLogin(curPlayer):  
 | 
      
 | 
    # ÖØÐÂÉèÖ㬴¥·¢ÉÏÏß֪ͨ  
 | 
    if PlayerControl.GetCharmLV(curPlayer):  
 | 
        PlayerControl.SetCharmLV(curPlayer, PlayerControl.GetCharmLV(curPlayer))  
 | 
          
 | 
    return  
 | 
  
 | 
def GameServer_DoLogic_Charm(curPlayer, msgData):  
 | 
      
 | 
    msgType = msgData[0]  
 | 
      
 | 
    ## ÷ÈÁ¦µÈ¼¶ÌáÉý  
 | 
    if msgType == "CharmLVUp":  
 | 
        totalCharm = msgData[1]  
 | 
        __DoCharmLVUp(curPlayer, totalCharm)  
 | 
          
 | 
    return  
 | 
  
 | 
def __DoCharmLVUp(curPlayer, totalCharm):  
 | 
      
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    charmLV = PlayerControl.GetCharmLV(curPlayer)  
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV)  
 | 
    if not ipyData:  
 | 
        return  
 | 
      
 | 
    if not ipyData.GetUpNeedCharm():  
 | 
        GameWorld.DebugLog("÷ÈÁ¦µÈ¼¶ÒÑÂú¼¶£¬ÎÞ·¨Éý¼¶! charmLV=%s" % charmLV, playerID)  
 | 
        return  
 | 
      
 | 
    if totalCharm < ipyData.GetUpNeedCharm():  
 | 
        GameWorld.DebugLog("÷ÈÁ¦Öµ²»×㣬ÎÞ·¨Éý¼¶! totalCharm=%s < %s, charmLV=%s" % (totalCharm, ipyData.GetUpNeedCharm(), charmLV), playerID)  
 | 
        return  
 | 
      
 | 
    charmLV += 1  
 | 
    nextLVIpyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV)  
 | 
    if not nextLVIpyData:  
 | 
        return  
 | 
    awardItemList = nextLVIpyData.GetLVAwardItemInfo()  
 | 
    GameWorld.DebugLog("÷ÈÁ¦µÈ¼¶Éý¼¶! charmLV=%s" % charmLV, playerID)  
 | 
    PlayerControl.SetCharmLV(curPlayer, charmLV)  
 | 
    ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList)  
 | 
    RefreshCharmAttr(curPlayer)  
 | 
    return  
 | 
  
 | 
def RefreshCharmAttr(curPlayer):  
 | 
    CalcCharmAttr(curPlayer)  
 | 
    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()  
 | 
    return  
 | 
  
 | 
def CalcCharmAttr(curPlayer):  
 | 
      
 | 
    allAttrList = [{} for _ in range(4)]  
 | 
      
 | 
    charmLV = PlayerControl.GetCharmLV(curPlayer)  
 | 
      
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("LoveCharm", charmLV)  
 | 
    if ipyData:  
 | 
        lvAttrTypeList = ipyData.GetLVAttrType()  
 | 
        lvAttrValueList = ipyData.GetLVAttrValue()  
 | 
        for i, attrID in enumerate(lvAttrTypeList):  
 | 
            attrValue = lvAttrValueList[i]  
 | 
            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)  
 | 
              
 | 
    # ±£´æ¼ÆËãÖµ  
 | 
    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Charm, allAttrList)  
 | 
    return  
 | 
  
 | 
  
 |