mirror of
https://gitee.com/dgflash/oops-framework.git
synced 2026-06-03 19:09:36 +08:00
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
/*
|
|
* @Author: dgflash
|
|
* @Date: 2022-06-02 09:38:48
|
|
* @LastEditors: dgflash
|
|
* @LastEditTime: 2022-06-14 19:55:46
|
|
*/
|
|
import { ecs } from "../../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
|
import { RoleAttributeType } from "../model/RoleEnum";
|
|
import { RoleModelLevelComp } from "../model/RoleModelLevelComp";
|
|
import { Role } from "../Role";
|
|
|
|
/**
|
|
* 角色升级
|
|
*/
|
|
@ecs.register('RoleUpgrade')
|
|
export class RoleUpgradeComp extends ecs.Comp {
|
|
/** 当前等级 */
|
|
lv: number = 0;
|
|
|
|
reset() {
|
|
this.lv = 0;
|
|
}
|
|
}
|
|
|
|
@ecs.register('Role')
|
|
export class RoleUpgradeSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem {
|
|
filter(): ecs.IMatcher {
|
|
return ecs.allOf(RoleUpgradeComp, RoleModelLevelComp);
|
|
}
|
|
|
|
entityEnter(e: Role): void {
|
|
let rm = e.RoleModel;
|
|
let rlm = e.RoleModelLevel;
|
|
let ru = e.RoleUpgrade;
|
|
|
|
if (ru.lv == 0)
|
|
rlm.vm.lv++; // 提升一级
|
|
else
|
|
rlm.vm.lv = ru.lv; // 设置等级
|
|
|
|
// 当前等级配置
|
|
rlm.rtluCurrent.init(rlm.vm.lv);
|
|
// 等级附加属性
|
|
rm.attributes.get(RoleAttributeType.hp).level = rlm.rtluCurrent.hp;
|
|
|
|
// 下个等级配置
|
|
rlm.rtluNext.init(rlm.vm.lv + 1);
|
|
rlm.vm.expNext = rlm.rtluNext.needexp;
|
|
|
|
e.remove(RoleUpgradeComp);
|
|
}
|
|
} |