重构了 技能系统,还需要完善

This commit is contained in:
panw
2025-10-30 15:12:49 +08:00
parent 1281cbd32d
commit 55646c3a11
27 changed files with 1022 additions and 595 deletions

View File

@@ -7,6 +7,8 @@ import { FacSet } from '../common/config/BoxSet';
import { smc } from '../common/SingletonModuleComp';
import { CCComp } from 'db://oops-framework/module/common/CCComp';
import { HeroAttrsComp } from './HeroAttrsComp';
import { HeroSkillsComp } from './HeroSkills';
import { CastSkillRequestComp } from './HSkillSystem';
import { SkillEnt } from '../skill/SkillEnt';
import { Attrs } from '../common/config/HeroAttrs';
import { TalComp } from './TalComp';
@@ -29,24 +31,30 @@ export class SkillConComp extends CCComp {
this.HeroEntity=this.HeroView.ent
}
/**
* ⚠️ 注意:此方法已废弃
* 技能CD更新和施法逻辑已迁移到 HSkillSystemSkillCDSystem + SkillAutocastSystem
* 保留此方法仅用于手动触发技能(如玩家点击技能按钮)
*/
update(dt: number) {
if(!smc.mission.play||smc.mission.pause) return
if(!this.HeroView.isStun() && !this.HeroView.isFrost()) {
let skills=this.HeroView.skills
for(let i=0;i<skills.length;i++){
skills[i].cd += dt;
if(skills[i].cd > skills[i].cd_max&&this.HeroView.mp >= skills[i].cost){
if(SkillSet[skills[i].uuid].SType==SType.damage&&this.HeroView.is_atking){
this.castSkill(SkillSet[skills[i].uuid])
this.HeroView.skills[i].cd = 0
this.HeroView.mp -= skills[i].cost
}
}
}
}
// 已由 SkillCDSystem 和 SkillAutocastSystem 处理
// 此方法可以删除或改为手动施法的入口
}
/**
* 手动施放技能(玩家点击技能按钮)
* @param skillIndex 技能索引
*/
manualCastSkill(skillIndex: number) {
if (!this.HeroEntity) return;
// 选择目标
const targets = this.selectTargets(1);
// ✅ 通过添加标记组件请求施法
const request = this.HeroEntity.add(CastSkillRequestComp) as CastSkillRequestComp;
request.skillIndex = skillIndex;
request.targetPositions = targets;
}