/** * 是否启用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; } // /** * 全局参数 * @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 \zonelist */ public static function zonelist() { static $a = null; return self::initValue($a, 'zonelist'); } /** * @return \sm_zonelist zonelist item数据 */ public static function zonelist_getItem($itemid) { return self::get_hash_item('zonelist', $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 \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 \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 \activity_tiligift */ public static function activity_tiligift() { static $a = null; return self::initValue($a, 'activity_tiligift'); } /** * @return \sm_activity_tiligift activity_tiligift item数据 */ public static function activity_tiligift_getItem($itemid) { return self::get_hash_item('activity_tiligift', $itemid); } /** * 活动: 等级礼包 * @return \activity_levelgift */ public static function activity_levelgift() { static $a = null; return self::initValue($a, 'activity_levelgift'); } /** * @return \sm_activity_levelgift activity_levelgift item数据 */ public static function activity_levelgift_getItem($itemid) { return self::get_hash_item('activity_levelgift', $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 \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 \gate_challenge */ public static function gate_challenge() { static $a = null; return self::initValue($a, 'gate_challenge'); } /** * @return \sm_gate_challenge gate_challenge item数据 */ public static function gate_challenge_getItem($itemid) { return self::get_hash_item('gate_challenge', $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 \equip_evolve */ public static function equip_evolve() { static $a = null; return self::initValue($a, 'equip_evolve'); } /** * @return \sm_equip_evolve equip_evolve item数据 */ public static function equip_evolve_getItem($rarity, $qual, $posId) { return self::get_hash_item('equip_evolve', "$rarity-$qual-$posId"); } /** * 装备合成表 * @return \equip_compose */ public static function equip_compose() { static $a = null; return self::initValue($a, 'equip_compose'); } /** * @return \sm_equip_compose equip_compose item数据 */ public static function equip_compose_getItem($itemid) { return self::get_hash_item('equip_compose', $itemid); } /** * 成就功能 * @return \achieve */ public static function achieve() { static $a = null; return self::initValue($a, 'achieve'); } /** * @return \sm_achieve achieve item数据 */ public static function achieve_getItem($itemid) { return self::get_hash_item('achieve', $itemid); } /** * 任务表 * @return \task_step */ public static function task_step() { static $a = null; return self::initValue($a, 'task_step'); } /** * @return \sm_task_step task_step item数据 */ public static function task_step_getItem($itemid) { return self::get_hash_item('task_step', $itemid); } /** * 任务卡 * @return \taskcard */ public static function taskcard() { static $a = null; return self::initValue($a, 'taskcard'); } /** * @return \sm_taskcard taskcard item数据 */ public static function taskcard_getItem($itemid) { return self::get_hash_item('taskcard', $itemid); } /** * 每日任务累计 * @return \task_accumulate_daily */ public static function task_accumulate_daily() { static $a = null; return self::initValue($a, 'task_accumulate_daily'); } /** * @return \sm_task_accumulate_daily task_accumulate_daily item数据 */ public static function task_accumulate_daily_getItem($itemid) { return self::get_hash_item('task_accumulate_daily', $itemid); } /** * 周常任务累计 * @return \task_accumulate_week */ public static function task_accumulate_week() { static $a = null; return self::initValue($a, 'task_accumulate_week'); } /** * @return \sm_task_accumulate_week task_accumulate_week item数据 */ public static function task_accumulate_week_getItem($itemid) { return self::get_hash_item('task_accumulate_week', $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); } }