Files
fc/dev/project/assets/Scripts/mod/partner/wings/cmp/cmp.wing.scientfic.item.js
T
2026-05-23 22:10:14 +08:00

201 lines
6.2 KiB
JavaScript

/****************
* 僚机科研单项
*/
const ElfinController = require( "elfin_controller" );
const ElfinConst = require("elfin_const");
cc.Class({
extends: cc.Component,
properties: {
icon : { default: null, type : cc.Node, displayName : "宝箱底图" },
nodStatus : { default: null, type : cc.Node, displayName : "状态" },
nodLock : { default: null, type : cc.Node, displayName : "锁定状态" },
nodTime : { default: null, type : cc.Node, displayName : "时间显示" },
},
onLoad(){
},
freshAll:function( _data ){
let data = _data;
this.open = data.is_open;
this.state = data.state;
this.endTime = data.all_end_time;
this.info = _data;
this.setLocked();
this.setTime();
this.setStatus();
this.setIcon();
},
setLocked: function (){
let desc = game.configs.sprite_data.data_hatch_data[this.info.id];
if( this.nodLock ){
nx.gui.setActive( this.nodLock,"", this.open != 1 );
nx.gui.setString( this.nodLock, "txt", desc.desc1 );
}
if( nx.gui.find( this, "add" ) ){
nx.gui.setActive( nx.gui.find( this, "add" ),"", this.open == 1 );
}
},
setTime: function (){
//设置时间
nx.gui.setActive( this.nodTime, "", this.endTime != 0 );
let wfg = game.configs.sprite_data.data_const.liaoji_materials;
let action = parseInt( this.info.do_id - wfg.val[0] + 1 ) ;
let cmp = nx.gui.getComponent( this, "finish", "nx.fx.spine" );
if( this.endTime != 0 ){
if( this.info.state == 1 ){
if( cmp ){
cmp.stop();
cmp.load( "resDB/effects/E80031/action", ( _e ) => {
if( !_e ) {
cmp.action( "action", true );
} else {
cmp.stop();
}
} );
}
this.setFreeCD( ( this.endTime ) );
}
if( this.info.state == 2 ){
nx.gui.setString( this.nodTime, "txt", nx.text.getKey( "elfin_hatch_item_4" ) );
if( cmp ){
cmp.stop();
cmp.load( "resDB/effects/E80032/action", ( _e ) => {
if( !_e ) {
cmp.action( ("action" + action ), true );
} else {
cmp.stop();
}
} );
}
}
if( this.info.state == 0 ){
nx.gui.setActive( this.nodTime, "", false );
}
}
nx.gui.setActive( this, "finish", this.info.state != 0 );
},
// 免费倒计时
setFreeCD: function( _dtFree ) {
this.unscheduleAllCallbacks();
if( !nx.dt.numPositive( _dtFree, false ) ) {
return;
}
let self = this;
// let rate = game.configs.sprite_data.data_const.hatch_rate.val;
let tick = function() {
let interval = Utils.getTimeInterval( _dtFree );
// console.log( "当前的倒计时" + interval );
if( interval <= 0 ) {
self.unscheduleAllCallbacks();
nx.gui.setString( self.nodTime, "txt", "" );
return;
}
let time = Utils.changeIntevalToDate( interval );
let txt = time.H + ":" + time.M + ":" + time.S;
nx.gui.setString( self.nodTime, "txt", txt );
};
this.schedule( tick, 1, cc.macro.REPEAT_FOREVER );
tick();
},
setStatus: function (){
if( this.info.is_open != 0 && this.info.is_open != 2 ){
//设置状态
let clr = cc.Color.WHITE;
// let clr = ( this.state == ElfinConst.Hatch_Status.Hatch || this.state == ElfinConst.Hatch_Status.Over ) ? new cc.Color().fromHEX( "#066926" ) : new cc.Color().fromHEX("#896202");
let path = ( this.state == ElfinConst.Hatch_Status.Hatch ) ? cc.path.join( "prefab/partner/wing/ui/partner_62" ) : this.state == ElfinConst.Hatch_Status.Over ? cc.path.join( "prefab/partner/wing/ui/partner_61" ) :cc.path.join( "prefab/partner/wing/ui/partner_62" );
let pathbg = ( this.state == ElfinConst.Hatch_Status.Hatch || this.state == ElfinConst.Hatch_Status.Over ) ? "prefab/partner/wing/ui/partner_63" : "prefab/partner/wing/ui/partner_64" ;
nx.gui.setSpriteFrame( this.nodStatus, "bg", path );
nx.gui.setSpriteFrame( this, "sbg", pathbg );
nx.gui.setActive( this, "sbg", true );
nx.gui.setColor( this.nodStatus, "txt", clr );
nx.gui.setString( this.nodStatus, "txt", this.info.state == 0 ? nx.text.getKey( "ScientficFree" ) : nx.text.getKey( "ScientficState" + this.state ) );
}else{
nx.gui.setActive( this.nodLock, "tipSp", this.info.is_open == 2 );
nx.gui.setString( this.nodStatus, "txt", nx.text.getKey( "ScientficState" + this.state ) );
nx.gui.setActive( this, "sbg", false );
}
nx.gui.setActive( this.nodStatus, "", this.state != 0 );
},
setIcon: function (){
let id = this.info.do_id ;
let cfg = game.configs.sprite_data.data_const;
let cj = cfg.liaoji_materials.val[0];
let mj = cfg.liaoji_target.val[0];
let path = "";
if( id > 0 ){
if( id == cj ){
path = "prefab/partner/wing/ui/partner_69";
}else if( id == mj ){
path = "prefab/partner/wing/ui/partner_70";
}else{
path = "prefab/partner/wing/ui/partner_68";
}
nx.gui.setSpriteFrame( this.icon, "", path );
nx.gui.setActive( this, "add", false );
}else{
nx.gui.setSpriteFrame( this.icon, "", "" );
}
},
getInfo: function () {
return this.info;
},
onTouch: function() {
}
});