etc
简介
此pkg用于导入各种类型的配置表
用途:
- 此pkg用于导入各种类型的配置表
- 支持 json, excel, toml
默认设置:
{
// 配置文件生成.dat的同时是否需要生成.lua(为了兼容,默认需要)
"transform_to_lua" : true,
}
.dat的更新机制:
- dat文件的修改时间早于配置文件的修改时间时。
- xlsx 依赖文件的修改时间晚于dat文件的时间时。
- 二进制文件发生改变 无法正确读取到dat文件时,会重写文件。
组件接口
etc.gs
函数原型 | 函数作用 |
---|---|
void init_settings(map init_settings) | 初始化pkg.etc的设置项 |
mixed get(string key) | 获取pkg.etc的设置项 |
void set(string key, mixed value) | 更新pkg.etc的设置项 |
void ignore_table_dbase_merge(string table) | 跳过某个表格导入时对 dbase 字段的合并 |
void set_import_extension_func(string file_extension, function func) | 为指定后缀的文件设置一个自定义的导入函数 |
void set_import_filename_func(string file_name, function func) | 为指定文件名的文件设置一个自定义的导入函数 |
void set_custom_parser(string parser_name, function func) | 设置自定义的字段值解释器 |
void set_map_format_converter(string custom_name, function func) | 设置map类型自定义的格式转化处理 |
void on_table_reload(array tables, function func, string name = nil) | 响应一组配置表的重新加载的事件,当对应的任一配置表发生重新加载时,执行响应 函数 |
string on_path_import(string path, function func, string import_id = nil) | 路径里的任一表载入后处理() |
string on_multi_table_import(mixed tables_or_path, function fn, string import_id = nil) | 多张配置表载入以后的后处理 |
void reload_all_tables(bool force = false, bool fully = false) | 重新载入所有配置表,会自动跳过没有变化的配置文件 |
void reload_table(string table, bool err_when_not_exist = true) | 重新载入指定配置表,哪怕配置文件没有任何变化 |
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 load_dat(string file_name, bool err_when_not_exist = true) | 加载dat |
mixed load_dat_and_merge_dbase(string file_name, bool err_when_not_exist = true) | 加载dat然后合并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格式的文件 |
array split_path(string file_path) | 分割文件名称及后缀 |
bool is_xlsx_file(string file_path) | 判断是否是一个xlsx文件(xlsx文件的处理不同于json和toml) |
void transform_single_file(string file_name, mixed load_info = "nil") | 生成单个配置文件的.dat格式文件 |
mixed read_single_file(string file_name, mixed load_info) | 直接读取配置文件(而不是dat文件)获取数据 |
mixed get_single_file(string file_name, mixed load_info = nil) | 获取配置文件中有效信息 |
mixed restore_data(string file_name, mixed load_info) | // 将buffer还原成最终的数据 |
mixed restore_xlsx_value(mixed all_data, mixed load_info = nil, mixed is_data = true) | 根据load_info还原xlsx文件的数据 |
buffer import_json_to_dat(string file_name) | 把json转化为buffer |
buffer import_toml_to_dat(string file_name) | 把toml转化为buffer |
mixed import_xlsx_to_dat(string file_name) | 简单解码并生成buffer |
EtcUpdateD.gs
确认配置文件是否需要重新生成dat文件
函数原型 | 函数作用 |
---|---|
bool check_need_update(string file_name) | 以下两种情况需要更新dat文件 |
bool is_pack_version() | 判断当前是否为压缩包版本,暂时只能从搜索路径search_path进行判断 |
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:调整二进制方案,将动态编译变成静态打包,导入时先读取文本文件再读取二进制文件
函数原型 | 函数作用 |
---|---|
void register_modules(map module_names) | 登记外部可用的模块名,映射到模块文件名 |
mixed import_file(string file_name, string requester = "", mixed load_info = nil) | 将etc数据导入,如果导入失败则返回 nil |
mixed import_xlsx_file(string file_name, mixed load_info = nil) | 导入服务器要求格式的配置表 |
mixed import_json_file(string file_name, mixed load_info = nil) | 导入json格式的配置表 |
mixed import_toml_file(string file_name, mixed load_info = nil) | 导入toml格式的配置表 |
ImportEtcD.gs
缓存ETC下文件名到完整路径的映射,方便ImportD使用
函数原型 | 函数作用 |
---|---|
array get_etc_dirs() | 获取etc目录列表 |
map add_ignore_etc_dir(string json_path = nil) | 添加需要的忽略目录 |
void refresh_exclue_list(string json_path = nil) | 刷新忽略文件列表 |
void import_etc_files(string path) | 添加配置文件 |
void remove_etc_files(string path) | 移除配置文件 |
void refresh_etc_files() | 刷新所有配置文件 |
bool etc_file_exists(string file_name) | ETC目录下是否存在某个文件 |
map scan_etc_files(string path, map result, int max_level, map file_name_counts = ) | 扫描的所有文件(如果定义了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文件 |