/** * 是否启用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 \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 \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 \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); } }