Files
pixelheros/assets/script/game/hero/SCDSystem.ts
walkpan 0febe02ecc feat(关卡系统): 添加关卡解锁和免广告功能
- 在MissionComp和SCDSystem中添加stop_mon_action检查逻辑
- 修改SingletonModuleComp数据结构,添加noStop和unlockCoin字段
- 为MissionCardComp添加金币解锁和免广告功能
- 调整ubtns.plist的边框值
2026-01-06 19:47:11 +08:00

52 lines
1.4 KiB
TypeScript

import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { smc } from "../common/SingletonModuleComp";
import { HeroAttrsComp } from "./HeroAttrsComp";
import { HeroSkillsComp } from "./HeroSkills";
/**
* ==================== 技能CD更新系统 ====================
*
* 职责:
* 1. 每帧更新所有角色的技能CD
* 2. 自动递减CD时间
* 3. 管理技能冷却状态
* 4. 优化CD计算性能
*
* 设计理念:
* - 独立的CD管理系统
* - 只负责时间递减,不处理施法逻辑
* - 支持CD加速和减免效果
*/
@ecs.register('SkillCDSystem')
export class SkillCDSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate {
filter(): ecs.IMatcher {
return ecs.allOf(HeroSkillsComp);
}
update(e: ecs.Entity): void {
if(!smc.mission.play ) return;
if(smc.mission.pause) return
const skills = e.get(HeroSkillsComp);
if (!skills) return;
const attrsCom = e.get(HeroAttrsComp);
if (!attrsCom) return;
if(smc.mission.stop_mon_action) return;
if (attrsCom.isStun() || attrsCom.isFrost()) { // 眩晕和冰冻状态不更新CD
return;
}
// 更新所有技能CD
skills.updateCDs(this.dt);
}
/**
* 计算CD减免效果
*/
/**
* 更新技能就绪状态
*/
}