mirror of
https://gitee.com/dgflash/oops-framework.git
synced 2026-05-11 10:40:30 +08:00
77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
/*
|
|
* @Author: dgflash
|
|
* @Date: 2021-11-18 15:56:01
|
|
* @LastEditors: dgflash
|
|
* @LastEditTime: 2022-03-10 10:23:41
|
|
*/
|
|
|
|
import { ecs } from "../../../core/libs/ecs/ECS";
|
|
import { VM } from "../../../core/libs/model-view/ViewModel";
|
|
import { RoleAttributeType } from "./RoleEnum";
|
|
import { RoleModelComp } from "./RoleModelComp";
|
|
|
|
/**
|
|
* 角色基础属性数据
|
|
*
|
|
* 实现功能
|
|
* 1、角色初始创建时有随机的基础战斗属性
|
|
* 2、基础战斗属性会独立显示数值
|
|
*
|
|
* 技术分析
|
|
* 1、RoleModelComp.attributes 中设计了可扩展的角色战斗属性对象,这里分出来一个基础属性对象,是为了生成 VM 组件需要的数据格式,辅助视图层的显示逻辑
|
|
* 2、这样设计用意是不在 RoleModelComp 对象中插入一个针对基础属性的 VM 数据。这里表达在新增需求时,尽量通过增量开发,不影响原有功能。在项目代码越来越多时,不容易因忽略某个点导致出现新问题。
|
|
*/
|
|
@ecs.register('RoleModelBase')
|
|
export class RoleModelBaseComp extends ecs.Comp {
|
|
/** 提供 VM 组件使用的数据 */
|
|
private vm: any = {};
|
|
|
|
/** 力量 */
|
|
private _power: number = 0;
|
|
public get power(): number {
|
|
return this._power;
|
|
}
|
|
public set power(value: number) {
|
|
this._power = value;
|
|
this.ent.get(RoleModelComp).attributes.get(RoleAttributeType.power).base = value;
|
|
this.vm[RoleAttributeType.power] = value;
|
|
}
|
|
|
|
/** 体质 */
|
|
private _physical: number = 0;
|
|
public get physical(): number {
|
|
return this._physical;
|
|
}
|
|
public set physical(value: number) {
|
|
this._physical = value;
|
|
this.ent.get(RoleModelComp).attributes.get(RoleAttributeType.physical).base = value;
|
|
this.vm[RoleAttributeType.physical] = value;
|
|
}
|
|
|
|
/** 敏捷 */
|
|
private _agile: number = 0;
|
|
public get agile(): number {
|
|
return this._agile;
|
|
}
|
|
public set agile(value: number) {
|
|
this._agile = value;
|
|
this.ent.get(RoleModelComp).attributes.get(RoleAttributeType.agile).base = value;
|
|
this.vm[RoleAttributeType.agile] = value;
|
|
}
|
|
|
|
vmAdd() {
|
|
VM.add(this.vm, "RoleBase");
|
|
}
|
|
|
|
vmRemove() {
|
|
VM.remove("RoleBase");
|
|
}
|
|
|
|
reset() {
|
|
this.vmRemove();
|
|
|
|
for (var key in this.vm) {
|
|
this.vm[key] = 0;
|
|
}
|
|
}
|
|
} |