etc
简介
此pkg用于导入各种类型的配置表
用途:
- 此pkg用于导入各种类型的配置表
- 支持 json, excel, toml
默认设置:
{
// 配置文件生成.dat的同时是否需要生成.lua(为了兼容,默认需要)
"transform_to_lua" : true,
}
.dat的更新机制:
- dat文件的修改时间早于配置文件的修改时间时。
- xlsx 依赖文件的修改时间晚于dat文件的时间时。
- 二进制文件发生改变 无法正确读取到dat文件时,会重写文件。
组件接口
etc.gs
EtcClass.gs
etc的一些工具类
| 函数原型 | 函数作用 |
|---|---|
| class_map new_header(map header_dict) | 根据xlsx配置表头部数据创建一个XlsxHeader实例 |
| class_map new_importer_by_filename(string filename, mixed load_info = nil) | 根据文件名称创建一个配置表导入器实例 |
| class_map new_importer(string type) | 根据配置表导入器名称创建一个配置表导入器实例 |
| bool contains_importer(string type) | 判断是否包含指定名称的导入器 |
| array get_importer_list() | 获取所有导入器列表 |
EtcD.gs
游戏配置数据管理,只提供简单的加载方法,不涉及游戏逻辑。
| 函数原型 | 函数作用 |
|---|---|
| mixed load_xlsx(string file_name, bool err_when_not_exist = true) | 加载xlsx(已废弃) |
| mixed import_cfg(string file_name, bool err_when_not_exist = true, mixed load_info = nil) | 加载xlsx |
| mixed load_xlsx_and_merge_dbase(string file_name, bool err_when_not_exist = true) | 加载xlsx然后合并dbase |
| mixed eval(mixed field) | 评估一个字段的值,如果需要动态运行获取,要动态执行一下 |
| void add_into_reload_xlsx_dict(map reload_dict, int handle_id) | 将xlsx文件列表和对象的id绑定,以便重新加载xlsx文件时能通知对象更新相关配置数据 |
| void remove_from_reload_xlsx_dict(int handle_id) | 将指定对象相关的xlsx文件列表解绑,重新加载xlsx文件时将不通知改对象 |
| void reload_all_xlsx() | 重新加载和任一对象关联的所有xlsx文件 |
| void reload_xlsx(string xlsx_file) | 重新加载指定的xlsx文件 |
| void reload_xlsx_list(array xlsx_list) | 重新加载指定的xlsx文件列表 |
| map get_reload_xlsx_dict(int handle_id) | 获取和指定对象绑定的xlsx文件列表 |
EtcExtraD.gs
一些额外的操作
- 同一个xlsx多个sheet需要处理(EtcHelperD中只处理单个sheet)
- game层invoke
| 函数原型 | 函数作用 |
|---|---|
| map do_extra_op(string file_name, map all_sheets) | 一些约定的额外的操作 |
| mixed invoke_op(string file_name, mixed all_sheets) | 一些约定的额外的操作 |
EtcHelperD.gs
生成配置文件简单处理后的二进制格式的文件
| 函数原型 | 函数作用 |
|---|---|
| void transform_all_file() | 给定目录下的所有文件生成类似xxx.dat格式的文件 |
| bool is_xlsx_file(string file_path) | 判断是否是一个xlsx文件(xlsx文件的处理不同于json和toml) |
| bool is_dat_file(string file_path) | 判断是否是一个dat文件 |
| mixed get_single_file(string file_name, mixed load_info = nil) | 获取配置文件中有效信息 |
| mixed restore_xlsx_value(mixed all_data, mixed load_info = nil) | 根据load_info还原xlsx文件的数据 |
| buffer import_json_to_dat(ImporterBase importer) | 把json转化为buffer |
| buffer import_json5_to_dat(ImporterBase importer) | 把json5转化为buffer |
| buffer import_toml_to_dat(ImporterBase importer) | 把toml转化为buffer |
| mixed import_xlsx_to_dat(ImporterBase importer) | 简单解码并生成buffer |
FXlsxLoader.gs
辅助加载xlsx文件的组件 使用步骤:
- 包含本组件
- 重载 FXlsxLoader.init_vars_by_xlsx
- 通过load_xlsx_config加载xlsx,处理过程: a. 加载xlsx获得原始数据xlsx_dict b. 通过parse_func处理原始数据xlsx_dict获得格式化数据result_dict c. 使用格式化数据result_dict初始对象的相关成员变量(需要override init_vars_by_xlsx)
| 函数原型 | 函数作用 |
|---|---|
| map load_xlsx_config(array xlsx_list, function parse_func) | 加载xlsx文件并初始化相关成员变量 |
| void reload_xlsx_config(mixed list_or_dict) | 重新加载xlsx文件并初始化相关成员变量 |
ImportD.gs
负责数据导入配置及自定义类型的解析
Updated by huangw2 2016/12/20 1:增加 json 格式 2:支持 excel 格式 3:调整二进制方案,将动态编译变成静态打包,导入时先读取文本文件再读取二进制文件
| 函数原型 | 函数作用 |
|---|---|
| mixed import_file(string file_name, string requester = "", mixed load_info = nil) | 将etc数据导入,如果导入失败则返回 nil |
| void register_modules(map module_names) | 登记外部可用的模块名,映射到模块文件名 |
ImportEtcD.gs
缓存ETC下文件名到完整路径的映射,方便ImportD使用
| 函数原型 | 函数作用 |
|---|---|
| array get_etc_dirs() | 获取etc目录列表 |
| void add_ignore_etc_dir(string json_path) | 添加需要的忽略目录(这里实际上不是添加而是替换当前的) |
| void refresh_exclue_list() | 刷新忽略文件列表(文件不存在时不生效) |
| void import_etc_files(string path) | 添加配置文件 |
| void remove_etc_files(string path) | 移除配置文件 |
| void refresh_etc_files() | 刷新所有配置文件 |
| bool etc_file_exists(string file_name) | ETC目录下是否存在某个文件 |
| mixed get_file_path(string file_name) | 获取文件路径 |
| map scan_etc_files() | 扫描的所有文件(如果定义了time字段,则读取的时间被此字段所覆盖) |
LocalizationD.gs
本地化文件
| 函数原型 | 函数作用 |
|---|---|
| void init(map para) | 初始化本地化语言 |
| void set_language(string language) | 设置本地化语言 |
| void load(string filename) | 加载本地化文件 |
| string find_text(string id) | 获取本地化字段的值 |
LuaAdapterD.gs
负责客户端配置信息的生成,生成lua配置文件
| 函数原型 | 函数作用 |
|---|---|
| void transform_all_dat_file(string path = "OUTPUT_PATH") | 生成所有配置表的lua文件 |
| void transform_single_file(string file_name, string path = "OUTPUT_PATH") | 生成单个dat文件对应的lua文件 |
| void dfs(mixed data, string depth, string path) | 按照正常的书写格式生成lua文件 |