519 lines
19 KiB
JavaScript
519 lines
19 KiB
JavaScript
/*-----------------------------------------------------+
|
|
* 游戏内提示框
|
|
*
|
|
+-----------------------------------------------------*/
|
|
|
|
// 载入
|
|
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<table_list[i].act.length;j++){
|
|
let val = table_list[i].act[j];
|
|
client.changeStrByLang(table,val,name,i)
|
|
}
|
|
}else{
|
|
if(!table_list[i].act[0][3]){
|
|
for(let j=0;j<table_list[i].act[0].length;j++){
|
|
let val = table_list[i].act[0][j];
|
|
client.changeStrByLang(table,val,name,i)
|
|
}
|
|
}else{
|
|
for(let j=0;j<table_list[i].act[0][3].length;j++){
|
|
let val = table_list[i].act[0][3][j];
|
|
client.changeStrByLang(table,val,name,i)
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
client.changeStrByLang(table,table_list[i],name,i)
|
|
}
|
|
}
|
|
}
|
|
|
|
return table_list;
|
|
}
|
|
|
|
let 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数据
|
|
};
|
|
|
|
// 卸载
|
|
const uninstall = function() {
|
|
};
|
|
|
|
// 导出
|
|
module.exports = {
|
|
install: install,
|
|
uninstall: uninstall
|
|
};
|