跳到主要内容

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

一些额外的操作

  1. 同一个xlsx多个sheet需要处理(EtcHelperD中只处理单个sheet)
  2. 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文件的组件 使用步骤:

  1. 包含本组件
  2. 重载 FXlsxLoader.init_vars_by_xlsx
  3. 通过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文件