/*-----------------------------------------------------+ * 游戏内提示框 * +-----------------------------------------------------*/ // 载入 const install = function() { // 下载文件名转换 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 ) { let initname = "skill_data" let 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; } //由于表太多,只能一一遍历 let itemdata = game.configs[ "item_data" ]; if( !itemdata ) { return null; } //数据重组 let data_ojb = {}; for( let num = 1; num <= 10; num++ ) { let str = "data_unit" + num; let unitdata = itemdata[ str ]; for( let i in unitdata ) { let val = unitdata[ i ]; if( val ) { //id 正确 if( val[ 0 ] == id ) { let filed_str = "data_unit"+num+"_fields" let unit_filed = itemdata[filed_str] for(let 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; } let holydata = game.configs[ "partner_holy_eqm_data" ]; let unit_filed = holydata.data_base_info_fields; //数据重组 let data_ojb = {}; for( let num = 0; num <= 10; num++ ) { let str = "data_base_info"; let basedata = holydata[ str ]; for( let i in basedata ) { let val = basedata[ i ]; if( val ) { //id 正确 if( val[ 0 ] == id ) { for(let 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; } let partner_data = game.configs["partner_data"]; for(var i in partner_data.data_partner_base){ let 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 ) { let initname = "unit_data" let name = initname for( var i = 0; i < 4; i++ ) { if( i == 0 ) { name = initname } else { name = initname + "" + i; } let 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=false){ if(value == "")return value; for(let i in arr){ let 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 数据对象 let target = nx.getLocLanguage();//语言标识 if(target == "zh")return data; let real_data = data; let lang_data = game.configs["lang"][table+"_lang"];//多语言译文配置表 if(!lang_data)return data; let sort_index = -1;//lang_data.data_get.val_len.val; if(sort_index == -1){//不需要匹配长度 if(typeof real_data == "string"){ let 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(let a in real_data){ //先判断是否有字符串 let val = real_data[a]; if(typeof val == "string"){ let 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(let b in val){ if(typeof val[b] == "string"){ let lang_str = client.sortLang(val[b],lang_data.data_val_arr,target); if(lang_str!=null){ val[b] = lang_str data[a] = val; } }else if(typeof val[b] == "object"){ for(let c in val[b]){ if(typeof val[b][c] == "string"){ let sli; sli = val[b][c]; let 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"){ let slice; let jq; if(real_data.length < sort_index){ slice = real_data; jq = false; }else{ slice = real_data.slice(0,sort_index); jq = true; } let lang_str = client.sortLang(slice,lang_data.data_val_arr,target,jq); 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(let a in real_data){ //先判断是否有字符串 let val = real_data[a]; //截取需要的长度 if(typeof val == "string"){ let slice; let jq2; if(val.length < sort_index){ slice = val; jq2 = false; }else{ slice = val.slice(0,sort_index); jq2 = true; } let lang_str = client.sortLang(slice,lang_data.data_val_arr,target,jq2); if(lang_str!=null){ data[a] = lang_str; } }else if(typeof val == "object"){ for(let b in val){ if(typeof val[b] == "string"){ let slice; let jq3; if(val[b].length < sort_index){ slice = val[b]; jq3 = false; }else{ slice = val[b].slice(0,sort_index) jq3 = true; } let lang_str = client.sortLang(slice,lang_data.data_val_arr,target,jq3); if(lang_str!=null){ val[b] = lang_str; data[a] = val; } }else if(typeof val[b] == "object"){ for(let c in val[b]){ if(typeof val[b][c] == "string"){ let sli; let jq4; if(val[b][c].length < sort_index){ sli = val[b][c]; jq4 = false; }else{ sli = val[b][c].slice(0,sort_index); jq4 = true; } let 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){ let 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 表做特殊处理 let table_list = game.configs[table][name]; if(typeof table_list == "string"){ client.changeStrByLang(table,table_list,name) }else{ for(let 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(let j=0;j