<?php
////////////////////
 // 由CodeGenerator创建。
 // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
 // author： gwang 
 // 日期: 2024-06-20 17:10:35
////////////////////

namespace loyalsoft;

/**
 * 常量配置数据 
 */
class GameConfig {
// <editor-fold defaultstate="collapsed" desc="  基础代码 ">    
    /**
     * 是否启用codegen 
     */
    private static function isCG()  {
        return defined('CodeGen_Enabled') && CodeGen_Enabled; 
    }
    /**
     * @var bool 分区是否使用独立的常量配置数据
     */
    private static $useZoneId = false;
    /**
     * 追加分区列表字符串
     * @return string
     */
    private static function zoneid()
    {
        global $zoneid;
        return self::$useZoneId ? "-zone$zoneid" : "";
    }
	
    /**
     * @return ClientVersion
     */
    private static function CV() {
        return req() ? req()->CV . '-' : "";
    }

    /**
     * 初始化指定变量, 非null的情况下直接跳出
     * 可能从文件中或者redis中获取原始数据对变量进行初始化
     * @param mixed $a 变量
     * @param string $modelName 用来初始化变量的资源名称
     * @param bool $isHash 数据是否采用hash结构(否:普通字符串)
     */
    static private function initValue(&$a, $modelName, $isHash = true) {
        $key = 'gamecfg-' . self::CV() . $modelName . self::zoneid();
        if (is_null($a)) {
            if (self::isCG()) {
                $a = include $key . '.php';
                if ($isHash) {
                    $para = is_array($a) ? $a : (array) $a;                     # 转关联数组
                    foreach ($para as $name => &$value) {
                        $value = JsonUtil::decode($value);                      # 取参数中的或者默认值
                    }
                    $a = arr2obj($para);
                }
            } else {
                $a = $isHash ? gMem()->hgetall($key) : gMem()->get($key);
            }
        }
        return $a;
    }

