<?php

namespace loyalsoft;

/**
 * 操作码常量定义:
 * @version 2023.8.31 修改约定: cmdcode前两位为opecode. 参数传递过程中不单独传输opecode了.
 * @author jgao,gwang,cyzhao
 */
class CmdCode {
    //
    // <editor-fold defaultstate="collapsed" desc="支付操作码 - 88xx">

    /**
     * 领取首付礼包
     */
    const cmd_pay_getfirstpaygift = 8802;

    // <editor-fold defaultstate="collapsed" desc="移动支付">
    //---------- 移动端 支付API 操作码 ----

    /**
     * 【移动端】购买物品
     */
    const cmd_mpay_pay = 8807;

    /**
     * 【移动端】查询游戏币余额
     */
    const cmd_mpay_get_balance = 8808;

    /**
     * 【移动端】购买神秘商城物品
     */
    const cmd_mpay_buyDynamic = 8809;

    /**
     * 【移动端】刷新神秘商城物品
     */
    const cmd_mpay_getDynamic = 8810;

    /**
     *  【移动端】自助检查异常订单
     */
    const cmd_mpay_selfCheckOrders = 8811;

    /**
     *  【移动端】查询付费记录
     */
    const cmd_mpay_getPayRecords = 8812;

    /**
     * 临时--正式的要根据具体功能实现
     */
    const cmd_mpay_PayDeliverGoods = 8813;

    /**
     * 充值领取奖励
     */
    const cmd_mpay_UserRechargeDrawPrize = 8814;

    /**
     * 新的首冲功能
     */
    const cmd_mpay_NewFirstRecharge = 8815;

//
//
// </editor-fold>
//
// </editor-fold>
    //
    // <editor-fold defaultstate="collapsed" desc="用户操作码 - 60xx">

    /**
     * 获取分区列表
     */
    const cmd_user_getzonelist = 6000;

    /**
     * 玩家登录指令/新玩家直接注册并登录
     */
    const cmd_user_loginuserinfo = 6001;

    /**
     * 常量信息指令
     */
    const cmd_user_gameconstinfo = 6002;

    /**
     *  走完片头后给值 1
     */
    const cmd_user_setAnimation = 6004;

    /**
     * 替换头像
     */
    const cmd_user_replaceHeadImg = 6005;

    /**
     * 删除账号
     */
    const cmd_user_delUserUid = 6006;

    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="活动操作码 - 61xx">

    /**
     * 7日奖励领取
     */
    const cmd_active_day7_drawreward = 6101;
    
    /**
     * 
     */
    const cmd_active_drawPackageByCode = 6102;

    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="任务操作码 - 62xx">

    /**
     * [6201] 任务 - 拉取最新任务信息
     */
    const cmd_task_getInfo = 6201;

    /**
     * [6202] 任务 - 领取任务奖励
     */
    const cmd_task_getReward = 6202;

    /**
     * 领取成就奖励
     */
    const cmd_task_getAchieveReward = 6203;

    /**
     * 领取活动任务奖励
     */
    const cmd_task_receiveActiveTaskReward = 6204;

    /**
     * 领取活跃点宝箱奖励
     */
    const cmd_task_receiveActivePointBoxReward = 6205;
    // </editor-fold>
    //
    // <editor-fold defaultstate="collapsed" desc="背包操作码 - 64xx">

    const cmd_store_put = 6401;

    /**
     * 装备
     */
    const cmd_store_gemSet = 6402;
    //const cmd_store_equip = 6402;

    /**
     * 卸下装备
     */
    const cmd_store_gemRemove = 6403;
    //const cmd_store_RemoveEquip = 6403;

    /**
     * 装备升级
     */
    const cmd_store_equipUpgrade = 6404;

    /**
     * 一键升级
     */
    const cmd_store_equipUpgrade_MaxLv = 6405;

    /**
     * 合成
     */
    const store_gemCompose = 6406;

    /**
     * 消耗体力
     */
    const store_comsumeTili = 6407;

    /**
     * 切换装备分页
     */
    const store_switchEquipPag = 6408;

    /**
     * 宝石开锁解锁
     */
    const store_gemLockState = 6409;

    /**
     * 移除装备可以升级的提示
     */
    const store_equip_removeEquipUpgradeTip = 6410;

    /**
     * 移除新宝石提示
     */
    const store_equip_removeNewGemTip = 6411;

    /**
     * 所有装备的一键升级
     */
    const store_allEquipUpgrade = 6412;

    /**
     * 洗练
     */
    const store_gemXiLian = 6413;
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="商城操作码 - 65xx">

    /**
     * 商城购买东西
     */
    const cmd_shop_BuyGift = 6501;

    /**
     * 购买体力
     */
    const cmd_shop_BuyTili = 6502;
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="英雄模块操作码 - 66xx">
    //

