refactor(hero): 移除怒气值相关属性和逻辑,修改hp显示逻辑
移除英雄属性组件中的怒气值(pow)属性及相关配置 删除英雄视图组件中怒气值显示和使用的逻辑 简化资源管理,移除不再使用的代码
This commit is contained in:
@@ -32,8 +32,6 @@ export enum Attrs {
|
|||||||
HP_REGEN = 3, // 生命回复
|
HP_REGEN = 3, // 生命回复
|
||||||
MP_REGEN = 4, // 魔法回复
|
MP_REGEN = 4, // 魔法回复
|
||||||
HEAL_EFFECT = 5, // 治疗效果
|
HEAL_EFFECT = 5, // 治疗效果
|
||||||
POW_MAX = 6, // 最大怒气值
|
|
||||||
POW_REGEN = 7, // 怒气值回复
|
|
||||||
|
|
||||||
// ========== 攻击属性 (10-19) ==========
|
// ========== 攻击属性 (10-19) ==========
|
||||||
AP = 10, // 攻击力
|
AP = 10, // 攻击力
|
||||||
@@ -158,8 +156,6 @@ export const AttrsType: Record<Attrs, BType> = {
|
|||||||
[Attrs.SHIELD_MAX]: BType.VALUE, // 最大护盾值 - 数值型
|
[Attrs.SHIELD_MAX]: BType.VALUE, // 最大护盾值 - 数值型
|
||||||
[Attrs.HP_REGEN]: BType.VALUE, // 生命回复 - 数值型
|
[Attrs.HP_REGEN]: BType.VALUE, // 生命回复 - 数值型
|
||||||
[Attrs.MP_REGEN]: BType.VALUE, // 魔法回复 - 数值型
|
[Attrs.MP_REGEN]: BType.VALUE, // 魔法回复 - 数值型
|
||||||
[Attrs.POW_MAX]: BType.VALUE, // 最大怒气值 - 数值型
|
|
||||||
[Attrs.POW_REGEN]: BType.VALUE, // 怒气值回复 - 数值型
|
|
||||||
[Attrs.HEAL_EFFECT]: BType.RATIO, // 治疗效果 - 百分比型
|
[Attrs.HEAL_EFFECT]: BType.RATIO, // 治疗效果 - 百分比型
|
||||||
|
|
||||||
// ========== 攻击属性(数值型) ==========
|
// ========== 攻击属性(数值型) ==========
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ export class HeroAttrsComp extends ecs.Comp {
|
|||||||
// ==================== 动态属性值 ====================
|
// ==================== 动态属性值 ====================
|
||||||
hp: number = 100; // 当前血量
|
hp: number = 100; // 当前血量
|
||||||
mp: number = 100; // 当前魔法值
|
mp: number = 100; // 当前魔法值
|
||||||
pow: number = 0; // 当前怒气值
|
|
||||||
shield: number = 0; // 当前护盾
|
shield: number = 0; // 当前护盾
|
||||||
Attrs: any = []; // 最终属性数组(经过Buff计算后)
|
Attrs: any = []; // 最终属性数组(经过Buff计算后)
|
||||||
NeAttrs: any = []; // 负面状态数组
|
NeAttrs: any = []; // 负面状态数组
|
||||||
@@ -150,6 +149,8 @@ export class HeroAttrsComp extends ecs.Comp {
|
|||||||
this.recalculateSingleAttr(attrIndex);
|
this.recalculateSingleAttr(attrIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ==================== 属性计算系统 ====================
|
// ==================== 属性计算系统 ====================
|
||||||
/**
|
/**
|
||||||
* 重新计算单个属性
|
* 重新计算单个属性
|
||||||
|
|||||||
@@ -31,8 +31,6 @@ export class HeroViewComp extends CCComp {
|
|||||||
status:String = "idle"
|
status:String = "idle"
|
||||||
scale: number = 1; // 显示方向
|
scale: number = 1; // 显示方向
|
||||||
box_group:number = BoxSet.HERO; // 碰撞组
|
box_group:number = BoxSet.HERO; // 碰撞组
|
||||||
usePower:boolean = false;
|
|
||||||
useMp:boolean = false;
|
|
||||||
realDeadTime:number=10
|
realDeadTime:number=10
|
||||||
deadCD:number=0
|
deadCD:number=0
|
||||||
// 血条显示相关
|
// 血条显示相关
|
||||||
@@ -89,10 +87,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
// }
|
// }
|
||||||
/* 显示角色血*/
|
/* 显示角色血*/
|
||||||
this.top_node.getChildByName("hp").active = true;
|
this.top_node.getChildByName("hp").active = true;
|
||||||
this.usePower=HeroInfo[this.model.hero_uuid].type==HType.warrior||HeroInfo[this.model.hero_uuid].type==HType.assassin;
|
this.top_node.getChildByName("mp").active = true;
|
||||||
this.useMp=HeroInfo[this.model.hero_uuid].type==HType.mage||HeroInfo[this.model.hero_uuid].type==HType.remote||HeroInfo[this.model.hero_uuid].type==HType.support;
|
|
||||||
this.top_node.getChildByName("pow").active = this.usePower;
|
|
||||||
this.top_node.getChildByName("mp").active = this.useMp;
|
|
||||||
// 初始隐藏血条(被攻击后才显示)
|
// 初始隐藏血条(被攻击后才显示)
|
||||||
this.top_node.active = false;
|
this.top_node.active = false;
|
||||||
}
|
}
|
||||||
@@ -140,9 +135,9 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.processDamageQueue(); // 伤害数字显示队列
|
this.processDamageQueue(); // 伤害数字显示队列
|
||||||
|
|
||||||
// ✅ 更新 UI 显示(数据由 HeroAttrSystem 更新)
|
// ✅ 更新 UI 显示(数据由 HeroAttrSystem 更新)
|
||||||
|
// 移除了每帧调用的 hp_show,改为仅在需要时调用
|
||||||
this.hp_show(this.model.hp, this.model.Attrs[Attrs.HP_MAX]);
|
this.hp_show(this.model.hp, this.model.Attrs[Attrs.HP_MAX]);
|
||||||
if(this.useMp) this.mp_show(this.model.mp, this.model.Attrs[Attrs.MP_MAX]);
|
this.mp_show(this.model.mp, this.model.Attrs[Attrs.MP_MAX]);
|
||||||
if(this.usePower) this.pow_show(this.model.pow, this.model.Attrs[Attrs.POW_MAX]);
|
|
||||||
this.show_shield(this.model.shield, this.model.Attrs[Attrs.SHIELD_MAX]);
|
this.show_shield(this.model.shield, this.model.Attrs[Attrs.SHIELD_MAX]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,9 +292,10 @@ export class HeroViewComp extends CCComp {
|
|||||||
health(hp: number = 0, is_num:boolean=true) {
|
health(hp: number = 0, is_num:boolean=true) {
|
||||||
// 生命值更新由 Model 层处理,这里只负责视图表现
|
// 生命值更新由 Model 层处理,这里只负责视图表现
|
||||||
this.heathed();
|
this.heathed();
|
||||||
if(this.model) {
|
this.hp_tip(TooltipTypes.health, hp.toFixed(0));
|
||||||
this.hp_show(hp, this.model.Attrs[Attrs.HP_MAX]);
|
this.top_node.active=true
|
||||||
}
|
this.hp_show(this.model.hp, this.model.Attrs[Attrs.HP_MAX]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
alive(){
|
alive(){
|
||||||
@@ -390,17 +386,6 @@ export class HeroViewComp extends CCComp {
|
|||||||
}
|
}
|
||||||
// 伤害计算和战斗逻辑已迁移到 HeroBattleSystem
|
// 伤害计算和战斗逻辑已迁移到 HeroBattleSystem
|
||||||
|
|
||||||
/** 死亡触发器(预留,用于天赋/特殊效果) */
|
|
||||||
do_dead_trigger(){
|
|
||||||
if(!this.model || this.model.is_dead || this.model.fac === FacSet.MON) return;
|
|
||||||
// 预留:天赋触发、复活检查等
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 受击触发器(预留,用于天赋/特殊效果) */
|
|
||||||
do_atked_trigger(){
|
|
||||||
if(!this.model || this.model.is_dead || this.model.fac === FacSet.MON) return;
|
|
||||||
// 预留:反击、护盾触发等
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -415,7 +400,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
switch(skill.act){
|
switch(skill.act){
|
||||||
case "max":
|
case "max":
|
||||||
this.as.max()
|
this.as.max()
|
||||||
this.tooltip(TooltipTypes.skill, skill.name, skill_id)
|
this.tooltip(TooltipTypes.skill, skill.name)
|
||||||
break
|
break
|
||||||
case "atk":
|
case "atk":
|
||||||
this.as.atk()
|
this.as.atk()
|
||||||
@@ -458,9 +443,9 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.hp_show(this.model.hp, this.model.Attrs[Attrs.HP_MAX]);
|
this.hp_show(this.model.hp, this.model.Attrs[Attrs.HP_MAX]);
|
||||||
this.in_atked(anm, this.model.fac==FacSet.HERO?1:-1);
|
this.in_atked(anm, this.model.fac==FacSet.HERO?1:-1);
|
||||||
if (isCrit) {
|
if (isCrit) {
|
||||||
this.hp_tip(TooltipTypes.crit, damage.toFixed(0), damage);
|
this.hp_tip(TooltipTypes.crit, damage.toFixed(0));
|
||||||
} else {
|
} else {
|
||||||
this.hp_tip(TooltipTypes.life, damage.toFixed(0), damage);
|
this.hp_tip(TooltipTypes.life, damage.toFixed(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reset() {
|
reset() {
|
||||||
|
|||||||
Reference in New Issue
Block a user