<?php

namespace loyalsoft;

/**
 * 加载处理类
 * @version
 *          1.0.0 Created at 2017-2-14. by --gwang
 * @author gwang (mail@wanggangzero.cn)
 * @copyright ? 2017-2-14, SJZ LoyalSoft Corporation & gwang. All rights reserved.
 */
class AutoLoad {

    /**
     * 初始化代码自动载入功能
     */
    static public function Init() {
        static $a = true;                                                       # 利用静态变量, 避免重复执行
        if ($a) {
            static $incs = array(#                                              # 指定框架查找路径
                ROOTDIR . '/util/', #                                           # 常用辅助代码
                ROOTDIR . '/process/', #                                        # 逻辑处理代码
                ROOTDIR . '/model/User/', #                                     # 数据结构定义
                ROOTDIR . '/process/ActiveProc/',
            );
            if (defined("CodeGen_Folder")) {
                $incs[] = CodeGen_Folder;
            }
            $incPath = get_include_path() . PATH_SEPARATOR . join(PATH_SEPARATOR, $incs);
            set_include_path($incPath);
//            var_dump(get_include_path());
            static $ns = __NAMESPACE__;                                         # 当前命名空间(loyalsoft)
            spl_autoload_register(function ($className) use ($ns) {             # 框架: 添加自动加载功能
                if (strncmp($className, $ns, strlen($ns)) == 0) {               # 过滤: 符合当前命名空间的类
                    include str_replace("$ns\\", '', $className) . '.php';      # 约定: 文件名要剔除命名空间
                }
            }, true, true);
            $a = false;
        }
    }
}

# 预加载一部分常用的代码.
require_once ROOTDIR . '/../globals.php';                                       # 导入全局配置
require_once ROOTDIR . '/configs/GameConstants.php';                            # 导入游戏基础常量定义
require_once ROOTDIR . '/configs/GameConfig.php';                               # 导入游戏静态数据
require_once ROOTDIR . '/config.php';                                           # 服务器配置数据
require_once ROOTDIR . '/base/Include.php';                                     # 导入框架基础对象
require_once ROOTDIR . '/util/UtilInclude.php';                                 # 一部分Utils直接预加载
require_once ROOTDIR . '/process/UserProc.php';                                 # 玩家处理逻辑
//require_once ROOTDIR . '/process/FightProc/PVPProc.php';                        # (userproc中引用到了)
//require_once ROOTDIR . '/process/EventProc/CornerSignEventProc.php';            # 角标更新各处插入
//require_once ROOTDIR . '/process/EventProc/NormalEventProc.php';                # 2020年12月新版事件系统
require_once ROOTDIR . '/model/User/Data_UserGame.php';                         # 游戏数据
//require_once ROOTDIR . '/model/User/Data_UserProfile.php';                      # 玩家画像

AutoLoad::Init();                                                               // 直接执行初始化
