import LocalUtil from "../../ts/core/LocalUtil"; import GameModel from "../../ts/core/GameModel"; import { ELivingType, EAttrTypeL1 } from "../../ts/core/EEnum"; import SKTimeUtil from "../../ts/gear_2.3.4/util/SKTimeUtil"; import SKUIUtil from "../../ts/gear_2.3.4/util/SKUIUtil"; import SKDataUtil from "../../ts/gear_2.3.4/util/SKDataUtil"; import SkillUtil from "../../ts/game/skill/core/SkillUtil"; import { ESkillType, ActionType } from "../../ts/game/skill/core/SkillBase"; import { EActType } from "../../ts/game/battle/Battle"; import Report from "../../ts/gear_2.3.4/net/Report"; import MsgAlert from "../../ts/game/msg/MsgAlert"; import BtlInfo from "../../ts/btlInfo/BtlInfo"; cc.Class({ extends: cc.Component, properties: { timeLabel: cc.Label, RoundTime: cc.Node, AutoBtn: [cc.Node], lzBtn: cc.Node, lzCd: 0, longChangRound: 0, lzIcon: [cc.SpriteFrame], btmBtl: cc.Node, upBtl: cc.Node, petBtns: cc.Node, btnLayer: cc.Node, btlTimerLable: cc.Label, roundLable: cc.Label, round: { get() { return this.roundLable.string; }, set(n) { this.roundLable.string = n; } }, skillPanel: cc.Node, autoSkillPanel: cc.Node, autoPetSkillPanel: cc.Node, petSkillPanel: cc.Node, petSkillNode: cc.Node, backSkillBtn: cc.Node, autoIcons: [cc.Sprite], autoLayer: cc.Node, typeNodes: [cc.Sprite], typeTxtAtlas: cc.SpriteAtlas, skillNodes: [cc.Node], autoSkillNodes: [cc.Node], autoPetSkillNodes: [cc.Node], catchBtn: cc.Node, mpLabel: cc.Label, petPanel: cc.Node, petContent: cc.Node, petItem: cc.Node, itemPanel: cc.Node, scaleSmallNode: cc.Node, scaleBigNode: cc.Node, scaleNum: 0.8, _test: 0, test: { get() { return this._test; }, set(n) { this._test = n; n == 0 ? this.setPetSkill([]) : this.setPetSkill([1011]); } } }, ctor() { this.stageLogic = null; this.MainUILogic = null; this.lastSkill = 0; this.petLastSkill = 0; this.backType = 0; // 1 skill 2 btnlayer this.updateTimer = 0; this.battleTimer = 0; this.petId = 0; this.petItems = []; this.petSkillNodes = []; this.petAutoSkillNodes = []; this.isAuto = null; }, onLoad() { this.updateTime(); this.updateTimer = SKTimeUtil.loop(this.updateTime.bind(this), 30000); this.lzCd = 5; this.dontShowMoreBtlInfo() if (this.scaleNum == 0.8) { this.scaleSmallNode.active = true this.scaleBigNode.active = false } else { this.scaleSmallNode.active = false this.scaleBigNode.active = true } }, start() { this.initSkillPanel(); this.finishState(); if (this.MainUILogic == null) { let MainUI = cc.find('Canvas/MainUI'); let MainUILogic = MainUI.getComponent('MainUI'); this.MainUILogic = MainUILogic; } if (this.isAuto == null) { let isauto = LocalUtil.get('battle_isauto'); if (isauto == '' || isauto == null || isNaN(isauto)) { isauto = 0; } this.isAuto = isauto != 0; } let skill = LocalUtil.get('battle_r_skill'); if (skill == null || skill == 0) { skill = ESkillType.NormalAtkSkill; } this.setLastAction({ acttype: EActType.SKILL, actid: skill, }); let pskill = LocalUtil.get('battle_p_skill'); if (pskill == null || pskill == 0) { pskill = ESkillType.NormalAtkSkill; } this.setPetLastAction({ acttype: EActType.SKILL, actid: pskill, }); }, updateTime() { let time = new Date(); let h = time.getHours(); if (h < 10) { h = '0' + h; } let m = time.getMinutes(); if (m < 10) { m = '0' + m; } let t = `${h}:${m}`; this.timeLabel.string = t; }, onDestroy() { this.updateTimer = SKTimeUtil.cancelLoop(this.updateTimer); this.battleTimer = SKTimeUtil.cancelLoop(this.battleTimer); this.autoTimer = SKTimeUtil.cancelDelay(this.autoTimer); }, onEnable() { this.onBattle(); this.round = 1; this.hideBtlTimer(); this.finishState(); let SLDHMgr = require('../Activity/ShuiLuDaHui/sldh_mgr'); SLDHMgr.getInstance().hideShuiLuIcon(); for (let node of this.petSkillNodes) { node.destroy(); } this.petSkillNodes = []; }, showBtlInfo() { BtlInfo.Instance.openBtlInfoPanel(); }, dontShowMoreBtlInfo() { var iconSee = cc.find("infolayer/btlInfoBtn/see", this.node) var iconNoSee = cc.find("infolayer/btlInfoBtn/nosee", this.node) iconSee.active = BtlInfo.Instance.showMoreInfo ? true : false iconNoSee.active = BtlInfo.Instance.showMoreInfo ? false : true }, setMp(mp, maxmp = null) { if (!maxmp) { let temp = GameModel.player; if (temp) { temp = temp.gameData; if (temp) { temp = temp.attr1; if (temp) { if (SKDataUtil.getLength(temp) >= EAttrTypeL1.MP_MAX) { maxmp = temp[EAttrTypeL1.MP_MAX]; } else { cc.warn(`$警告:無此屬性值[${EAttrTypeL1.MP_MAX}]`); } } else { cc.warn(`$警告:無屬性列表`); } } else { cc.warn(`$警告:無遊戲數據`); } } else { cc.warn(`$警告:無玩家數據`); } } this.mpLabel.string = '當前法力:' + mp + '/' + maxmp; let roleindex = (GameModel.player.race - 1) * 2 + GameModel.player.sex - 1; let curids = JSON.parse(JSON.stringify(SkillUtil.getRoleSkillIds(roleindex))); this.isLong = curids.length == 7; if (this.isLong) curids.shift() if (curids) { for (let index = 0; index < curids.length; index++) { let skillId = curids[index]; let skill = SkillUtil.getSkill(skillId); if (!skill) { cc.warn(`找不到技能:${skillId}`); continue; } let skillnode = this.skillNodes[index]; if (SKUIUtil.isValid(skillnode)) { let xhNode = cc.find('expLab', skillnode); let xhLabel = xhNode.getComponent(cc.Label) let xhNum = Math.ceil(skill.maxExp * (index % 2 == 0 ? 0.1 : 0.3)); if (xhLabel) xhLabel.string = `法力:${xhNum}` if (xhNum > mp) { xhLabel.node.color = new cc.color(230, 54, 44) } else { xhLabel.node.color = new cc.color(90, 52, 52) } } } } }, setPetId(petid) { this.petId = petid; }, onBattle() { this.lzCd = 5; this.lzBtn.getComponent(cc.Sprite).spriteFrame = this.lzIcon[0]; let stage = cc.find('Canvas/BattleLayer/BattleStage'); if (stage) { this.stageLogic = stage.getComponent('BattleStage'); } if (this.isAuto) { this.setAutoTimer(3); } }, scaleSmallObj() { var objPNode = cc.find("Canvas/BattleLayer/BattleStage/objLayer") this.scaleNum = 0.6 if (objPNode) { var childs = objPNode.children; for (let i = 0; i < childs.length; i++) { childs[i].scale = 0.6; if(childs[i].name == "baby") continue childs[i].getChildByName("nameRT").scale = 1.33; } } this.scaleSmallNode.active = false; this.scaleBigNode.active = true; }, scaleBigObj() { var objPNode = cc.find("Canvas/BattleLayer/BattleStage/objLayer") this.scaleNum = 0.8 if (objPNode) { var childs = objPNode.children; for (let i = 0; i < childs.length; i++) { childs[i].scale = 0.8; if(childs[i].name == "baby") continue childs[i].getChildByName("nameRT").scale = 1; } } this.scaleSmallNode.active = true; this.scaleBigNode.active = false; }, normalState() { this.isAuto = false; if (this.canOperation == false) { return; } this.backSkillBtn.active = false; this.petBtns.active = false; this.AutoBtn[0].active = true; this.AutoBtn[1].active = false; this.MainUILogic && (this.MainUILogic.btmOper.active = false); this.MainUILogic && (this.MainUILogic.btmOper.x = 0); this.skillPanel.active = false; this.autoLayer.active = false; this.scheduleOnce(() => { this.runStartAction(); }, 0); }, autoState() { this.isAuto = true; this.backSkillBtn.active = false; this.AutoBtn[1].active = true; this.AutoBtn[0].active = false; this.btmBtl.active = false; this.upBtl.active = false; this.MainUILogic && (this.MainUILogic.btmOper.active = true); this.MainUILogic && (this.MainUILogic.btmOper.x = -100); this.skillPanel.active = false; this.petBtns.active = false; this.autoLayer.active = true; }, petState() { this.isAuto = false; if (this.canOperation == false) { return; } this.backSkillBtn.active = false; this.petBtns.active = true; }, setAutoTimer(time = 3) { this.isAuto = true; let self = this; this.autoTimer = SKTimeUtil.delay(() => { let acttype = self.lastAction.acttype; let actid = self.lastAction.actid; GameModel.send('c2s_btl_act', { action: acttype, actionid: actid, targetid: 0, onlyid: GameModel.player.onlyid, }); acttype = self.petLastAction.acttype; actid = self.petLastAction.actid; GameModel.send('c2s_btl_act', { action: acttype, actionid: actid, targetid: 0, onlyid: self.petId, }); }, time); }, finishState() { this.btnLayer.active = true; this.lzBtn.active = false; this.backSkillBtn.active = false; this.AutoBtn[0].active = !this.isAuto; this.AutoBtn[1].active = this.isAuto; this.petBtns.active = false; this.btmBtl.active = false; this.upBtl.active = false; this.MainUILogic && (this.MainUILogic.btmOper.active = true); this.MainUILogic && (this.MainUILogic.btmOper.x = -100); this.skillPanel.active = false; this.autoLayer.active = this.isAuto; this.canOperation = false; this.hideSkillPanel(); this.hidePetSkillPanel(); this.closeAutoSkillPanel(); this.closePetAutoSkillPanel(); }, startRound() { if (!SKUIUtil.isActive(this.node)) { return; } //龍族變身部分start if (this.lzCd > 0) this.lzCd--; if (this.longChangRound > 0) this.longChangRound--; if (this.isLong) { this.lzBtn.children[0].getComponent(cc.Label).string = this.lzCd; if (this.lzCd == 0) { this.lzBtn.getComponent(cc.Sprite).spriteFrame = this.lzIcon[1]; this.lzBtn.children[0].getComponent(cc.Label).string = ""; } } //龍族變身部分end this.reSetBtlTimer(); this.catchBtn.active = this.stageLogic.hasBB(); this.canOperation = true; this.btnLayer.active = true; if (this.isAuto) { this.autoState(); this.setAutoTimer(); } else { // let rolelogic = this.stageLogic.getRoleLogicByOnlyId(GameModel.player.onlyid); // if (rolelogic == null || rolelogic.isdead) { // let petlogic = this.stageLogic.getRoleLogicByOnlyId(this.petId); // if (petlogic == null || petlogic.isdead) { // this.finishState(); // return; // } // this.petOperation(); // return; // } this.normalState(); } }, finishOper() { this.finishState(); }, hideBtlTimer() { this.btlTimerLable.node.active = false; }, reSetBtlTimer() { this.btlTimerNum = 30; this.btlTimerLable.node.active = true; this.btlTimerLable.string = this.btlTimerNum; if (!SKTimeUtil.hasRun(this.battleTimer)) { let self = this; this.battleTimer = SKTimeUtil.loop(() => { self.btlTimerNum--; if (self.btlTimerNum <= 0) { self.btlTimerNum = 0; } self.btlTimerLable.string = this.btlTimerNum; }, 1000); } }, setRound(round) { this.roundLable.string = round; }, openPetPanel() { this.petPanel.active = true; this.petPanel.runAction( cc.moveTo(0.2, 419, -80) ); this.btnLayer.active = false; }, closePetPanel() { this.petPanel.x = 1064; this.petPanel.active = false; this.btnLayer.active = true; }, openItemPanel(e, d) { this.backType = 6; this.itemPanel.active = true; this.itemPanel.x = 1064; this.itemPanel.y = -80; let logic = this.itemPanel.getComponent('BattleUIItemPanel'); let operid = GameModel.player.onlyid; if (d == 'pet') { operid = this.petId; } logic.updateItemList(operid); this.itemPanel.runAction( cc.moveTo(0.2, 419, -80) ); this.btnLayer.active = false; }, closeItemPanel() { this.itemPanel.x = 1064; this.itemPanel.active = false; this.btnLayer.active = true; }, closeSkillPanel() { this.skillPanel.x = 1064; this.skillPanel.active = false; this.btnLayer.active = true; }, openSkillPanel() { this.skillPanel.active = true; this.skillPanel.runAction( cc.moveTo(0.2, 419, -80) ); this.btnLayer.active = false; }, hideSkillPanel() { this.skillPanel.active = false; }, showSkillPanel() { this.skillPanel.active = true; this.skillPanel.x = 364; }, skillBtnClicked(e, d) { if (this.skillPanel.active) { this.closeSkillPanel(); } else { this.openSkillPanel(); } }, initSkillPanel() { let roleindex = (GameModel.player.race - 1) * 2 + GameModel.player.sex - 1; let curids = JSON.parse(JSON.stringify(SkillUtil.getRoleSkillIds(roleindex))); let curtypes = SkillUtil.getRoleESkillTypes(roleindex); this.isLong = curids.length == 7; var autoWordType = [ [ ["單混", "群混", "單睡", "群睡", "單冰", "群冰"], ["單毒", "群毒", "單睡", "群睡", "單冰", "群冰"] ], [ ["單風", "群風", "單雷", "群雷", "單水", "群水"], ["單火", "群火", "單雷", "群雷", "單水", "群水"] ], [ ["單速", "群速", "單攻", "群攻", "單抽", "群抽"], ["單防", "群防", "單攻", "群攻", "單抽", "群抽"] ], [ ["單回", "群回", "單秒", "群秒", "單忘", "群忘"], ["單魅", "群魅", "單秒", "群秒", "單忘", "群忘"] ], [ ["單破", "群破", "單愈", "群愈", "單掃", "群掃"], ["單擊", "群擊", "單愈", "群愈", "單掃", "群掃"] ] ] if (this.isLong) curids.shift() if (curids && curtypes) { for (let index = 0; index < curtypes.length; index++) { this.typeNodes[index].spriteFrame = this.typeTxtAtlas.getSpriteFrame(`skill_type_${curtypes[index]}`); } for (let index = 0; index < curids.length; index++) { let skillId = curids[index]; let skill = SkillUtil.getSkill(skillId); if (!skill) { cc.warn(`找不到技能:${skillId}`); continue; } let skillnode = this.skillNodes[index]; if (SKUIUtil.isValid(skillnode)) { skillnode.skillid = skillId; let skillframenode = cc.find('icon', skillnode); let spr = skillframenode.getComponent(cc.Sprite); spr.spriteFrame = SkillUtil.getSkillIcon(skill.icon); } else { cc.warn(`${skillId}無法放入`); } let autoNode = this.autoSkillNodes[index]; if (SKUIUtil.isValid(autoNode)) { autoNode.skillid = skillId; let skillFrame = cc.find('icon', autoNode); if (skillFrame) { let autoSprite = skillFrame.getComponent(cc.Sprite); autoSprite.spriteFrame = SkillUtil.getSkillIcon(skill.icon); } let skillClass = cc.find('class', autoNode); if (skillClass) { let autoClass = skillClass.getComponent(cc.Label); autoClass.string = autoWordType[GameModel.player.race - 1][GameModel.player.sex - 1][index]; } } else { cc.warn(`${skillId}無法放入`); } } } else { Report.report(`戰鬥界面:技能面板找不到定義${roleindex}}`); } let autonode = this.autoSkillNodes[6]; autonode.skillid = ESkillType.NormalAtkSkill; autonode = this.autoSkillNodes[7]; autonode.skillid = ESkillType.NormalDefSkill; let attr = GameModel.player.gameData.attr1; let mpValue = SKDataUtil.valueForKey(attr, EAttrTypeL1.MP); if (!mpValue) { cc.warn(`$警告:戰鬥界面技能MP屬性無效!`); return; } let maxMpValue = SKDataUtil.valueForKey(attr, EAttrTypeL1.MP_MAX); if (!maxMpValue) { cc.warn(`$警告:戰鬥界面技能MP_MAX屬性無效!`); return; } this.setMp(mpValue, maxMpValue); }, initPetPanel(pets) { this.petContent.removeAllChildren(); if (typeof pets != 'object') { return; } let n = 1; let self = this; for (let pet of pets) { if (pet.type != ELivingType.PET) { continue; } if (pet.ownonlyid != GameModel.player.onlyid) { continue; } let petitem = cc.instantiate(this.petItem); let logic = petitem.getComponent('BattleUIPetItem'); logic.setName(pet.name); logic.setLevel(pet.relive, pet.level); logic.setHeadIcon(pet.resid); logic.isFight = pet.isfight == 1; logic.isDead = false; logic.selectCallback = () => { self.closePetPanel(); GameModel.send('c2s_btl_act', { action: EActType.SUMMON, actionid: pet.onlyid, targetid: 0, onlyid: GameModel.player.onlyid, }); }; petitem.onlyid = pet.onlyid; petitem.active = true; petitem.parent = this.petContent; petitem.y = this.petItem.y - (this.petItem.height + 10) * n; petitem.x = 0; n++; this.petItems.push(petitem); } this.petContent.height = (n + 1) * (this.petItem.height + 10); }, changePkTitle(n) { let pktitle = cc.find('pkTitle', this.node); if (pktitle) { if (n == '') { pktitle.active = false; } else { pktitle.active = true; cc.find('pkTitle/Label', this.node).getComponent(cc.Label).string = n; } } }, hidePkTitle() { let pktitle = cc.find('pkTitle', this.node); if (pktitle.active) { pktitle.active = false; } }, uiPetDead(onlyid) { for (const petitem of this.petItems) { if (petitem.onlyid == onlyid) { let logic = petitem.getComponent('BattleUIPetItem'); logic.isDead = true; } } }, // 設置召喚獸技能 setPetSkill(skilllist) { if (!SKDataUtil.isArray(skilllist)) { console.warn(`召喚獸[${this.petId}]技能列表無效!`); } SKUIUtil.destroyList(this.petSkillNodes); SKUIUtil.destroyList(this.petAutoSkillNodes); let autonode = this.autoPetSkillNodes[0]; autonode.skillid = ESkillType.NormalAtkSkill; autonode = this.autoPetSkillNodes[1]; autonode.skillid = ESkillType.NormalDefSkill; let n = 0; for (let skillid of skilllist) { if (skillid == 0) { continue; } let skill = SkillUtil.getSkill(skillid); if (skill == null) { continue; } if (skill.action_type == ActionType.PASSIVE) { continue; } let autoskillnode = cc.instantiate(autonode); autoskillnode.skillid = skillid; let skillframe = cc.find('skillicon', autoskillnode); let autospr = skillframe.getComponent(cc.Sprite); autospr.spriteFrame = SkillUtil.getSkillIcon(skill.icon); autoskillnode.parent = autonode.parent; autoskillnode.x = 80 + (Math.floor(n / 2) + 1) * 100; autoskillnode.y = n % 2 == 0 ? -57 : 57; this.petAutoSkillNodes.push(autoskillnode); let psnode = cc.instantiate(this.petSkillNode); psnode.active = true; psnode.parent = this.petSkillNode.parent; psnode.skillid = skillid; psnode.y = -50 - 115 * n; let pnamelabel = cc.find('RoleSkillItem1/nameLab', psnode); let pnamel = pnamelabel.getComponent(cc.Label); pnamel.string = skill.getName(); let sprnode = cc.find('RoleSkillItem1/icon', psnode); let spr = sprnode.getComponent(cc.Sprite); spr.spriteFrame = SkillUtil.getSkillIcon(skill.icon); this.petSkillNodes.push(psnode); n++; } this.autoPetSkillPanel.width = Math.ceil(n / 2) * 100 + 160; this.petSkillNode.parent.height = 115 * n + 50; let scroll = SKUIUtil.getParentScroll(this.petSkillNode); SKUIUtil.scrollToTop(scroll); }, onAutoBtnClick(e, d) { this.setAutoTimer(3); this.autoState(); LocalUtil.set('battle_isauto', 1); }, onUnAutoBtnClick(e, d) { SKTimeUtil.cancelDelay(this.autoTimer); this.autoTimer = 0; this.normalState(); this.AutoBtn[1].active = false; this.AutoBtn[0].active = true; this.autoLayer.active = false; LocalUtil.set('battle_isauto', 0); }, setLastSkill(skillid) { this.lastSkill = skillid; this.setPlayerAutoSkill(skillid); }, setPetLastSkill(skillid) { this.petLastSkill = skillid; this.petLastAction.acttype = EActType.SKILL; this.petLastAction.actid = skillid; this.setPetAutoSkill(skillid); }, setLastAction(act) { this.lastAction = act; if (act.acttype == EActType.SKILL) { this.setLastSkill(act.actid); } }, setPetLastAction(act) { this.petLastAction = act; if (act.acttype == EActType.SKILL) { this.setPetLastSkill(act.actid); } }, onSelectSkill(e, d) { let node = e.target; this.setLastAction({ acttype: EActType.SKILL, actid: node.skillid, }); this.stageLogic.selectSkill(GameModel.player.onlyid, node.skillid); this.hideSkillPanel(); this.backType = 1; this.backSkillBtn.active = true; }, onSelectLzSkill(e, d) { if (this.lzCd > 0) { MsgAlert.addMsg("變身技能冷卻中"); return } GameModel.send('c2s_btl_act', { action: EActType.SKILL, actionid: 1045, targetid: 0, onlyid: GameModel.player.onlyid, }); this.lzBtn.getComponent(cc.Sprite).spriteFrame = this.lzIcon[0]; this.lzBtn.active = false; this.longChangRound = 2; this.lzCd = 6; }, onPetSelectSkill(e, d) { let node = e.target; this.setPetLastAction({ acttype: EActType.SKILL, actid: node.skillid, }); this.stageLogic.selectSkill(this.petId, node.skillid); this.hidePetSkillPanel(); this.backType = 4; this.backSkillBtn.active = true; }, onBackSelectSkill(e, d) { this.stageLogic.cleanAllRoleSelectFlag(); if (this.backType == 1) { this.showSkillPanel(); } if (this.backType == 2) { this.btnLayer.active = true; } if (this.backType == 3) { this.btnLayer.active = true; } if (this.backType == 4) { this.showPetSkillPanel(); } if (this.backType == 5) { this.petOperation(); } if (this.backType == 6) { this.openItemPanel(); } this.backSkillBtn.active = false; }, onButtonClick(e, d) { this.lzBtn.active = false; if (d == 'atk') { this.setLastAction({ acttype: EActType.SKILL, actid: ESkillType.NormalAtkSkill, }); this.stageLogic.selectSkill(GameModel.player.onlyid, ESkillType.NormalAtkSkill); this.backType = 2; this.btnLayer.active = false; this.backSkillBtn.active = true; } else if (d == 'last') { this.stageLogic.selectSkill(GameModel.player.onlyid, this.lastSkill); this.backType = 2; this.btnLayer.active = false; this.backSkillBtn.active = true; } else if (d == 'run') { // 逃跑 GameModel.send('c2s_btl_act', { action: EActType.RUN_AWAY, actionid: 0, targetid: 0, onlyid: GameModel.player.onlyid, }); // this.stageLogic.showLianji(11); } else if (d == 'def') { // 防禦 this.setLastAction({ acttype: EActType.SKILL, actid: ESkillType.NormalDefSkill, }); GameModel.send('c2s_btl_act', { action: EActType.SKILL, actionid: ESkillType.NormalDefSkill, targetid: 0, onlyid: GameModel.player.onlyid, }); } else if (d == 'catch') { // 捕捉 // let camp = this.stageLogic.getObjCamp(GameModel.player.onlyid); this.stageLogic.selectTarget(2, (targetid) => { GameModel.send('c2s_btl_act', { action: EActType.CATCH, actionid: 0, targetid: targetid, onlyid: GameModel.player.onlyid, }); }); this.backType = 2; this.btnLayer.active = false; this.backSkillBtn.active = true; } else if (d == 'sum') { // 召喚 this.openPetPanel(); } else if (d == 'sumback') { // 召喚 GameModel.send('c2s_btl_act', { action: EActType.SUMMON_BACK, actionid: 0, targetid: 0, onlyid: GameModel.player.onlyid, }); } else if (d == 'protect') { // 保護 let camp = this.stageLogic.getObjCamp(GameModel.player.onlyid); this.stageLogic.selectTarget(camp, (targetid) => { GameModel.send('c2s_btl_act', { action: EActType.PROTECT, actionid: 0, targetid: targetid, onlyid: GameModel.player.onlyid, }); }); this.backType = 2; this.btnLayer.active = false; this.backSkillBtn.active = true; } else if (d == 'autoskill') { // 自動戰鬥技能 this.showAutoSkillPanel(); } else if (d == 'autopetskill') { // 自動戰鬥技能 this.showPetAutoSkillPanel(); } }, runStartAction() { this.upBtl.active = true; this.btmBtl.active = true; this.upBtl.stopAllActions(); this.btmBtl.stopAllActions(); this.petBtns.active = false; let uppos = { x: -52, y: 113 }; let btmpos = { x: -105, y: 60 }; this.upBtl.y = -500; this.btmBtl.x = 700; this.upBtl.runAction(cc.moveTo(0.3, uppos).easing(cc.easeBackOut())); this.btmBtl.runAction(cc.moveTo(0.3, btmpos).easing(cc.easeBackOut())); this.scheduleOnce(() => { if (this.isLong && this.longChangRound <= 0) this.lzBtn.active = true; }, 0.2); }, setPlayerAutoSkill(skillid) { this.lastSkill = skillid; this.lastAction.acttype = EActType.SKILL; this.lastAction.actid = skillid; let skillinfo = SkillUtil.getSkill(skillid); if (skillinfo) { this.autoIcons[0].spriteFrame = SkillUtil.getSkillIcon(skillinfo.icon); } LocalUtil.set('battle_r_skill', skillid); }, setPetAutoSkill(skillid) { this.petLastSkill = skillid; this.petLastAction.acttype = EActType.SKILL; this.petLastAction.actid = skillid; let skill = SkillUtil.getSkill(skillid); if (skill) { this.autoIcons[1].spriteFrame = SkillUtil.getSkillIcon(skill.icon); } LocalUtil.set('battle_p_skill', skillid); }, ontestAtk(e, d) { if (d == 1) { // this.stageLogic.playEffectOnStage(1007, false); // this.stageLogic.onTestAttack2(); } else { // this.stageLogic.playEffectOnStage(1007, true); // this.stageLogic.onTestAttack(); } this.stageLogic.testObjEffect(); }, onSelectAutoSkill(e, d) { let node = e.target; this.setPlayerAutoSkill(node.skillid); this.closeAutoSkillPanel(); }, showAutoSkillPanel() { if (this.autoSkillPanel.x <= 600) { this.closeAutoSkillPanel(); } else { this.autoSkillPanel.x = 1052; this.closePetAutoSkillPanel(); this.autoSkillPanel.runAction(cc.moveTo(0.2, { x: 256, y: -128 })); } }, closeAutoSkillPanel() { this.autoSkillPanel.x = 1052; }, onSelectPetAutoSkill(e, d) { let node = e.target; this.setPetAutoSkill(node.skillid); this.closePetAutoSkillPanel(); }, showPetAutoSkillPanel() { if (this.autoPetSkillPanel.x <= 600) { this.closePetAutoSkillPanel(); } else { this.autoPetSkillPanel.x = 1000; this.closeAutoSkillPanel(); let w = this.autoPetSkillPanel.width; let x = 360 - (w - 160); this.autoPetSkillPanel.runAction(cc.moveTo(0.2, { x: x, y: -128 })); } }, closePetAutoSkillPanel() { this.autoPetSkillPanel.x = 1000; }, petOperation() { if (this.petId == 0) { this.finishOper(); return; } this.backType = 3; this.btmBtl.active = false; this.upBtl.active = false; this.MainUILogic && (this.MainUILogic.btmOper.active = false); this.MainUILogic && (this.MainUILogic.btmOper.x = 0); this.backSkillBtn.active = false; this.petBtns.active = true; }, closePetSkillPanel() { this.petSkillPanel.x = 1164; this.petSkillPanel.active = false; this.petBtns.active = true; }, openPetSkillPanel() { this.petSkillPanel.active = true; this.petSkillPanel.runAction( cc.moveTo(0.2, 420, -80) ); this.petBtns.active = false; }, hidePetSkillPanel() { this.petSkillPanel.active = false; }, showPetSkillPanel() { this.petSkillPanel.active = true; this.petSkillPanel.x = 420; }, onPetBtnClick(e, d) { if (d == 'atk') { this.setPetLastAction({ acttype: EActType.SKILL, actid: ESkillType.NormalAtkSkill, }); this.stageLogic.selectSkill(this.petId, ESkillType.NormalAtkSkill); } else if (d == 'def') { this.setPetLastAction({ acttype: EActType.SKILL, actid: ESkillType.NormalDefSkill, }); GameModel.send('c2s_btl_act', { action: EActType.SKILL, actionid: ESkillType.NormalDefSkill, targetid: 0, onlyid: this.petId, }); } else if (d == 'showskill') { this.openPetSkillPanel(); } else if (d == 'closeskill') { this.closePetSkillPanel(); } else if (d == 'protect') { // 保護 let camp = this.stageLogic.getObjCamp(this.petId); this.stageLogic.selectTarget(camp, (targetid) => { GameModel.send('c2s_btl_act', { action: EActType.PROTECT, actionid: 0, targetid: targetid, onlyid: this.petId, }); }); this.backType = 5; this.petBtns.active = false; this.backSkillBtn.active = true; } }, });