refactor(map/hero): 重构英雄位置管理逻辑,移除lane相关字段
重构了英雄分路排位的旧实现,改用硬编码的点位数组管理英雄站位,移除了HeroAttrsComp中的lane和lane_index字段,简化了英雄位置分配、UI面板绑定的逻辑,提升代码可维护性。
This commit is contained in:
@@ -32,6 +32,9 @@ import { GameEvent } from "../common/config/GameEvent";
|
||||
import { oops } from "db://oops-framework/core/Oops";
|
||||
import { UIID } from "../common/config/GameUIConfig";
|
||||
import { mLogger } from "../common/Logger";
|
||||
import { MissionHeroCompComp } from "./MissionHeroComp";
|
||||
import { MoveComp } from "../hero/MoveComp";
|
||||
import { FacSet } from "../common/config/GameSet";
|
||||
|
||||
const {property, ccclass } = _decorator;
|
||||
|
||||
@@ -98,6 +101,44 @@ export class HInfoComp extends CCComp {
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 node_index 获取对应的硬编码位置,并查找该位置的英雄
|
||||
*/
|
||||
refreshByNodeIndex() {
|
||||
if (this.node_index < 1 || this.node_index > 6) return;
|
||||
const targetPos = MissionHeroCompComp.HERO_POSITIONS[this.node_index - 1];
|
||||
|
||||
let foundModel: HeroAttrsComp | null = null;
|
||||
let foundEid: number = 0;
|
||||
|
||||
// 遍历所有英雄,查找 targetX 和 targetY 匹配该位置的英雄
|
||||
ecs.query(ecs.allOf(HeroAttrsComp, MoveComp)).forEach((entity: ecs.Entity) => {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
const move = entity.get(MoveComp);
|
||||
if (model && move && !model.is_dead && model.fac === FacSet.HERO) {
|
||||
if (Math.abs(move.targetX - targetPos.x) < 2 && Math.abs(move.baseY - targetPos.y) < 2) {
|
||||
foundModel = model;
|
||||
foundEid = entity.eid;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (foundModel) {
|
||||
if (this.eid !== foundEid) {
|
||||
this.bindData(foundEid, foundModel);
|
||||
if (!this.node.active) this.node.active = true;
|
||||
} else {
|
||||
this.refresh();
|
||||
}
|
||||
} else {
|
||||
if (this.eid !== 0) {
|
||||
this.eid = 0;
|
||||
this.model = null;
|
||||
if (this.node.active) this.node.active = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前是否处于战斗阶段,控制出售按钮显示/隐藏
|
||||
* @param isBattlePhase 是否处于战斗阶段
|
||||
|
||||
Reference in New Issue
Block a user