Files
fc/dev/project/assets/Scripts/client/base/dtkey.js
T

519 lines
19 KiB
JavaScript
Raw Normal View History

2026-05-23 22:10:14 +08:00
/*-----------------------------------------------------+
* 游戏内提示框
*
+-----------------------------------------------------*/
// 载入
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
};