import { ActFightStart, ActionType, fightLogList, fightLogOne } from "../../common/Xys"; import { BattleTeamId, FightType } from "../../data/const/TypeConst"; import GameDataCenter from "../../data/GameDataCenter"; import UEBase from "../../frameWork/compment/UEBase"; import { eg } from "../../frameWork/eg"; import AssetMgr from "../../utils/AssetMgr"; import { BattleGridConstant } from "./BattleGridConstant"; import UEBattleRole from "./UEBattleRole"; const { ccclass, property } = cc._decorator; @ccclass export default class UEBattleView extends UEBase { @property(cc.Prefab) rolePrefab: cc.Prefab = null; @property(cc.Prefab) subHpPrefab: cc.Prefab = null; @property(cc.Prefab) cellPrefab: cc.Prefab = null!; @property(cc.Node) roleContent: cc.Node = null; @property(cc.Node) hpLayer: cc.Node = null @property(cc.Node) cellLayer: cc.Node = null; fightStart: ActFightStart; fightLogList: fightLogList; static readonly BundleKey: string = "battle"; static readonly PrefabUrl: string = "UEBattleView"; static readonly CLS: string = "UEBattleView"; type: FightType; huihe: number; curIndex: number; static s_ins: UEBattleView; TxtRound: cc.Label; static getInstance() { return this.s_ins } Init() { UEBattleView.s_ins = this; this.fightStart = { "from": "pve", "seed": 29576, "teams": { "10": { "fid": "106364", "zhanwei": 0, "level": 0, }, "20": { "fid": "1022", "zhanwei": 0, "level": 0, } } }; this.fightLogList = { "win": 1, "log": { "1": [{ "aType": ActionType.round, "atker": { "fid": "", "iid": "", "hp": 0, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 943267, "nuqi": 0, "buff": [], "effect": [ [ "huifu", 2100 ] ], "status": 0 }], }, { "aType": ActionType.buff, "atker": { "fid": "1022", "iid": "20", "hp": 707156, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "1022", "iid": "20", "hp": 707156, "nuqi": 1819, "buff": [], "effect": [ [ "xixue", 11400 ] ], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 883267, "nuqi": 659, "buff": [ [ "jiyun", 1 ] ], "effect": [ [ "hp", -60000 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "1022", "iid": "20", "hp": 707156, "nuqi": 1819, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.buff, "atker": { "fid": "106364", "iid": "10", "hp": 883267, "nuqi": 659, "buff": [ [ "jiyun", 1 ] ], "effect": [ [ "jiyun", 1 ] ], "status": 0 }, "target": [] }, { "aType": ActionType.over, "atker": { "fid": "106364", "iid": "10", "hp": 883267, "nuqi": 659, "buff": [], "effect": [], "status": 0 }, "target": [] } ], "2": [{ "aType": ActionType.round, "atker": { "fid": "", "iid": "", "hp": 0, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 885367, "nuqi": 659, "buff": [], "effect": [ [ "huifu", 2100 ] ], "status": 0 }] }, { "aType": ActionType.buff, "atker": { "fid": "1022", "iid": "20", "hp": 707156, "nuqi": 1819, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "1022", "iid": "20", "hp": 707156, "nuqi": 3733, "buff": [], "effect": [ [ "xixue", 22121 ] ], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 768942, "nuqi": 1355, "buff": [], "effect": [ [ "baoji", -116425 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "1022", "iid": "20", "hp": 707156, "nuqi": 3733, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.buff, "atker": { "fid": "106364", "iid": "10", "hp": 768942, "nuqi": 1355, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 768942, "nuqi": 3227, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 605306, "nuqi": 4474, "buff": [], "effect": [ [ "hp", -101850 ] ], "status": 0 }] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 832958, "nuqi": 3227, "buff": [], "effect": [ [ "huifu", 64016 ] ], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 507489, "nuqi": 4474, "buff": [], "effect": [ [ "lianji", -97817 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "106364", "iid": "10", "hp": 832958, "nuqi": 3227, "buff": [], "effect": [], "status": 0 }, "target": [] } ], "3": [{ "aType": ActionType.round, "atker": { "fid": "", "iid": "", "hp": 0, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 835058, "nuqi": 3227, "buff": [], "effect": [ [ "huifu", 2100 ] ], "status": 0 }] }, { "aType": ActionType.buff, "atker": { "fid": "1022", "iid": "20", "hp": 507489, "nuqi": 4474, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "1022", "iid": "20", "hp": 518778, "nuqi": 6374, "buff": [], "effect": [ [ "xixue", 11289 ] ], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 775646, "nuqi": 3916, "buff": [], "effect": [ [ "hp", -59412 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "1022", "iid": "20", "hp": 518778, "nuqi": 6374, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.buff, "atker": { "fid": "106364", "iid": "10", "hp": 775646, "nuqi": 3916, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 775646, "nuqi": 5767, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 415919, "nuqi": 7039, "buff": [], "effect": [ [ "hp", -102859 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "106364", "iid": "10", "hp": 775646, "nuqi": 5767, "buff": [], "effect": [], "status": 0 }, "target": [] } ], "4": [{ "aType": ActionType.round, "atker": { "fid": "", "iid": "", "hp": 0, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 777746, "nuqi": 5767, "buff": [], "effect": [ [ "huifu", 2100 ] ], "status": 0 }] }, { "aType": ActionType.buff, "atker": { "fid": "1022", "iid": "20", "hp": 415919, "nuqi": 7039, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "1022", "iid": "20", "hp": 427319, "nuqi": 8850, "buff": [], "effect": [ [ "xixue", 11400 ] ], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 717746, "nuqi": 6414, "buff": [], "effect": [ [ "hp", -60000 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "1022", "iid": "20", "hp": 427319, "nuqi": 8850, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.buff, "atker": { "fid": "106364", "iid": "10", "hp": 717746, "nuqi": 6414, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 717746, "nuqi": 8377, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 323452, "nuqi": 9529, "buff": [], "effect": [ [ "hp", -103867 ] ], "status": 0 }] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 781762, "nuqi": 8377, "buff": [], "effect": [ [ "huifu", 64016 ] ], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 222610, "nuqi": 9529, "buff": [], "effect": [ [ "lianji", -100842 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "106364", "iid": "10", "hp": 781762, "nuqi": 8377, "buff": [], "effect": [], "status": 0 }, "target": [] } ], "5": [{ "aType": ActionType.round, "atker": { "fid": "", "iid": "", "hp": 0, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 783862, "nuqi": 8377, "buff": [], "effect": [ [ "huifu", 2100 ] ], "status": 0 }] }, { "aType": ActionType.buff, "atker": { "fid": "1022", "iid": "20", "hp": 222610, "nuqi": 9529, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "1022", "iid": "20", "hp": 233675, "nuqi": 11455, "buff": [], "effect": [ [ "xixue", 11065 ] ], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 725626, "nuqi": 9055, "buff": [], "effect": [ [ "hp", -58236 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "1022", "iid": "20", "hp": 233675, "nuqi": 11455, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.buff, "atker": { "fid": "106364", "iid": "10", "hp": 725626, "nuqi": 9055, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 725626, "nuqi": 10940, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 129808, "nuqi": 12088, "buff": [], "effect": [ [ "hp", -103867 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "106364", "iid": "10", "hp": 725626, "nuqi": 10940, "buff": [], "effect": [], "status": 0 }, "target": [] } ], "6": [{ "aType": ActionType.round, "atker": { "fid": "", "iid": "", "hp": 0, "nuqi": 0, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 727726, "nuqi": 10940, "buff": [], "effect": [ [ "huifu", 2100 ] ], "status": 0 }] }, { "aType": ActionType.buff, "atker": { "fid": "1022", "iid": "20", "hp": 129808, "nuqi": 12088, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "1022", "iid": "20", "hp": 140761, "nuqi": 13934, "buff": [], "effect": [ [ "xixue", 10953 ] ], "status": 0 }, "target": [{ "fid": "106364", "iid": "10", "hp": 670079, "nuqi": 11638, "buff": [], "effect": [ [ "hp", -57647 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "1022", "iid": "20", "hp": 140761, "nuqi": 13934, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.buff, "atker": { "fid": "106364", "iid": "10", "hp": 670079, "nuqi": 11638, "buff": [], "effect": [], "status": 0 }, "target": [] }, { "aType": ActionType.skill, "atker": { "fid": "106364", "iid": "10", "hp": 670079, "nuqi": 0, "buff": [], "effect": [ [ "huifu", 35855 ] ], "status": 0 }, "target": [] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 705934, "nuqi": 1813, "buff": [], "effect": [], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 37902, "nuqi": 14627, "buff": [], "effect": [ [ "hp", -102859 ] ], "status": 0 }] }, { "aType": ActionType.atk, "atker": { "fid": "106364", "iid": "10", "hp": 779552, "nuqi": 1813, "buff": [], "effect": [ [ "huifu", 73618 ] ], "status": 0 }, "target": [{ "fid": "1022", "iid": "20", "hp": 0, "nuqi": 14627, "buff": [], "effect": [ [ "lianji", -216709 ] ], "status": 0 }] }, { "aType": ActionType.over, "atker": { "fid": "106364", "iid": "10", "hp": 779552, "nuqi": 1813, "buff": [], "effect": [], "status": 0 }, "target": [] } ] } } this.TxtRound = this.node.getChildByName("ImgDi").getChildByName("TxtRound").getComponent(cc.Label); this.initEvent(); this.LoadCell(); } initEvent(): void { } //关闭界面 onDisable(): void { this.node.destroy(); } /** 加载地图数据 */ private LoadCell() { for (let i = 0; i < BattleGridConstant.COL; i++) { for (let j = 0; j < BattleGridConstant.ROW; j++) { this.CreateCell(i, j); } } } /** 创建格子 */ private CreateCell(i: number, j: number) { let cell = cc.instantiate(this.cellPrefab); this.cellLayer.addChild(cell); cell.width = BattleGridConstant.CELL_WIDTH; cell.height = BattleGridConstant.CELL_HEIGHT; let pos = this.GetPosByIdx(i, j); cell.setPosition(pos); cell.name = `${(i + 1) * 10 + (j + 1)}`; cell.getChildByName("txtIndex").getComponent(cc.Label).string = `${(i + 1) * 10 + (j + 1)}`; return cell; } /** 根据索引获取实际像素坐标 */ private GetPosByIdx(i: number, j: number): cc.Vec3 { const startX = -(BattleGridConstant.ROW * BattleGridConstant.CELL_WIDTH) / 2; const startY = (BattleGridConstant.COL * BattleGridConstant.CELL_HEIGHT) / 2; return cc.v3( startX + j * BattleGridConstant.CELL_WIDTH + BattleGridConstant.CELL_WIDTH / 2, startY - i * BattleGridConstant.CELL_HEIGHT - BattleGridConstant.CELL_HEIGHT / 2 ) } /** 获取扣血飘字表现层 */ GetHpLayer() { return this.hpLayer; } /** 获取扣血飘字预制体 */ GetSubHpPrefab() { return this.subHpPrefab; } //开始战斗 async onStartFight() { eg.poolManager.GetPool("subHPPool").clear(); await this.produceRole(); this.huihe = 1; this.curIndex = 0; this.playLog(); } async produceRole() { let role1 = this.fightStart.teams[BattleTeamId.role1] let role2 = this.fightStart.teams[BattleTeamId.role2] let roleZhanwei1: string = "61" let roleZhanwei2: string = "66" let fightType: FightType = this.type; let roleNode1 = AssetMgr.instantiate(this.cellLayer, this.rolePrefab); roleNode1.getComponent(UEBattleRole).setRole(this.cellLayer.getChildByName(roleZhanwei1).position, role1, fightType); roleNode1.scaleX = 1; GameDataCenter.battle.addRole(role1?.fid, roleNode1.getComponent(UEBattleRole)); let roleNode2 = AssetMgr.instantiate(this.cellLayer, this.rolePrefab); roleNode2.getComponent(UEBattleRole).setRole(this.cellLayer.getChildByName(roleZhanwei2).position, role2, fightType); roleNode2.scaleX = -1; GameDataCenter.battle.addRole(role2?.fid, roleNode2.getComponent(UEBattleRole)); } //播放战斗日志 playLog() { this.TxtRound.string = "第" + this.huihe + "回合"; let curLog = this.fightLogList.log[this.huihe][this.curIndex]; // console.error("curLog:", curLog) let actionType: ActionType = curLog.aType; switch (actionType) { case ActionType.round: case ActionType.buff: this.nextLog(); break; case ActionType.atk: this.playAtk(curLog); break; case ActionType.skill: this.playAtk(curLog); break; case ActionType.over: this.nextLog(); break; default: break; } } //播放下一条日志 nextLog() { this.curIndex++; if (this.fightLogList.log[this.huihe][this.curIndex] == null) { this.huihe++; if (this.fightLogList.log[this.huihe] != null) { this.curIndex = 0; this.playLog(); } else { this.scheduleOnce(() => { console.log("战斗结束"); }, 1); } } else { this.playLog(); } } playAtk(curLog: fightLogOne) { let atker = GameDataCenter.battle.battleRoleList[curLog.atker.fid]; let target0 = curLog.target.length > 0 ? GameDataCenter.battle.battleRoleList[curLog.target[0].fid] : Object.values(GameDataCenter.battle.battleRoleList)[0] //没有target 默认取一个防错 let delay = 0.5; let hitX = 150; //近战偏移量 cc.tween(atker.node) .delay(0.15 / GameDataCenter.battle.realBattleSpeed) .to(delay / GameDataCenter.battle.realBattleSpeed, { x: atker.posX < 0 ? target0.node.x - hitX : target0.node.x + hitX }) .call(() => { if (curLog.atker.fid == "1022") { atker.playAni("atk", false); } else { atker.playAni("atk1", false); } // GameDataCenter.audio.playEffect(atker.atkAudio); }) .delay((delay + 0.3) / GameDataCenter.battle.realBattleSpeed) .call(() => { //飘血 let effectList = curLog.target?.[0]?.effect; for (let i = 0; i < effectList?.length; i++) { let effect = effectList[i]; console.log("effect:", effect); target0.ShowSubHp(effect); } }) .delay(0.1 / GameDataCenter.battle.realBattleSpeed) .call(() => { //显示特效以及连击等特殊效果 }) .delay(0.1 / GameDataCenter.battle.realBattleSpeed) .call(() => { if (curLog.atker.fid != "1022") { atker.playAni("walk", true); } // GameDataCenter.audio.playEffect(atker.atkAudio); }) .to(delay / GameDataCenter.battle.realBattleSpeed, { x: atker.posX })//回到初始位置 .call(() => { if (curLog.atker.fid != "1022") { atker.playAni("stand", true); } let atkerEffectList = curLog.atker?.effect; for (let i = 0; i < atkerEffectList?.length; i++) { let effect = atkerEffectList[i]; console.log("atkerEffect:", effect); atker.ShowSubHp(effect); } // GameDataCenter.audio.playEffect(atker.atkAudio); }) .delay(0.3 / GameDataCenter.battle.realBattleSpeed) .call(() => { this.nextLog(); }) .start(); } }