"use strict"; cc._RF.push(module, '98b7eKzNcRE67/4Yp3uLhUQ', 'dtkey'); // Scripts/client/base/dtkey.js "use strict"; /*-----------------------------------------------------+ * 游戏内提示框 * +-----------------------------------------------------*/ // 载入 var install = function install() { // 下载文件名转换 client.dataName = function (data) { switch (window.DATA_TYPE || 1) { case 1: return data + ".json"; case 2: return "jsc/" + data + ".json"; case 3: return "jsc/" + data + ".zip"; } }; // 解析文件处理 client.parseData = function (name, data) { switch (window.DATA_TYPE || 1) { case 1: game.configs[name] = data; return; case 2: game.configs[name] = data; return; case 3: var pako = require("pako"); var Base64 = require("base64").Base64; game.configs[name] = JSON.parse(pako.inflate(Base64.atob(data), { to: 'string' })); return; } }; // 获取数据 转换成key=>val格式 方便使用 client.getDataKeyVal = function (name, key, id, log) { if (!game.configs[name][key][id]) { return game.configs[name][key]; } var cache_key = key + "_cache"; if (!game.configs[name][cache_key]) { game.configs[name][cache_key] = {}; } var cache_data = game.configs[name][cache_key][id]; if (!cache_data) { cache_data = {}; var fields_key = key + "_fields"; var data = game.configs[name][key][id]; var fields = game.configs[name][fields_key]; if (!fields) { return data; } for (var i = 0, n = fields.length; i < n; i++) { cache_data[fields[i]] = data[i]; } game.configs[name][cache_key][id] = cache_data; } if (!cache_data) { nx.warn("not get data", name, key, id); } return cache_data; }; //获取技能数据 // 获取数据 转换成key=>val格式 方便使用 client.getSkillDataKeyVal = function (key, id, log) { var initname = "skill_data"; var name = initname; for (var i = 0; i < 7; i++) { if (i == 0) { name = initname; } else { name = initname + "" + i; } if (!game.configs[name]) { continue; } else if (!game.configs[name][key]) { continue; } else if (!game.configs[name][key][id]) { continue; } var cache_key = key + "_cache"; if (!game.configs[name][cache_key]) { game.configs[name][cache_key] = {}; } var cache_data = game.configs[name][cache_key][id]; if (!cache_data) { cache_data = {}; var fields_key = key + "_fields"; var data = game.configs[name][key][id]; var fields = game.configs[name][fields_key]; if (!fields) { return data; } for (var i = 0, n = fields.length; i < n; i++) { cache_data[fields[i]] = data[i]; } game.configs[name][cache_key][id] = cache_data; } if (!cache_data) { nx.warn("not skill_data", name, key, id); } return cache_data; } return; }; /* */ client.getItemData = function (id, log) { if (!game.configs["item_data"]) { if (log != false) nx.debug("item_data_not_found"); return null; } //由于表太多,只能一一遍历 var itemdata = game.configs["item_data"]; if (!itemdata) { return null; } //数据重组 var data_ojb = {}; for (var num = 1; num <= 10; num++) { var str = "data_unit" + num; var unitdata = itemdata[str]; for (var i in unitdata) { var val = unitdata[i]; if (val) { //id 正确 if (val[0] == id) { var filed_str = "data_unit" + num + "_fields"; var unit_filed = itemdata[filed_str]; for (var j = 0; j < unit_filed.length; j++) { data_ojb[unit_filed[j]] = val[j]; } return data_ojb; } } } } return null; }; client.getHolyBaseData = function (id, log) { if (!game.configs["partner_holy_eqm_data"]) { if (log != false) nx.debug("partner_holy_eqm_data_not_found"); return; } var holydata = game.configs["partner_holy_eqm_data"]; var unit_filed = holydata.data_base_info_fields; //数据重组 var data_ojb = {}; for (var num = 0; num <= 10; num++) { var str = "data_base_info"; var basedata = holydata[str]; for (var i in basedata) { var val = basedata[i]; if (val) { //id 正确 if (val[0] == id) { for (var j = 0; j < unit_filed.length; j++) { data_ojb[unit_filed[j]] = val[j]; } return data_ojb; } } } } return null; }; client.getPartnerDataByItemId = function (itemid, log) { if (!game.configs["partner_data"]) { if (log != false) nx.debug("item_data_not_found"); return; } var partner_data = game.configs["partner_data"]; for (var i in partner_data.data_partner_base) { var data_base = partner_data.data_partner_base[i]; if (data_base.item_id == itemid) { return data_base; } } }; //获取野怪数据 // 获取数据 转换成key=>val格式 方便使用 client.getUnitDataKeyVal = function (key, id, log) { var initname = "unit_data"; var name = initname; for (var i = 0; i < 4; i++) { if (i == 0) { name = initname; } else { name = initname + "" + i; } var key1 = key; var cache_key = key + "_cache"; if (!game.configs[name][cache_key]) { game.configs[name][cache_key] = {}; } if (!game.configs[name]) { // if( !log ) nx.debug( "config_data_not_found", name ); continue; } for (var m = 1; m <= 2; m++) { if (!game.configs[name][key + "" + m]) { // if( !log ) nx.debug( "config_data_not_found", name, key1 ); continue; } else { if (!game.configs[name][key + "" + m][id]) { // if( !log ) nx.debug( "config_data_not_found", name, key1,id ); continue; } else { key1 = key + "" + m; } } } if (game.configs[name][key1] == null) { // if( !log ) nx.debug( "config_data_not_found", name, key1 ); continue; } if (game.configs[name][key1][id] == null) { // if( !log ) nx.debug( "config_data_not_found", name, key1, id ); continue; } if (game.configs[name][key1] == null) { game.configs[name][key1] = {}; } var cache_data = game.configs[name][key1][id]; if (cache_data) { cache_data = {}; var fields_key = key1 + "_fields"; var data = game.configs[name][key1][id]; var fields = game.configs[name][fields_key]; if (!fields) { return data; } for (var i = 0, n = fields.length; i < n; i++) { cache_data[fields[i]] = data[i]; } game.configs[name][cache_key][id] = cache_data; } return cache_data; } return; }; client.sortLang = function (value, arr, tag, is_slice) { if (is_slice === void 0) { is_slice = false; } if (value == "") return value; for (var i in arr) { var id = arr[i].id; if (is_slice) { if (id.length < value.length) { id = arr[i].id; } else { id = arr[i].id.slice(0, value.length); } } if (id == value) { game.configs["txt"][String(id)] = arr[i].id; // return arr[i][tag+"_str"]; return null; } } return null; }; client.changeStrByLang = function (table, data, table_list_name, index) { //table 表名 data 数据 index 数据名或者数据序号 table_list_name 数据对象 var target = nx.getLocLanguage(); //语言标识 if (target == "zh") return data; var real_data = data; var lang_data = game.configs["lang"][table + "_lang"]; //多语言译文配置表 if (!lang_data) return data; var sort_index = -1; //lang_data.data_get.val_len.val; if (sort_index == -1) { //不需要匹配长度 if (typeof real_data == "string") { var lang_str = client.sortLang(real_data, lang_data.data_val_arr, target); if (lang_str != null) { if (index) { game.configs[table][table_list_name][index] = lang_str; } else { game.configs[table][table_list_name] = lang_str; } // data = lang_str; } } else { for (var a in real_data) { //先判断是否有字符串 var val = real_data[a]; if (typeof val == "string") { var _lang_str = client.sortLang(val, lang_data.data_val_arr, target); if (_lang_str != null) { data[a] = _lang_str; } } else if (typeof val == "object") { for (var b in val) { if (typeof val[b] == "string") { var _lang_str2 = client.sortLang(val[b], lang_data.data_val_arr, target); if (_lang_str2 != null) { val[b] = _lang_str2; data[a] = val; } } else if (typeof val[b] == "object") { for (var c in val[b]) { if (typeof val[b][c] == "string") { var sli = void 0; sli = val[b][c]; var langStr = client.sortLang(sli, lang_data.data_val_arr, target); if (langStr != null) { val[b][c] = langStr; data[a][b] = val[b]; } } } } } } } } } else { if (typeof real_data == "string") { var slice; var jq; if (real_data.length < sort_index) { slice = real_data; jq = false; } else { slice = real_data.slice(0, sort_index); jq = true; } var _lang_str3 = client.sortLang(slice, lang_data.data_val_arr, target, jq); if (_lang_str3 != null) { if (index) { game.configs[table][table_list_name][index] = _lang_str3; } else { game.configs[table][table_list_name] = _lang_str3; } // data = lang_str; } } else { for (var _a in real_data) { //先判断是否有字符串 var _val = real_data[_a]; //截取需要的长度 if (typeof _val == "string") { var _slice = void 0; var jq2 = void 0; if (_val.length < sort_index) { _slice = _val; jq2 = false; } else { _slice = _val.slice(0, sort_index); jq2 = true; } var _lang_str4 = client.sortLang(_slice, lang_data.data_val_arr, target, jq2); if (_lang_str4 != null) { data[_a] = _lang_str4; } } else if (typeof _val == "object") { for (var _b in _val) { if (typeof _val[_b] == "string") { var _slice2 = void 0; var jq3 = void 0; if (_val[_b].length < sort_index) { _slice2 = _val[_b]; jq3 = false; } else { _slice2 = _val[_b].slice(0, sort_index); jq3 = true; } var _lang_str5 = client.sortLang(_slice2, lang_data.data_val_arr, target, jq3); if (_lang_str5 != null) { _val[_b] = _lang_str5; data[_a] = _val; } } else if (typeof _val[_b] == "object") { for (var _c in _val[_b]) { if (typeof _val[_b][_c] == "string") { var _sli = void 0; var jq4 = void 0; if (_val[_b][_c].length < sort_index) { _sli = _val[_b][_c]; jq4 = false; } else { _sli = _val[_b][_c].slice(0, sort_index); jq4 = true; } var _langStr = client.sortLang(_sli, lang_data.data_val_arr, target, jq4); if (_langStr != null) { _val[_b][_c] = _langStr; data[_a][_b] = _val[_b]; } } } } } } } } } return real_data; }; client.getConfigData = function (str1, str2, id) { var table, name, real_id; if (typeof str1 != "string") { table = String(str1); } else { table = str1; } if (!game.configs[table]) { cc.log("cur table is not exist", table); return; } if (typeof str2 != "string") { name = String(str2); } else { name = str2; } if (!game.configs[table][name]) { cc.log("cur ojb is not exist", table, name); return; } if (typeof id == "string") { real_id = id; } else { real_id = String(id); } if (!id) { //drama 表做特殊处理 var table_list = game.configs[table][name]; if (typeof table_list == "string") { client.changeStrByLang(table, table_list, name); } else { for (var i in table_list) { if (table == "drama_data" && name == "data_get") { client.changeStrByLang(table, table_list[i].act, name, i); } else if (table == "drama_data" && name == "data_guide") { if (table_list[i].act[0].length <= 2) { for (var j = 0; j < table_list[i].act.length; j++) { var val = table_list[i].act[j]; client.changeStrByLang(table, val, name, i); } } else { if (!table_list[i].act[0][3]) { for (var _j = 0; _j < table_list[i].act[0].length; _j++) { var _val2 = table_list[i].act[0][_j]; client.changeStrByLang(table, _val2, name, i); } } else { for (var _j2 = 0; _j2 < table_list[i].act[0][3].length; _j2++) { var _val3 = table_list[i].act[0][3][_j2]; client.changeStrByLang(table, _val3, name, i); } } } } else { client.changeStrByLang(table, table_list[i], name, i); } } } return table_list; } var data = game.configs[table][name][real_id]; if (data) { //开始匹配语言,匹配完成再返回数据 return client.changeStrByLang(table, data); } else { cc.log("data is not exist!!", table, name, id); return; } }; // 暂时兼容,后续修改 window.gdata = client.getDataKeyVal; window.gskilldata = client.getSkillDataKeyVal; window.gitemdata = client.getItemData; window.gholybasedata = client.getHolyBaseData; window.gunitdata = client.getUnitDataKeyVal; window.gdatabyitemid = client.getPartnerDataByItemId; window.gstrbylang = client.changeStrByLang; //通过中文str获取译文 window.gconfig = client.getConfigData; //获取Config数据 }; // 卸载 var uninstall = function uninstall() {}; // 导出 module.exports = { install: install, uninstall: uninstall }; cc._RF.pop();