//#region 文件引入 import { _decorator, Button, Component, Label, Node, sp, Sprite,Animation, RichText, SpriteFrame } from "cc"; import UIParse from "../../Mgr_UI/UIParse"; import WuGongData from "../../const/WuGongData"; import { GameTotalType, PropType } from "../../const/GameEnum"; import UIMgr from "../../Mgr_UI/UIMgr"; import { EUIForms } from "../../const/UIFormCnf"; import FrameLayout from "../../CComEx/FrameLayout"; import { IData } from "../../const/GameInterface"; import { COLOR_PARAMS } from "../../const/GGameData"; import StringUtils from "../../ExUtils/StringUtils"; import { IGongFa } from "../../Mgr_CSV/CsvEnum"; import { Global } from "../../Global"; import MesMgr from "../../MesEvent/MesMgr"; import { EGlobalEvent } from "../../MesEvent/EGlobalEvent"; //#endregion 文件引入 const {ccclass, property,menu} = _decorator; @ccclass("wugongitem_Proxy") export default class wugongitem_Proxy extends UIParse{ //#region 节点自动生成 @property(Label) lab_Arr_num1: Label = null; @property(Label) lab_Arr_num2: Label = null; @property(Label) lab_Arr_num3: Label = null; @property(Label) lab_NeedCoin: Label = null; @property(Button) btn_UpArr: Button = null; @property(Node) n_need: Node = null; @property(Label) lab_upCondtion: Label = null; @property(Node) n_red: Node = null; @property(Label) lab_gongfaName: Label = null; @property(Label) lab_gongfaLv: Label = null; @property(Sprite) spr_gfbg: Sprite = null; @property(Sprite) spr_icon: Sprite = null; @property(sp.Skeleton) spi_redlight: sp.Skeleton = null; @property(Sprite) spr_gfpbg: Sprite = null; @property(Node) n_Select: Node = null; //#endregion 节点自动生成 @property(FrameLayout) private mArrStarLayout: FrameLayout; @property({type:[SpriteFrame]}) protected mBgs: SpriteFrame[] = []; @property({type:[SpriteFrame]}) protected mBgts: SpriteFrame[] = []; private mGongFaTypeCnf:IGongFa; private ArrZhNames:string[] =["上手","成长","基础"] private ArrStarNums:number[]=[]; private canUpLv:boolean = true; private mWGData:WuGongData = null; private isLongPress:boolean = false; // 是否处于长按升级按钮状态 private duration:number = 0.2; // 长按升级时,触发升级效果的时间间隔 onButtonClick(button:Button){ /**点击事件触发*/ switch (button) { case this.btn_UpArr: if(!this.canUpLv) return; this.upLevel(); // 成功则更新进度并进入冷却 this.canUpLv = false; setTimeout(() => { this.canUpLv = true; }, 200); break; default: ConsoleEx.Log(button); break; } } addEvent(): void { // MesMgr.on(EGlobalEvent.GONGFA_REFRESH, this.refreshCondition, this); this.mArrStarLayout.m_ItemRendererFuntion = this.ArrItemRender.bind(this) CNodeUtils.addBtnLongpress(this.btn_UpArr, () => { this.pressDown()}, () => { this.pressUp()}); } private pressDown(): void { this.isLongPress = true; this.schedule(() => { if(this.isLongPress){ this.upLevel(true); } }, this.duration); } private pressUp(): void { this.isLongPress = false; this.unscheduleAllCallbacks(); } private upLevel(auto:boolean = false): void { const result = this.mDataMgr.Role.canUpgrade(this.mWGData.config.type, this.mWGData.id); // 可升级 if(result.res === 0){ this.mDataMgr.Token.subToken(PropType.eGold, result.data.levelUp_paycoin); this.mDataMgr.Role.levelUpWg(this.mWGData); this.reflshWugongInfo(); this.refreshCondition(); // MesMgr.event(EGlobalEvent.GONGFA_REFRESH); }else if(result.res == -1){ UIMgr.Ins.ShowTipsUI("升级失败,还没学会该功法"); }else if(result.res == 1){ // 钱不够,看视频免费升级 UIMgr.Ins.ShowUI(EUIForms.GongFaUpUI,{param:{ success:()=>{ // let wugong = this.mDataMgr.Role.getWugong(this.mWGData.config.type, this.mWGData.id); if (this.mWGData) { this.mDataMgr.Role.levelUpWg(this.mWGData); this.reflshWugongInfo(); this.refreshCondition(); // MesMgr.event(EGlobalEvent.GONGFA_REFRESH); } }, fail:()=>{ UIMgr.Ins.ShowTipsUI("升级失败,铜币不足") }}}); }else if(result.res == 2){ UIMgr.Ins.ShowTipsUI("升级失败,根基不足"); } // 自动升级失败,则取消长按 if(auto && result.res !== 0){ this.pressUp(); } } initWGInfo(wginfo:WuGongData): void { this.mWGData = wginfo; this.mGongFaTypeCnf = Global.CsvMgr.GongFa_csv[this.mWGData.config.type]; this.spr_gfbg.spriteFrame = this.mBgs[this.mWGData.config.quality - 1]; this.spr_gfpbg.spriteFrame = this.mBgts[this.mWGData.config.quality - 1]; const iData:IData = { type: GameTotalType.WUGONG, id: this.mWGData.config.id, num:1, } CNodeUtils.SwitchTextureByData(this.spr_icon, iData); this.refreshCondition(); this.reflshWugongInfo(); } // 刷新升级条件 private refreshCondition(){ const need = this.mWGData.levelUp_condition > 0; CNodeUtils.setActive(this.n_need, need); if(need){ this.lab_upCondtion.color = this.mDataMgr.Role.wuxue >= this.mWGData.levelUp_condition? COLOR_PARAMS.BLACK:COLOR_PARAMS.RED; CNodeUtils.switchText(this.lab_upCondtion, this.mWGData.levelUp_condition); } } // 刷新武功信息 reflshWugongInfo(){ // 是否启用 CNodeUtils.setActive(this.n_Select, this.mWGData.isUseing); // 武功天赋值 this.ArrStarNums = [ this.mWGData.config.talent, this.mWGData.config.grow, this.mWGData.config.overAll, ]; this.mArrStarLayout.m_ItemCount = this.ArrZhNames.length; // CNodeUtils.setActive(this.n_need, need); // if(need){ // this.lab_upCondtion.color = this.mDataMgr.Role.wuxue >= this.mWGData.levelUp_condition? COLOR_PARAMS.BLACK:COLOR_PARAMS.RED; // CNodeUtils.switchText(this.lab_upCondtion, this.mWGData.levelUp_condition); // } // 等级名字 CNodeUtils.switchText(this.lab_gongfaLv, `Lv.${this.mWGData.level}`); CNodeUtils.switchText(this.lab_gongfaName, this.mWGData.config.name); /**基础属性 */ CNodeUtils.switchText(this.lab_Arr_num1, `${this.mGongFaTypeCnf.key_name} ${this.mWGData.value_keyAtt}`); /**属性1 */ CNodeUtils.switchText(this.lab_Arr_num2, `${this.mGongFaTypeCnf.prop1} +${this.mWGData.attainment}`); /**属性2 */ const haveprop2 = this.mGongFaTypeCnf.prop2 && this.mGongFaTypeCnf.prop2.length > 0; CNodeUtils.setActive(this.lab_Arr_num3, haveprop2); if (haveprop2) { CNodeUtils.switchText(this.lab_Arr_num3, `${this.mGongFaTypeCnf.prop2} +${this.mWGData.attainment}`); } // 升级消费 const enough = this.refreshNeedCoin(); /**红点 */ const need = this.mWGData.levelUp_condition > 0; CNodeUtils.setActive(this.n_red, enough && (!need || this.mDataMgr.Role.wuxue >= this.mWGData.levelUp_condition)); // 品质特效 // if(this.mWGData.config.quality === 6){ // CNodeUtils.setActive(this.spi_redlight, true); // this.spi_redlight.setAnimation(0, "idle", true); // }else{ // CNodeUtils.setActive(this.spi_redlight, false); // } } private refreshNeedCoin():boolean{ const cost = this.mWGData.levelUp_paycoin; const enough = this.mDataMgr.Token.checkToken(PropType.eGold, cost); this.lab_NeedCoin.color = enough? COLOR_PARAMS.BLACK:COLOR_PARAMS.RED; CNodeUtils.switchText(this.lab_NeedCoin, StringUtils.formatLargeNumber(cost)); return enough; } private ArrItemRender(idx:number,tNode:Node){ const title = tNode.getChildByName("title"); CNodeUtils.switchText(title, this.ArrZhNames[idx]) const Layout = tNode.getChildByName("Layout").getComponent(FrameLayout); Layout.m_ItemCount = this.ArrStarNums[idx]; } //#region 刷新红点 refreshCoin() { const enough = this.refreshNeedCoin(); CNodeUtils.setActive(this.n_red, enough && (this.mDataMgr.Role.wuxue >= this.mWGData.levelUp_condition)); } refreshUseNew(oldwgid:number) { if(oldwgid === this.mWGData.id){ CNodeUtils.setActive(this.n_Select, false); } } //#endregion }