refactor: 简化攻击距离与职业类型系统
- 移除 SkillRange 枚举和 SkillDisVal 常量,统一使用 HType 表示攻击距离 - 删除 heroInfo 中的 rangeType 字段,直接使用 type 字段 - 更新英雄配置,将职业类型简化为近战、中程、远程三类 - 移除怪物属性中的 mp 和 def 字段,简化属性计算 - 更新移动和技能距离计算逻辑,直接使用 HType 判断
This commit is contained in:
@@ -70,7 +70,6 @@ export class Hero extends ecs.Entity {
|
||||
model.lv = hero.lv ? hero.lv : 1;
|
||||
model.type = hero.type;
|
||||
model.fac = FacSet.HERO;
|
||||
model.rangeType = hero.rangeType;
|
||||
// 只有主角才挂载天赋组件
|
||||
|
||||
// ✅ 初始化技能数据(迁移到 HeroSkillsComp)
|
||||
@@ -95,7 +94,7 @@ export class Hero extends ecs.Entity {
|
||||
oops.message.dispatchEvent(GameEvent.MasterCalled,{uuid:uuid})
|
||||
const move = this.get(MoveComp);
|
||||
move.direction = 1; // 向右移动
|
||||
move.targetX = resolveFormationTargetX(model.fac, model.type, model.rangeType);
|
||||
move.targetX = resolveFormationTargetX(model.fac, model.type);
|
||||
move.baseY = pos.y;
|
||||
smc.vmdata.mission_data.hero_num++
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||
import { Attrs, BType } from "../common/config/HeroAttrs";
|
||||
import { BuffConf, BuffRunType, SkillDisVal, SkillRange } from "../common/config/SkillSet";
|
||||
import { HeroInfo, HType } from "../common/config/heroSet";
|
||||
import { BuffConf, BuffRunType } from "../common/config/SkillSet";
|
||||
import { HeroDisVal, HeroInfo, HType } from "../common/config/heroSet";
|
||||
import { mLogger } from "../common/Logger";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { HeroViewComp } from "./HeroViewComp";
|
||||
@@ -47,7 +47,6 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
lv: number = 1;
|
||||
type: number = 0; // 0近战 1远程 2辅助
|
||||
fac: number = 0; // 0:hero 1:monster
|
||||
rangeType:SkillRange = SkillRange.Melee;
|
||||
// ==================== 基础属性(有初始值) ====================
|
||||
ap: number = 0; // 基础攻击
|
||||
hp: number = 100; // 基础血量
|
||||
@@ -451,22 +450,13 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
*/
|
||||
public updateSkillDistanceCache(skill_id:number): void {
|
||||
void skill_id;
|
||||
let rangeType = this.rangeType;
|
||||
if (rangeType === undefined || rangeType === null) {
|
||||
if (this.type === HType.remote) {
|
||||
rangeType = SkillRange.Long;
|
||||
} else if (this.type === HType.mage || this.type === HType.support) {
|
||||
rangeType = SkillRange.Mid;
|
||||
} else {
|
||||
rangeType = SkillRange.Melee;
|
||||
}
|
||||
}
|
||||
const maxRange = SkillDisVal[rangeType];
|
||||
const rangeType = this.type as HType.Melee | HType.Mid | HType.Long;
|
||||
const maxRange = HeroDisVal[rangeType];
|
||||
let minRange = 0;
|
||||
if (rangeType === SkillRange.Mid) {
|
||||
minRange = SkillDisVal[SkillRange.Melee];
|
||||
} else if (rangeType === SkillRange.Long) {
|
||||
minRange = SkillDisVal[SkillRange.Mid];
|
||||
if (rangeType === HType.Mid) {
|
||||
minRange = HeroDisVal[HType.Melee];
|
||||
} else if (rangeType === HType.Long) {
|
||||
minRange = HeroDisVal[HType.Mid];
|
||||
}
|
||||
this.maxSkillDistance = maxRange;
|
||||
this.minSkillDistance = minRange;
|
||||
@@ -495,7 +485,6 @@ export class HeroAttrsComp extends ecs.Comp {
|
||||
this.lv = 1;
|
||||
this.type = 0;
|
||||
this.fac = 0;
|
||||
this.rangeType = SkillRange.Melee;
|
||||
this.ap = 0;
|
||||
this.hp = 100;
|
||||
this.hp_max = 100;
|
||||
|
||||
@@ -4,7 +4,6 @@ import { HeroAttrsComp } from "./HeroAttrsComp";
|
||||
import { smc } from "../common/SingletonModuleComp";
|
||||
import { FacSet } from "../common/config/GameSet";
|
||||
import { HType, resolveFormationTargetX } from "../common/config/heroSet";
|
||||
import { SkillRange } from "../common/config/SkillSet";
|
||||
import { Node } from "cc";
|
||||
|
||||
@ecs.register('MoveComp')
|
||||
@@ -94,25 +93,15 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
}
|
||||
|
||||
private processCombatLogic(e: ecs.Entity, move: MoveComp, view: HeroViewComp, model: HeroAttrsComp, enemy: HeroViewComp) {
|
||||
let rangeType = model.rangeType;
|
||||
if (rangeType === undefined) {
|
||||
if (model.type === HType.warrior || model.type === HType.assassin) {
|
||||
rangeType = SkillRange.Melee;
|
||||
} else if (model.type === HType.remote) {
|
||||
rangeType = SkillRange.Long;
|
||||
} else {
|
||||
rangeType = SkillRange.Mid;
|
||||
}
|
||||
}
|
||||
|
||||
const rangeType = model.type as HType.Melee | HType.Mid | HType.Long;
|
||||
switch (rangeType) {
|
||||
case SkillRange.Melee:
|
||||
case HType.Melee:
|
||||
this.processMeleeLogic(e, move, view, model, enemy);
|
||||
break;
|
||||
case SkillRange.Mid:
|
||||
case HType.Mid:
|
||||
this.processMidLogic(e, move, view, model, enemy);
|
||||
break;
|
||||
case SkillRange.Long:
|
||||
case HType.Long:
|
||||
this.processLongLogic(e, move, view, model, enemy);
|
||||
break;
|
||||
default:
|
||||
@@ -206,7 +195,7 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
}
|
||||
|
||||
private getFixedFormationX(model: HeroAttrsComp): number {
|
||||
return resolveFormationTargetX(model.fac, model.type, model.rangeType);
|
||||
return resolveFormationTargetX(model.fac, model.type as HType);
|
||||
}
|
||||
|
||||
private moveEntity(view: HeroViewComp, direction: number, speed: number, stopAtX?: number) {
|
||||
@@ -269,18 +258,9 @@ export class MoveSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
|
||||
}
|
||||
|
||||
private getCombatPriority(model: HeroAttrsComp): number {
|
||||
let rangeType = model.rangeType;
|
||||
if (rangeType === undefined || rangeType === null) {
|
||||
if (model.type === HType.warrior || model.type === HType.assassin) {
|
||||
rangeType = SkillRange.Melee;
|
||||
} else if (model.type === HType.remote) {
|
||||
rangeType = SkillRange.Long;
|
||||
} else {
|
||||
rangeType = SkillRange.Mid;
|
||||
}
|
||||
}
|
||||
if (rangeType === SkillRange.Melee) return 3;
|
||||
if (rangeType === SkillRange.Mid) return 2;
|
||||
const rangeType = model.type as HType.Melee | HType.Mid | HType.Long;
|
||||
if (rangeType === HType.Melee) return 3;
|
||||
if (rangeType === HType.Mid) return 2;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user