HuaweiDemo/assets/script/framework/localConfig.ts
2023-11-07 09:17:57 +08:00

142 lines
4.1 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { _decorator, resources } from "cc";
import { CSVManager } from "./csvManager";
import { ResourceUtil } from "./resourceUtil";
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) {
return 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 () {
//新增数据表 请往该数组中添加....
resources.loadDir("datas", (err: any, assets)=>{
if (err) {
return;
}
let arrCsvFiles = assets.filter((item: any)=>{
return item._native !== ".md";
})
this._cntLoad = arrCsvFiles.length;
//客户端加载
if (arrCsvFiles.length) {
arrCsvFiles.forEach((item, index, array)=> {
ResourceUtil.getTextData(item.name, (err: any, content: any) => {
this._csvManager.addTable(item.name, content);
this._tryToCallbackOnFinished();
});
});
} else {
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 数组中的数据,返回 Objectkey 为 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 为表格的keyvalue 为值的数组。返回的objectkey 为数据在表格的IDvalue为具体数据
* @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();
}
}
}
}