    /**
     * 获取hash结构的一个item
     * @param string $modelName 模块名称
     * @param mixed/string/int $itemId 索引
     * @return mixed
     */
    private static function get_hash_item($modelName, $itemId) {
        if (self::isCG()) {
            $data = self::$modelName();
            if (property_exists($data, $itemId)) {
                return $data->$itemId;
            }
        } else {
            $key = 'gamecfg-' . self::CV() . $modelName . self::zoneid();
            return gMem()->hget($key, $itemId);
        }
        return null;
    }
// </editor-fold>
    /**
    * 全局参数
    * @return \globalsettings
    */
    public static function globalsettings()
    { 
        static $a = null; 
        return self::initValue($a, 'globalsettings');
    }
    /**
    * 停服计划
    * @return \service_schedule
    */
    public static function service_schedule()
    { 
        static $a = null; 
        return self::initValue($a, 'service_schedule');
    }
    /**
    * @return \sm_service_schedule service_schedule item数据 
    */
    public static function service_schedule_getItem($itemid)
    { 
        return self::get_hash_item('service_schedule', $itemid);
    }
    /**
    * 道具表
    * @return \item
    */
    public static function item()
    { 
        static $a = null; 
        return self::initValue($a, 'item');
    }
    /**
    * @return \sm_item item item数据 
    */
    public static function item_getItem($itemid)
    { 
        return self::get_hash_item('item', $itemid);
    }
    /**
    * 系统邮件
    * @return \sysmail
    */
    public static function sysmail()
    { 
        static $a = null; 
        return self::initValue($a, 'sysmail');
    }
    /**
    * @return \sm_sysmail sysmail item数据 
    */
    public static function sysmail_getItem($itemid)
    { 
        return self::get_hash_item('sysmail', $itemid);
    }
    /**
    * 客户端版本信息
    * @return \clientVersionHistory
    */
    public static function clientVersionHistory()
    { 
        static $a = null; 
        return self::initValue($a, 'clientVersionHistory');
    }
    /**
    * @return \sm_clientVersionHistory clientVersionHistory item数据 
    */
    public static function clientVersionHistory_getItem($itemid)
    { 
        return self::get_hash_item('clientVersionHistory', $itemid);
    }
    /**
    * 错误信息表
    * @return \errmsg
    */
    public static function errmsg()
    { 
        static $a = null; 
        return self::initValue($a, 'errmsg');
    }
    /**
    * @return \sm_errmsg errmsg item数据 
    */
    public static function errmsg_getItem($itemid)
    { 
        return self::get_hash_item('errmsg', $itemid);
    }
    /**
    * 战斗: 波次表
    * @return \waves
    */
    public static function waves()
    { 
        static $a = null; 
        return self::initValue($a, 'waves');
    }
    /**
    * @return \sm_waves waves itemArray 
    */
    public static function waves_getItemArray($key)
    { 
        return self::get_hash_item('waves', $key);
    }
    /**
    * 活动: 七日签到
    * @return \activity_day7
    */
    public static function activity_day7()
    { 
        static $a = null; 
        return self::initValue($a, 'activity_day7');
    }
    /**
    * @return \sm_activity_day7 activity_day7 item数据 
    */
    public static function activity_day7_getItem($itemid)
    { 
        return self::get_hash_item('activity_day7', $itemid);
    }
    /**
    * 章节表
    * @return \gate
    */
    public static function gate()
    { 
        static $a = null; 
        return self::initValue($a, 'gate');
    }
    /**
    * @return \sm_gate gate item数据 
    */
    public static function gate_getItem($itemid)
    { 
        return self::get_hash_item('gate', $itemid);
    }
    /**
    * 角色
    * @return \hero
    */
    public static function hero()
    { 
        static $a = null; 
        return self::initValue($a, 'hero');
    }
    /**
    * @return \sm_hero hero item数据 
    */
    public static function hero_getItem($itemid)
    { 
        return self::get_hash_item('hero', $itemid);
    }
    /**
    * 装备表
    * @return \equip
    */
    public static function equip()
    { 
        static $a = null; 
        return self::initValue($a, 'equip');
    }
    /**
    * @return \sm_equip equip item数据 
    */
    public static function equip_getItem($itemid)
    { 
        return self::get_hash_item('equip', $itemid);
    }
    /**
    * 装备升级表
    * @return \equip_levelupgrade
    */
    public static function equip_levelupgrade()
    { 
        static $a = null; 
        return self::initValue($a, 'equip_levelupgrade');
    }
    /**
    * @return \sm_equip_levelupgrade equip_levelupgrade item数据 
    */
    public static function equip_levelupgrade_getItem($itemid)
    { 
        return self::get_hash_item('equip_levelupgrade', $itemid);
    }
    /**
    * 章节礼包表
    * @return \shop_gategift
    */
    public static function shop_gategift()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_gategift');
    }
    /**
    * @return \sm_shop_gategift shop_gategift item数据 
    */
    public static function shop_gategift_getItem($itemid)
    { 
        return self::get_hash_item('shop_gategift', $itemid);
    }
    /**
    * 每日商店
    * @return \shop_daily
    */
    public static function shop_daily()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_daily');
    }
    /**
    * @return \sm_shop_daily shop_daily item数据 
    */
    public static function shop_daily_getItem($itemid)
    { 
        return self::get_hash_item('shop_daily', $itemid);
    }
    /**
    * 钻石商店
    * @return \shop_cash
    */
    public static function shop_cash()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_cash');
    }
    /**
    * @return \sm_shop_cash shop_cash item数据 
    */
    public static function shop_cash_getItem($itemid)
    { 
        return self::get_hash_item('shop_cash', $itemid);
    }
    /**
    * 金币商店
    * @return \shop_gold
    */
    public static function shop_gold()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_gold');
    }
    /**
    * @return \sm_shop_gold shop_gold item数据 
    */
    public static function shop_gold_getItem($itemid)
    { 
        return self::get_hash_item('shop_gold', $itemid);
    }
    /**
    * 商城供给表-应该是废弃了
    * @return \shop_supply
    */
    public static function shop_supply()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_supply');
    }
    /**
    * @return \sm_shop_supply shop_supply item数据 
    */
    public static function shop_supply_getItem($itemid)
    { 
        return self::get_hash_item('shop_supply', $itemid);
    }
    /**
    * 词条配置表
    * @return \predicate
    */
    public static function predicate()
    { 
        static $a = null; 
        return self::initValue($a, 'predicate');
    }
    /**
    * @return \sm_predicate predicate item数据 
    */
    public static function predicate_getItem($itemid)
    { 
        return self::get_hash_item('predicate', $itemid);
    }
    /**
    * 商城军备
    * @return \shop_junbei
    */
    public static function shop_junbei()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_junbei');
    }
    /**
    * @return \sm_shop_junbei shop_junbei item数据 
    */
    public static function shop_junbei_getItem($itemid)
    { 
        return self::get_hash_item('shop_junbei', $itemid);
    }
    /**
    * 进化表
    * @return \evolve
    */
    public static function evolve()
    { 
        static $a = null; 
        return self::initValue($a, 'evolve');
    }
    /**
    * @return \sm_evolve evolve item数据 
    */
    public static function evolve_getItem($itemid)
    { 
        return self::get_hash_item('evolve', $itemid);
    }
    /**
    * 7日签到累计
    * @return \active_day7_accumulate
    */
    public static function active_day7_accumulate()
    { 
        static $a = null; 
        return self::initValue($a, 'active_day7_accumulate');
    }
    /**
    * @return \sm_active_day7_accumulate active_day7_accumulate item数据 
    */
    public static function active_day7_accumulate_getItem($itemid)
    { 
        return self::get_hash_item('active_day7_accumulate', $itemid);
    }
    /**
    * 宝石表
    * @return \gem
    */
    public static function gem()
    { 
        static $a = null; 
        return self::initValue($a, 'gem');
    }
    /**
    * @return \sm_gem gem item数据 
    */
    public static function gem_getItem($itemid)
    { 
        return self::get_hash_item('gem', $itemid);
    }
    /**
    * 秘宝表
    * @return \gate_sbox
    */
    public static function gate_sbox()
    { 
        static $a = null; 
        return self::initValue($a, 'gate_sbox');
    }
    /**
    * @return \sm_gate_sbox gate_sbox itemArray 
    */
    public static function gate_sbox_getItemArray($key)
    { 
        return self::get_hash_item('gate_sbox', $key);
    }
    /**
    * 最新的成就
    * @return \achieve_new
    */
    public static function achieve_new()
    { 
        static $a = null; 
        return self::initValue($a, 'achieve_new');
    }
    /**
    * @return \sm_achieve_new achieve_new item数据 
    */
    public static function achieve_new_getItem($itemid)
    { 
        return self::get_hash_item('achieve_new', $itemid);
    }
    /**
    * 人物属性
    * @return \heroattr
    */
    public static function heroattr()
    { 
        static $a = null; 
        return self::initValue($a, 'heroattr');
    }
    /**
    * @return \sm_heroattr heroattr item数据 
    */
    public static function heroattr_getItem($itemid)
    { 
        return self::get_hash_item('heroattr', $itemid);
    }
    /**
    * 剧情对话
    * @return \plots
    */
    public static function plots()
    { 
        static $a = null; 
        return self::initValue($a, 'plots');
    }
    /**
    * @return \sm_plots plots item数据 
    */
    public static function plots_getItem($itemid)
    { 
        return self::get_hash_item('plots', $itemid);
    }
    /**
    * 商城宝箱表
    * @return \shop_box
    */
    public static function shop_box()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_box');
    }
    /**
    * @return \sm_shop_box shop_box item数据 
    */
    public static function shop_box_getItem($itemid)
    { 
        return self::get_hash_item('shop_box', $itemid);
    }
    /**
    * 商城月卡
    * @return \shop_monthcard
    */
    public static function shop_monthcard()
    { 
        static $a = null; 
        return self::initValue($a, 'shop_monthcard');
    }
    /**
    * @return \sm_shop_monthcard shop_monthcard item数据 
    */
    public static function shop_monthcard_getItem($itemid)
    { 
        return self::get_hash_item('shop_monthcard', $itemid);
    }
    /**
    * 7日狂欢活跃点奖励
    * @return \activepointreward
    */
    public static function activepointreward()
    { 
        static $a = null; 
        return self::initValue($a, 'activepointreward');
    }
    /**
    * @return \sm_activepointreward activepointreward item数据 
    */
    public static function activepointreward_getItem($type, $pointId)
    { 
        return self::get_hash_item('activepointreward', "$type-$pointId");
    }
    /**
    * 活动任务
    * @return \activeTask
    */
    public static function activeTask()
    { 
        static $a = null; 
        return self::initValue($a, 'activeTask');
    }
    /**
    * @return \sm_activeTask activeTask item数据 
    */
    public static function activeTask_getItem($itemid)
    { 
        return self::get_hash_item('activeTask', $itemid);
    }
    /**
    * 活动任务根据类型的不同分开
    * @return \activeTask_type
    */
    public static function activeTask_type()
    { 
        static $a = null; 
        return self::initValue($a, 'activeTask_type');
    }
    /**
    * @return \sm_activeTask_type activeTask_type itemArray 
    */
    public static function activeTask_type_getItemArray($key)
    { 
        return self::get_hash_item('activeTask_type', $key);
    }
    /**
    * 活动
    * @return \activity
    */
    public static function activity()
    { 
        static $a = null; 
        return self::initValue($a, 'activity');
    }
    /**
    * @return \sm_activity activity item数据 
    */
    public static function activity_getItem($itemid)
    { 
        return self::get_hash_item('activity', $itemid);
    }
    /**
    * 公告
    * @return \announcement
    */
    public static function announcement()
    { 
        static $a = null; 
        return self::initValue($a, 'announcement');
    }
    /**
    * @return \sm_announcement announcement item数据 
    */
    public static function announcement_getItem($itemid)
    { 
        return self::get_hash_item('announcement', $itemid);
    }
    /**
    * 战力荣誉榜信息
    * @return \rank_fightpowerreward
    */
    public static function rank_fightpowerreward()
    { 
        static $a = null; 
        return self::initValue($a, 'rank_fightpowerreward');
    }
    /**
    * @return \sm_rank_fightpowerreward rank_fightpowerreward item数据 
    */
    public static function rank_fightpowerreward_getItem($itemid)
    { 
        return self::get_hash_item('rank_fightpowerreward', $itemid);
    }
    /**
    * 主线荣誉榜信息
    * @return \rank_passgatereward
    */
    public static function rank_passgatereward()
    { 
        static $a = null; 
        return self::initValue($a, 'rank_passgatereward');
    }
    /**
    * @return \sm_rank_passgatereward rank_passgatereward item数据 
    */
    public static function rank_passgatereward_getItem($itemid)
    { 
        return self::get_hash_item('rank_passgatereward', $itemid);
    }
    /**
    * 玩家等级表
    * @return \player_level
    */
    public static function player_level()
    { 
        static $a = null; 
        return self::initValue($a, 'player_level');
    }
    /**
    * @return \sm_player_level player_level item数据 
    */
    public static function player_level_getItem($itemid)
    { 
        return self::get_hash_item('player_level', $itemid);
    }
    /**
    *  辅助:主线剧情解锁
    * @return \gate_unlock
    */
    public static function gate_unlock()
    { 
        static $a = null; 
        return self::initValue($a, 'gate_unlock');
    }
    /**
    * @return \sm_gate_unlock gate_unlock itemArray 
    */
    public static function gate_unlock_getItemArray($key)
    { 
        return self::get_hash_item('gate_unlock', $key);
    }
    /**
    * 辅助: 波次直查
    * @return \waveItem
    */
    public static function waveItem()
    { 
        static $a = null; 
        return self::initValue($a, 'waveItem');
    }
    /**
    * @return \sm_waveItem waveItem item数据 
    */
    public static function waveItem_getItem($gateId, $waveId)
    { 
        return self::get_hash_item('waveItem', "$gateId-$waveId");
    }
    /**
    * 道具宝箱表
    * @return \item_2023_box
    */
    public static function item_2023_box()
    { 
        static $a = null; 
        return self::initValue($a, 'item_2023_box');
    }
    /**
    * @return \sm_item_2023_box item_2023_box item数据 
    */
    public static function item_2023_box_getItem($itemid)
    { 
        return self::get_hash_item('item_2023_box', $itemid);
    }
    /**
    * 人物分类
    * @return \heroType_typeId
    */
    public static function heroType_typeId()
    { 
        static $a = null; 
        return self::initValue($a, 'heroType_typeId');
    }
    /**
    * @return \sm_heroType_typeId heroType_typeId itemArray 
    */
    public static function heroType_typeId_getItemArray($key)
    { 
        return self::get_hash_item('heroType_typeId', $key);
    }
    /**
    * 激活码表
    * @return \token_gift
    */
    public static function token_gift()
    { 
        static $a = null; 
        return self::initValue($a, 'token_gift');
    }
    /**
    * @return \sm_token_gift token_gift item数据 
    */
    public static function token_gift_getItem($itemid)
    { 
        return self::get_hash_item('token_gift', $itemid);
    }
    /**
    * 公共兑换码
    * @return \token_publicgift
    */
    public static function token_publicgift()
    { 
        static $a = null; 
        return self::initValue($a, 'token_publicgift');
    }
    /**
    * @return \sm_token_publicgift token_publicgift item数据 
    */
    public static function token_publicgift_getItem($itemid)
    { 
        return self::get_hash_item('token_publicgift', $itemid);
    }
    /**
    * 当前版本(时间戳)
    * @return \ver
    */
    public static function ver()
    { 
        static $a = null; 
        return self::initValue($a, 'ver', false);
    }
    /**
    * 客户端配置数据
    * @return \client
    */
    public static function client()
    { 
        static $a = null; 
        return self::initValue($a, 'client', false);
    }
}

