123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- import {Asset, AssetManager, TextAsset, _decorator, assetManager } from "cc";
- import { csvManager } from "./csvManager";
- const { ccclass, property } = _decorator;
- @ccclass("localConfig")
- export class localConfig {
- /* class member could be defined like this */
- private static _instance: localConfig;
- private _csvManager: csvManager = new csvManager();
- static get instance () {
- if (!this._instance) {
- this._instance = new localConfig();
- }
- return this._instance;
- }
- private _callback: Function = new Function();
- private _currentLoad: number = 0;
- private _cntLoad: number = 0;
- /**
- * 加载配置文件
- * @param {Function}cb 回调函数
- */
- public loadConfig (cb: Function) {
- this._callback = cb;
- this._loadCSV();
- }
- private _loadCSV () {
- //新增数据表 请往该数组中添加....
- assetManager.loadBundle('csb', (err: Error | null, bundle: AssetManager.Bundle) => {
- if (err) {
- console.error('Failed to load bundle:', err);
- return;
- }
- //获取bundle内所有资源(新API用法)
- const assets = bundle.getDirWithPath('');
- //过滤掉.md文件
- const arrCsvFiles = assets.filter((item: any) => {
- return !item.path.endsWith('.md');
- });
- this._cntLoad = arrCsvFiles.length;
- if (arrCsvFiles.length === 0) {
- this._tryToCallbackOnFinished();
- return;
- }
- //加载每个CSV文件
- arrCsvFiles.forEach((item: any) => {
- bundle.load(item.path, (err: Error | null, content: TextAsset) => {
- if (err) {
- console.error(`Failed to load ${item.name}:`, err);
- return;
- }
- const text = content.text;
- this._csvManager.addTable(item.path, text);
- this._tryToCallbackOnFinished();
- });
- });
- });
- }
- /**
- * 查询一条表内容
- * @param {string} tableName 表名
- * @param {string} key 列名
- * @param {any} value 值
- * @returns {Object} 一条表内容
- */
- queryOne (tableName: string, key: string, value: any) {
- return this._csvManager.queryOne(tableName, key, value);
- }
- /**
- * 根据ID查询一条表内容
- * @param {string}tableName 表名
- * @param {string}ID
- * @returns {Object} 一条表内容
- */
- queryByID (tableName: string, ID: string) {
- return this._csvManager.queryByID(tableName, ID);
- }
- /**
- * 根据表名获取表的所有内容
- * @param {string} tableName 表名
- * @returns {object} 表内容
- */
- getTable (tableName: string) {
- return this._csvManager.getTable(tableName);
- }
- /**
- * 根据表名获取表的所有内容
- * @param {string} tableName 表名
- * @returns {object} 表内容
- */
- getTableArr (tableName: string) {
- return this._csvManager.getTableArr(tableName);
- }
- /**
- * 查询key和value对应的所有行内容
- * @param {string} tableName 表名
- * @param {string} key 列名
- * @param {any} value 值
- * @returns {Object}
- */
- queryAll (tableName: string, key: string, value: any) {
- return this._csvManager.queryAll(tableName, key, value);
- }
- //
- /**
- * 选出指定表里所有 key 的值在 values 数组中的数据,返回 Object,key 为 ID
- * @param {string} tableName 表名
- * @param {string} key 列名
- * @param {Array}values 数值
- * @returns
- */
- queryIn (tableName: string, key: string, values: any[]) {
- return this._csvManager.queryIn(tableName, key, values);
- }
- /**
- * 选出符合条件的数据。condition key 为表格的key,value 为值的数组。返回的object,key 为数据在表格的ID,value为具体数据
- * @param {string} tableName 表名
- * @param {any} condition 筛选条件
- * @returns
- */
- queryByCondition (tableName: string, condition: any) {
- return this._csvManager.queryByCondition(tableName, condition);
- }
- private _tryToCallbackOnFinished () {
- if (this._callback) {
- this._currentLoad++;
- if (this._currentLoad >= this._cntLoad) {
- this._callback();
- }
- }
- }
- }
|