    /**
     * 切换英雄
     */
    const hero_swith = 6601;

    /**
     * 解锁英雄
     */
    const hero_unlock = 6602;

    /**
     * 角色升星
     */
    const hero_strengthenStar = 6603;
    //
// </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="邮件操作码 - 67xx">

    const cmd_email_questEmailList = 6701;

    /**
     * [6702]读取/打开一封邮件
     */
    const cmd_email_readAEmail = 6702;

    /**
     * [6703] 邮件 - 领取附件
     */
    const cmd_email_DrawReward = 6703;

    /**
     * [6704] 邮件 - 领取全部附件奖励
     */
    const cmd_email_DrawAllRewards = 6704;

    /**
     * [6705] 删除邮件——所有已读(不包含已读未领取状态的邮件)
     */
    const cmd_mail_delMailReaded = 6705;

    /**
     * [6706] 请求邮件未处理的数量(未打开邮件时检查邮件图标应该提示啥)
     */
    const cmd_mail_notReadMailNum = 6706;

    /**
     * [6707] 发送测试用道具
     */
    const cmd_mail_sendTestItems = 6707;
    // </editor-fold>
    //
    // <editor-fold defaultstate="collapsed" desc="战斗操作码 - 68xx">

    /**
     * 主线剧情: 奖励结算
     */
    const fight_settle = 6801;

    /**
     * 章节宝箱的领取
     */
    const fight_PassGateTsPrizeReceive = 6802;

    /**
     * 主线关卡: 选择
     */
    const fight_selectGate = 6803;

    /**
     * 挑战关卡: 领取奖励
     */
    const fight_gateChallengeRewards = 6804;

    /**
     * 挑战关卡: 复活花费
     */
    const fihgt_reliveCost = 6805;

    /**
     * 主线剧情关卡: 回存(剧情已播放)记录
     */
    const fight_plotSav = 6806;

    /**
     * 扫荡
     */
    const fight_sweep = 6807;

    /**
     * 主线关卡: 开始挑战
     */
    const fight_startFight = 6808;

    /**
     * 挑战关卡: 刷新初始技能
     */
    const fight_tower_RefreshSkills = 6809;

    /**
     * 挑战关卡: 更新锁定技能列表
     */
    const fight_tower_updatelocklist = 6810;

    /*
     * 获取主线关卡排行榜
     */
    const fight_rankInfo = 6811;

    /**
     * 获取玩家的装备信息
     */
    const fight_rank_uidEquipInfo = 6812;

    /**
     * 荣誉榜信息
     */
    const fight_rank_GetMainGateRankRewardInfo = 6813;

    /*
     * 战力榜荣誉信息
     */
    const fight_rank_GetFightPowerRankRewardInfo = 6814;

    /**
     * 领取通关荣誉榜奖励
     */
    const fight_rank_ReceiveRankReward_MainGate = 6815;

    /*
     *
     */
    const fight_rank_ReceiveRankReward_FightPower = 6816;

    /**
     * 是否存在未领取的荣誉榜奖励
     */
    const fight_rank_IsExistRankReward = 6817;

    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="系统操作码 - 69xx">
    
    /**
     * 6901 心跳
     */
    const cmd_system_clienttick = 6901;


    /**
     * 拉取系统广播消息
     */
    const cmd_system_getsysmessage = 6902;
    
    
    
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="    反射方法    ">

    /**
     * 辅助方法, 将所有错误码信息转换到CSV文本中.
     * 用法: 先在本文件中用ctrl + H 全部替换掉 'c onst ' -> 's tatic $'
     *       然后再调用本方法,即可在同目录下生成ErrCode.txt, 里面包含了所需信息.
     * @throws \Exception
     * @author gwang
     */
    static function L() {
        $class = new \ReflectionClass(__CLASS__);                               # 建立这个类的反射对象
        $properties = $class->getProperties(\ReflectionProperty::IS_STATIC);    # 拉取所有静态属性
        $fileName = __DIR__ . "/" . str_replace('\\', '.', __CLASS__) . ".txt"; # 输出文件名
        $fd = fopen($fileName, "w");
        if (false === $fd) {                                                    # 打开文件失败
            throw new \Exception("打开$fileName 失败");
        }
        foreach ($properties as &$p) {
            $d = preg_replace('/[\*|\/|\s+]/', '', $p->getDocComment());        # 处理下注释
            $type = (strpos($p->getName(), 'err') === false ? 0 : 1);           # errorType: 0 继续, 1 重启
            $n = fputs($fd, $p->getName() . ";" . $p->getValue() . ";$type;$d" . PHP_EOL);  # 写入文件
            if (false === $n) {                                                 # 写入时失败
                throw new Exception("写入$fileName 时失败");
            }
        }
        fclose($fd);
    }

// </editor-fold>
}
