#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#  
 | 
##@package E:/GameSVN/U3DGame/ProjectSServer/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py  
 | 
# @todo:   
 | 
#  
 | 
# @author: Alee  
 | 
# @date 2017-10-24 ÏÂÎç07:49:45  
 | 
# @version 1.0  
 | 
#  
 | 
# @note:   
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
import ShareDefine  
 | 
import ChConfig  
 | 
import IPY_GameWorld  
 | 
  
 | 
# ¹ØÓÚѪÁ¿µÄº¯ÊýÕâÀïÖ»°ü×°×î¼òµ¥µÄ³¬DWORD´¦Àí  
 | 
  
 | 
def GetMaxHP(gameObj):  
 | 
    if not hasattr(gameObj, "GetMaxHPEx"):  
 | 
        return gameObj.GetMaxHP()  
 | 
      
 | 
    else:  
 | 
        return gameObj.GetMaxHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetMaxHP()  
 | 
  
 | 
  
 | 
def SetMaxHP(gameObj, value):  
 | 
    if not hasattr(gameObj, "SetMaxHPEx"):  
 | 
        gameObj.SetMaxHP(value)  
 | 
      
 | 
    else:  
 | 
        gameObj.SetMaxHPEx(value/ShareDefine.Def_PerPointValue)  
 | 
        gameObj.SetMaxHP(value%ShareDefine.Def_PerPointValue)  
 | 
  
 | 
  
 | 
def GetHP(gameObj):  
 | 
    if not hasattr(gameObj, "GetHPEx"):  
 | 
        return gameObj.GetHP()  
 | 
      
 | 
    else:  
 | 
        return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP()  
 | 
  
 | 
  
 | 
def SetHP(gameObj, value, isNotify=True):  
 | 
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:  
 | 
        gameObj.SetHP(value, isNotify)  
 | 
    else:  
 | 
        gameObj.SetHPEx(value/ShareDefine.Def_PerPointValue)  
 | 
        gameObj.SetHP(value%ShareDefine.Def_PerPointValue)  
 | 
          
 | 
          
 | 
## ÉèÖÃbuff״̬(½Å±¾×Ô¶¨Òåö¾Ù)  
 | 
#  @param pyState ×´Ì¬  
 | 
#  @param isTrue ÊÇ·ñÉèÖøÃ״̬  
 | 
#  @return None  
 | 
def SetPyPlayerState(gameObj, pyState, isTrue):  
 | 
    if pyState not in ChConfig.Def_PlayerStateList:  
 | 
        return  
 | 
      
 | 
    curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)  
 | 
    if isTrue:  
 | 
        updState = curState | pow(2, pyState)  
 | 
    else:  
 | 
        if curState & pow(2, pyState) == 0:  
 | 
            return  
 | 
        else:  
 | 
            updState = curState ^ pow(2, pyState)  
 | 
  
 | 
      
 | 
    #GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s"   
 | 
    #                   % (pyState, isTrue, curState, updState))  
 | 
    gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState)  
 | 
    return  
 | 
  
 | 
## »ñÈ¡buff״̬(½Å±¾×Ô¶¨Òåö¾Ù)  
 | 
#  @param pyState ×´Ì¬  
 | 
#  @return ÊÇ·ñ¸Ã״̬  
 | 
#  @remarks ¸Ã״̬Ϊbuff¶ÔÓ¦µÄ×Ô¶¨Òå״̬Ч¹û  
 | 
#  Ä¿Ç°µ±Ä¿±êÉíÉ϶à¸öbuff¶¼ÓÐͬһЧ¹ûʱ(È綨Éí)£¬ÔÚÒ»¸öbuffÏûʧʱ»á½â³ý¸Ã״̬  
 | 
#  ¹Ê¸Ã״̬±ê¼Ç½öΪһ¸ö·Ç¾«È·µÄ±ê¼Ç£¬Ó¦ÓÃÖÐÇë×¢Ò⣡£¡£¡(µ±ÇÒ½öµ±¶à¸öbuffÓÐͬһ¸öЧ¹ûʱ»áÌáǰ½áÊø¸Ã״̬)  
 | 
def GetPyPlayerState(gameObj, pyState):  
 | 
    curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)  
 | 
      
 | 
    state = curState & pow(2, pyState)   
 | 
    return state  
 | 
  
 | 
  
 | 
def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer)  
 | 
def SetPetDamPer(gameObj, value):   
 | 
    gameObj.SetDict(ChConfig.Def_PlayerKey_AttrPetDamPer, value)  
 | 
    if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer:  
 | 
        gameObj.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PetDamPer, value, False)  
 |