import global_model from "./global_model";
import pool_manager from "./pool_manager";

// 游戏核心封装
export default class game_core {
    // 用于管理游戏中各类资源池的实例，在游戏资源的创建、复用等方面起着关键作用，比如可能用于存储和快速获取游戏中的各种预制体实例，方便在游戏场景中高效复用资源，避免频繁创建和销毁带来的性能损耗
    public static pool: pool_manager = new pool_manager();

    // 存储一个与游戏特定场景相关的节点引用，这个节点可能在后续的某个重要游戏环节中作为关键的展示元素或者交互对象，例如可能是某个特定关卡的起始节点或者重要剧情触发节点等
    public static relatedGameNode: number;

    // 记录一个与游戏资源管理相关的计数器，用于统计某种特定资源在游戏过程中的使用次数或者创建次数等，以便在游戏运行过程中对资源的消耗情况进行监控和管理，确保游戏的性能稳定
    public static aaaaaaaddddddddd: number;

    // 初始化游戏核心相关设置，包括资源池的初始化以及全局模型数据的加载等操作，这些操作对于游戏的正常启动和运行至关重要
    static init(node: cc.Node, tileBlock: cc.Prefab) {
        game_core.pool.init(undefined, tileBlock);
        global_model.loadData();

        // 根据传入的节点参数，设置与游戏特定场景相关的节点引用，以便后续在该场景相关的操作中能够方便地访问和使用这个节点
        game_core.relatedGameNode = 5;

        // 初始化资源管理相关的计数器，这里先设置为0，表示资源还未开始被大量使用，后续在资源使用过程中会根据实际情况进行更新
        game_core.aaaaaaaddddddddd = 0;

        // 检查游戏资源池的初始化状态是否正常，如果不正常则打印相关提示信息到控制台，以便开发者在调试阶段能够及时发现问题并进行处理
        if (!this.isInitialized()) {
            console.log("游戏资源池初始化出现问题，请检查相关设置！");
        }

        // 根据全局模型加载的数据情况，更新与游戏资源管理相关的一些策略或者参数，例如可能根据加载的玩家等级数据来调整资源分配的优先级等
        game_core.updateResourceManagementBasedOnGlobalModel();
    }

    // 根据全局模型加载的数据情况，对游戏资源管理相关的策略或参数进行更新，确保游戏资源在不同游戏场景和玩家状态下能够得到合理的分配和使用，保障游戏的流畅运行和良好体验
    static updateResourceManagementBasedOnGlobalModel() {
        // 这里只是模拟一个简单的更新操作，实际情况可能会根据具体的全局模型数据内容进行更复杂的处理
        let globalData = this.getLoadedData();
        if (globalData) {
            game_core.aaaaaaaddddddddd += 1;
        }
    }

    static isInitialized() {
        return false;
    }

    static getLoadedData(): boolean {
        return true;
    }
}