<?php

namespace loyalsoft;

/**
 * 玩家基本信息
 * @author gwang(wanggangzero@qq.com)
 */
class Info_UserBase extends Object_ext {

    /**
     * 第一次登录时间
     * @var int
     */
    public $firstLogin;

    /**
     * 上次登录时间
     * @var int
     */
    public $lastLogin;

    /**
     * 上次活动时间
     * @var int
     */
    public $lastSaveTs;

    /**
     * @var int 当前等级
     */
    public $level;

    /**
     * @var string 昵称
     */
    public $name;

    /**
     * @var string 头像
     */
    public $headImg;

    /**
     * @var int 头像框Id
     */
    public $imgBorderId = 0;

    /**
     * @var string 形象(龙骨)
     */
    public $img;

    /**
     * @var int 金币
     */
    public $gold;

    /**
     * 钻石
     * @var int
     */
    public $cash;

    /**
     * 体力值
     * @var int
     */
    public $tili = 120;

    /**
     * 当前经验
     */
    public $xp = 0;

    /**
     * 升级经验
     * @var type
     */
    public $maxXp = 0;
    
    /**
     * @var int 历史充值总金额(单位:分)
     */
    public $charge_amt = 0;
    
    /**
     * 新解锁的头像框
     * @var type
     */
    #[ArrayType]
    public $headImgFrameList = array();

    public function initialize() {
//        my_Assert(GameConfig::primordial_data(), "找不到账号初始化数据");         # 防御
//        $this->gold = GameConfig::primordial_data()->User_Gold;
//        $this->cash = GameConfig::primordial_data()->User_Cash;
//        $this->xp = GameConfig::primordial_data()->User_XP;
//        $this->tili = GameConfig::globalsettings()->TiliMaxVal;                 # 最大体力
//        $this->maxXp = 0;
//        $this->level = 1;
//        $this->name = '步惊云';
//        $this->spar = 0;
//        $this->headImg = GameConfig::primordial_data()->User_head;
//        $this->img = GameConfig::primordial_data()->User_img;
    }

    // <editor-fold defaultstate="collapsed" desc="  方法  ">
    //

    /**
     * 给玩家增加体力
     * @param int $amt
     */
    function Add_tili($amt) {
        my_Assert($amt >= 0, "体力amt小于0");
        //ActiveProc::ChangeTili($amt);
    }

    /**
     * 用户获得金币
     * @param int $amt
     */
    function Add_Gold($amt, $mask = 0) {
        my_Assert($amt >= 0, "参数为负");

        $this->gold += $amt;
    }

    /**
     * 扣除玩家金币
     * @param int $amt
     * @return boolean true:成功, false:金币不足
     */
    function Consume_Gold($amt) {
        if ($amt > 0) {
            if ($this->gold - $amt >= 0) {               
                $this->gold -= $amt;
                return true;
            }
        }
        return false;
    }

    /**
     * 增加用户钻石
     * @param type $amt
     */
    function Add_Cash($amt) {
        my_Assert($amt >= 0, "amt值为负");

        $this->cash += $amt;
    }

    /**
     * 扣除玩家钻石
     * @param int $amt
     * @return bool 成功与否
     */
    function Consume_Cash($amt) {
        if ($amt >= 0) {
            if ($this->cash - $amt >= 0) {             
                $this->cash -= $amt;
                return true;
            }
        }
        return false;
    }   

    /**
     * 用户获得经验值
     * @param int $amt
     */
    function Add_Exp($amt) {
//        my_Assert($amt >= 0, "amt值为负");
//        $cfgLVs = GameConfig::playerlevel();
//     
//        $this->xp += $amt;
//        $initLevel = $curLevel = $this->level;
//        $nextLevel = $curLevel + 1;
//        while ($this->xp >= $cfgLVs->$nextLevel->xp_need) {                     # 超过升级所需经验
//            if ($this->level < glc()->Game_MaxPlayerLevel) {                    # 如果未到达最大等级
//                $this->level++;
//                $this->xp -= $cfgLVs->$nextLevel->xp_need;
//                $curLevel = $this->level;
//                $nextLevel = $curLevel + 1;
//                my_Assert(CommUtil::isPropertyExists($cfgLVs, $nextLevel), ErrCode::err_const_no); // "取英雄升级常量数据失败." . $nextLevel . "级");
//                $this->maxXp = $cfgLVs->$nextLevel->xp_need;
////                StatProc::UserLevel($nowlv);                                  # 等级统计
//            } else {                                                            # 如果已到达最大等级则仅补齐缺失的经验即可
//                $this->xp = $this->maxXp;                                       # 经验不能超过最大值
//                break;
//            }
//        }
//        if ($this->level != $initLevel) {                                       # 插入玩家升级的系统消息
//           
//        }
    }

    //
// </editor-fold>
}
