refactor: 重命名Logger类并增加错误日志方法

- 将Logger类重命名为mLogger以符合命名规范
- 新增error方法用于统一错误输出
- 在多个组件中替换console.log/warn/error为mLogger的对应方法
- 为多个组件添加debugMode属性以控制模块级日志开关
- 新增HeroMasterComp组件框架
This commit is contained in:
panw
2026-02-03 14:40:02 +08:00
parent 859ab3bc2a
commit 63dd22fb88
16 changed files with 215 additions and 117 deletions

View File

@@ -13,6 +13,8 @@ import { getNeAttrs, getAttrs ,Attrs} from "../common/config/HeroAttrs";
import { HeroSkillsComp } from "./HeroSkills";
import { HeroMoveComp } from "./HeroMove";
import { TalComp } from "./TalComp";
import { mLogger } from "../common/Logger";
import { HeroMasterComp } from "./HeroMasterComp";
/** 角色实体 */
@ecs.register(`Hero`)
@@ -33,6 +35,7 @@ export class Hero extends ecs.Entity {
destroy(): void {
// 如果是主角,清理全局引用
if (smc.role === this) {
console.log(`[Hero] 主角销毁,清除 smc.role`);
smc.role = null;
}
@@ -92,7 +95,9 @@ export class Hero extends ecs.Entity {
// 只有主角才挂载天赋组件
if (is_master) {
smc.role = this; // 记录主角实体引用
console.log(`[Hero] 主角创建,设置 smc.role, uuid=${uuid}`);
this.add(TalComp);
this.add(HeroMasterComp)
const talComp = this.get(TalComp);
if (talComp) {
talComp.init(uuid);
@@ -156,9 +161,9 @@ export class HeroLifecycleSystem extends ecs.ComblockSystem
// 英雄实体创建时的特殊处理
const heroAttrs = e.get(HeroAttrsComp);
if (heroAttrs) {
console.log(`英雄进入世界: ${heroAttrs.hero_name}`);
mLogger.log(heroAttrs.debugMode, 'HeroLifecycle', `英雄进入世界: ${heroAttrs.hero_name}`);
} else {
console.log(`英雄进入世界: 实体ID ${e.eid}`);
mLogger.log(true, 'HeroLifecycle', `英雄进入世界: 实体ID ${e.eid}`);
}
}
@@ -166,9 +171,9 @@ export class HeroLifecycleSystem extends ecs.ComblockSystem
// 英雄实体销毁时的清理工作
const heroAttrs = e.get(HeroAttrsComp);
if (heroAttrs) {
console.log(`英雄离开世界: ${heroAttrs.hero_name}`);
mLogger.log(heroAttrs.debugMode, 'HeroLifecycle', `英雄离开世界: ${heroAttrs.hero_name}`);
} else {
console.log(`英雄离开世界: 实体ID ${e.eid}`);
mLogger.log(true, 'HeroLifecycle', `英雄离开世界: 实体ID ${e.eid}`);
}
}
}

View File

@@ -12,7 +12,7 @@ import { oops } from "db://oops-framework/core/Oops";
import { GameEvent } from "../common/config/GameEvent";
import { Logger } from "../common/Logger";
import { mLogger } from "../common/Logger";
/** 最终伤害数据接口
* 用于封装一次攻击计算的所有结果数据
@@ -43,14 +43,6 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
private debugMode: boolean = false; // 是否启用调试模式
private debugLog(...args: any[]): void {
Logger.log(this.debugMode, 'HeroAtkSystem', ...args);
}
private debugWarn(...args: any[]): void {
Logger.warn(this.debugMode, 'HeroAtkSystem', ...args);
}
/**
* 过滤器:处理拥有伤害队列的实体
*/
@@ -85,7 +77,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
damageQueue.processedCount++;
// 如果目标已死亡,停止处理后续伤害
if (TAttrsComp.is_dead) {
this.debugLog(`[HeroAtkSystem] ${TAttrsComp.hero_name} 已死亡,停止处理剩余伤害`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] ${TAttrsComp.hero_name} 已死亡,停止处理剩余伤害`);
damageQueue.clear(); // 清空剩余伤害
break;
}
@@ -96,7 +88,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
e.remove(DamageQueueComp);
if (processedCount > 0) {
this.debugLog(`[HeroAtkSystem] ${TAttrsComp.hero_name} 伤害队列处理完成,共处理 ${processedCount} 个伤害事件`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] ${TAttrsComp.hero_name} 伤害队列处理完成,共处理 ${processedCount} 个伤害事件`);
}
}
}
@@ -164,7 +156,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
const isCrit = this.checkChance(damageEvent.Attrs[Attrs.CRITICAL]-TAttrsComp.Attrs[Attrs.CRITICAL_RES]);
// 计算基础伤害
let damage = this.dmgCount(damageEvent,TAttrsComp);
this.debugLog("[HeroAtkSystem] dmgCount",damage)
mLogger.log(this.debugMode, 'HeroAtkSystem', "[HeroAtkSystem] dmgCount",damage)
if (isCrit) {
// 暴击伤害计算
// 使用施法者的暴击伤害加成属性damageEvent.Attrs 快照)
@@ -175,11 +167,11 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
CAttrsComp?.useValueTalByAttr(Attrs.CRITICAL); // 清除施法者的暴击buff
}
this.debugLog("[HeroAtkSystem] after crit",damage)
mLogger.log(this.debugMode, 'HeroAtkSystem', "[HeroAtkSystem] after crit",damage)
// 护盾吸收
const shieldResult = this.absorbShield(TAttrsComp, damage);
damage = shieldResult.remainingDamage;
this.debugLog("[HeroAtkSystem] after shield",damage)
mLogger.log(this.debugMode, 'HeroAtkSystem', "[HeroAtkSystem] after shield",damage)
// 显示护盾吸收飘字
if (shieldResult.absorbedDamage > 0 && targetView) {
targetView.shield_tip(shieldResult.absorbedDamage);
@@ -197,7 +189,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
smc.updateHeroInfo(TAttrsComp); // 更新英雄数据到 VM
const casterName = CAttrsComp?.hero_name || "未知";
this.debugLog(`[HeroAtkSystem] 英雄${TAttrsComp.hero_name} (uuid: ${TAttrsComp.hero_uuid}) 受到 ${casterName}(eid: ${casterEid})的 伤害 ${damage},${isCrit?"暴击":"普通"}攻击,技能ID ${damageEvent.s_uuid}`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] 英雄${TAttrsComp.hero_name} (uuid: ${TAttrsComp.hero_uuid}) 受到 ${casterName}(eid: ${casterEid})的 伤害 ${damage},${isCrit?"暴击":"普通"}攻击,技能ID ${damageEvent.s_uuid}`);
//反伤判定 并应用到施法者
this.check_thorns(TAttrsComp, caster, damage);
@@ -229,7 +221,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
targetView.scheduleRevive(1.0);
}
this.debugLog(`[HeroAtkSystem] Hero waiting to revive! Lives left: ${TAttrsComp.Attrs[Attrs.REVIVE_COUNT]}`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] Hero waiting to revive! Lives left: ${TAttrsComp.Attrs[Attrs.REVIVE_COUNT]}`);
return reDate;
}
@@ -240,7 +232,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
if (TAttrsComp.is_master&&TAttrsComp.Attrs[Attrs.REVIVE_COUNT] <= 0) {
smc.mission.stop_mon_action = true;
oops.message.dispatchEvent(GameEvent.HeroDead, { hero_uuid: TAttrsComp.hero_uuid});
this.debugLog("[HeroAtkSystem] Hero died, stopping monster action (spawn/move)"+TAttrsComp.Attrs[Attrs.REVIVE_COUNT]);
mLogger.log(this.debugMode, 'HeroAtkSystem', "[HeroAtkSystem] Hero died, stopping monster action (spawn/move)"+TAttrsComp.Attrs[Attrs.REVIVE_COUNT]);
}
this.doDead(target);
@@ -250,7 +242,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
}
}
this.debugLog(`[HeroAtkSystem] ${TAttrsComp.hero_name} 受到 ${damage} 点伤害 (暴击: ${isCrit})`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] ${TAttrsComp.hero_name} 受到 ${damage} 点伤害 (暴击: ${isCrit})`);
reDate.damage=damage;
@@ -330,11 +322,11 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
const TAttrs=TAttrsComp.Attrs;
let sConf = SkillSet[damageEvent.s_uuid];
if (!sConf) return 0;
this.debugLog(`[HeroAtkSystem] 伤害处理对象`,CAttrs,TAttrs);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] 伤害处理对象`,CAttrs,TAttrs);
// 2. 计算原始物理伤害和魔法伤害
// 物理伤害基础值 = 技能物理倍率 * (施法者物理攻击力 + 额外伤害) / 100 * 额外伤害比例
let apBase = (sConf.ap||0)*(CAttrs[Attrs.AP]+damageEvent.ext_dmg)/100*damageEvent.dmg_ratio;
this.debugLog(`[HeroAtkSystem] 物理伤害基础值: ${apBase}, 技能ap=${sConf.ap},施法者物理攻击力: ${CAttrs[Attrs.AP]},}
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] 物理伤害基础值: ${apBase}, 技能ap=${sConf.ap},施法者物理攻击力: ${CAttrs[Attrs.AP]},}
额外伤害:${damageEvent.ext_dmg}, 额外伤害比例:${damageEvent.dmg_ratio}`);
// 易伤
let DMG_INVUL = TAttrs[Attrs.DMG_INVUL]||0
@@ -351,7 +343,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
total = Math.floor(total * damageRatio);
if (this.debugMode) console.log(`[HeroAtkSystem] 最终伤害: ${total} (Base: ${apBase}, Def: ${DMG_RED}%, Invul: ${DMG_INVUL}%, Ratio: ${damageRatio})`);
if (this.debugMode) mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] 最终伤害: ${total} (Base: ${apBase}, Def: ${DMG_RED}%, Invul: ${DMG_INVUL}%, Ratio: ${damageRatio})`);
return total;
}
@@ -467,7 +459,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
private absorbShield(TAttrsComp: HeroAttrsComp, damage: number): {remainingDamage: number, absorbedDamage: number} {
if (TAttrsComp.shield <= 0) {
this.debugLog("[HeroAtkSystem] 护盾值小于等于0无法吸收伤害");
mLogger.log(this.debugMode, 'HeroAtkSystem', "[HeroAtkSystem] 护盾值小于等于0无法吸收伤害");
return {remainingDamage: damage, absorbedDamage: 0};
};
@@ -478,7 +470,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
TAttrsComp.Attrs[Attrs.SHIELD_MAX] = 0;
}
TAttrsComp.dirty_shield = true;
this.debugLog(`[HeroAtkSystem] 护盾值完全吸收伤害 ${damage}`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] 护盾值完全吸收伤害 ${damage}`);
return {remainingDamage: 0, absorbedDamage: damage};
} else {
const absorbedDamage = TAttrsComp.shield;
@@ -486,7 +478,7 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd
TAttrsComp.shield = 0;
TAttrsComp.Attrs[Attrs.SHIELD_MAX] = 0;
TAttrsComp.dirty_shield = true;
this.debugLog(`[HeroAtkSystem] 护盾值部分吸收伤害 ${absorbedDamage}`);
mLogger.log(this.debugMode, 'HeroAtkSystem', `[HeroAtkSystem] 护盾值部分吸收伤害 ${absorbedDamage}`);
return {remainingDamage, absorbedDamage};
}
}

View File

@@ -7,7 +7,10 @@ import { HeroInfo, AttrSet } from "../common/config/heroSet";
import { HeroSkillsComp } from "./HeroSkills";
import { smc } from "../common/SingletonModuleComp";
import { AttrCards, PotionCards } from "../common/config/AttrSet";
import { mLogger } from "../common/Logger";
import { _decorator } from "cc";
const { property } = _decorator;
interface talTrigger{
value:number
@@ -15,6 +18,9 @@ interface talTrigger{
}
@ecs.register('HeroAttrs')
export class HeroAttrsComp extends ecs.Comp {
@property({ tooltip: "是否启用调试日志" })
public debugMode: boolean = false;
Ebus:any=null!
// ==================== 角色基础信息 ====================
hero_uuid: number = 1001;
@@ -95,7 +101,7 @@ export class HeroAttrsComp extends ecs.Comp {
const uuid = args;
const attrCard = AttrCards[uuid];
if (attrCard) {
console.log(`[HeroAttrs] 使用属性卡: ${attrCard.desc}`);
mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 使用属性卡: ${attrCard.desc}`);
// 构造 BuffConf默认使用 BType.VALUE永久生效 (time: 0)
const buffConf: BuffConf = {
buff: attrCard.attr,
@@ -117,7 +123,7 @@ export class HeroAttrsComp extends ecs.Comp {
// 1. 尝试从 PotionCards 获取 (新版药水)
const potion = PotionCards[itemId];
if (potion) {
console.log(`[HeroAttrs] 使用药水: ${potion.desc}`);
mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 使用药水: ${potion.desc}`);
const buffConf: BuffConf = {
buff: potion.attr,
value: potion.value,
@@ -140,7 +146,7 @@ export class HeroAttrsComp extends ecs.Comp {
const newLv = args.lv;
if (newLv > this.lv) {
console.log(`[HeroAttrs] 英雄升级处理: Lv.${this.lv} -> Lv.${newLv}`);
mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 英雄升级处理: Lv.${this.lv} -> Lv.${newLv}`);
this.lv = newLv;
// === 属性成长逻辑 (示例: 固定数值成长) ===
@@ -249,7 +255,7 @@ export class HeroAttrsComp extends ecs.Comp {
this.hp = Math.max(0, Math.min(this.hp, this.Attrs[Attrs.HP_MAX]));
this.dirty_hp = true; // ✅ 仅标记需要更新
smc.updateHeroInfo(this);
// console.log(`[HeroAttrs] HP变更: ${this.hero_name}, 变化=${addValue.toFixed(1)}, ${oldHp.toFixed(1)} -> ${this.hp.toFixed(1)}`);
mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] HP变更: ${this.hero_name}, 变化=${addValue.toFixed(1)}, ${oldHp.toFixed(1)} -> ${this.hp.toFixed(1)}`);
}
add_mp(value:number,isValue:boolean){
const oldMp = this.mp;
@@ -267,7 +273,7 @@ export class HeroAttrsComp extends ecs.Comp {
this.mp += addValue;
this.mp = Math.max(0, Math.min(this.mp, this.Attrs[Attrs.MP_MAX]));
this.dirty_mp = true; // ✅ 仅标记需要更新
console.log(`[HeroAttrs] MP变更: ${this.hero_name}, 变化=${addValue.toFixed(1)}, ${oldMp.toFixed(1)} -> ${this.mp.toFixed(1)}`);
mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] MP变更: ${this.hero_name}, 变化=${addValue.toFixed(1)}, ${oldMp.toFixed(1)} -> ${this.mp.toFixed(1)}`);
}
add_shield(value:number,isValue:boolean){
const oldShield = this.shield;
@@ -392,7 +398,7 @@ export class HeroAttrsComp extends ecs.Comp {
const [val, count] = smc.global_attrs[attrIndex];
const globalAdd = val * count;
totalRatio += globalAdd;
// console.log(`[HeroAttrs] 全局加成: ${this.hero_name} Attr=${attrIndex} Val=${val} Count=${count} Add=${globalAdd}%`);
// mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 全局加成: ${this.hero_name} Attr=${attrIndex} Val=${val} Count=${count} Add=${globalAdd}%`);
}
// 4. 根据属性类型计算最终值
@@ -411,7 +417,7 @@ export class HeroAttrsComp extends ecs.Comp {
this.clampSingleAttr(attrIndex);
if (oldVal !== this.Attrs[attrIndex]) {
console.log(`[HeroAttrs] 属性重算: ${this.hero_name}, 属性ID=${attrIndex}, ${oldVal} -> ${this.Attrs[attrIndex]} (Base=${baseVal}, Add=${totalValue-baseVal}, Ratio=${totalRatio}%)`);
mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 属性重算: ${this.hero_name}, 属性ID=${attrIndex}, ${oldVal} -> ${this.Attrs[attrIndex]} (Base=${baseVal}, Add=${totalValue-baseVal}, Ratio=${totalRatio}%)`);
}
}

View File

@@ -0,0 +1,38 @@
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { GameEvent } from "../common/config/GameEvent";
import { Attrs, AttrsType, BType, NeAttrs } from "../common/config/HeroAttrs";
import { BuffConf, SkillRange } from "../common/config/SkillSet";
import { HeroInfo, AttrSet } from "../common/config/heroSet";
import { HeroSkillsComp } from "./HeroSkills";
import { smc } from "../common/SingletonModuleComp";
import { AttrCards, PotionCards } from "../common/config/AttrSet";
import { mLogger } from "../common/Logger";
import { _decorator } from "cc";
@ecs.register('HeroMaster')
export class HeroMasterComp extends ecs.Comp {
public debugMode: boolean = false;
onLoad() {
}
onDestroy() {
}
reset() {
// 重置为初始状态
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "ddc7102d-a082-4e1c-a527-6493347f2c1b",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -5,6 +5,10 @@ import { Attrs } from "../common/config/HeroAttrs";
import { HeroInfo } from "../common/config/heroSet";
import { HSSet, SkillSet } from "../common/config/SkillSet";
import { HeroAttrsComp } from "./HeroAttrsComp";
import { mLogger } from "../common/Logger";
import { _decorator } from "cc";
const { property } = _decorator;
/**
* ==================== 技能槽位数据 ====================
@@ -35,6 +39,8 @@ export interface SkillSlot {
*/
@ecs.register('HeroSkills')
export class HeroSkillsComp extends ecs.Comp {
@property({ tooltip: "是否启用调试日志" })
private debugMode: boolean = false;
// ==================== 技能槽位列表 ====================
/** 技能槽位数组最多4个技能 */
@@ -101,7 +107,7 @@ export class HeroSkillsComp extends ecs.Comp {
addSkill(s_uuid: number, hset: HSSet=HSSet.skill) {
const config = SkillSet[s_uuid];
if (!config) {
console.warn(`[HeroSkills] 技能配置不存在: ${s_uuid}`);
mLogger.warn(this.debugMode, 'HeroSkills', `[HeroSkills] 技能配置不存在: ${s_uuid}`);
return;
}
this.skills[s_uuid] = {

View File

@@ -1,7 +1,7 @@
import { Vec3, _decorator , v3,Collider2D,Contact2DType,Label ,Node,Prefab,instantiate,ProgressBar, Component, Material, Sprite, math, clamp, Game, tween, Tween, Color, BoxCollider2D, UITransform} from "cc";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
import { Logger } from "../common/Logger";
import { mLogger } from "../common/Logger";
import { HeroSpine } from "./HeroSpine";
import { BoxSet, FacSet } from "../common/config/GameSet";
import { smc } from "../common/SingletonModuleComp";
@@ -28,16 +28,8 @@ export interface BuffInfo {
@ecs.register('HeroView', false) // 定义ECS 组件
export class HeroViewComp extends CCComp {
@property({ tooltip: "是否启用调试日志" })
private debugMode: boolean = true; // 是否启用调试模式
private debugMode: boolean = false; // 是否启用调试模式
// 添加条件日志方法
private debugLog(...args: any[]): void {
Logger.log(this.debugMode, 'HeroViewComp', ...args);
}
private debugWarn(...args: any[]): void {
Logger.warn(this.debugMode, 'HeroViewComp', ...args);
}
// ==================== View 层属性(表现相关)====================
as: HeroSpine = null!
status:String = "idle"
@@ -55,7 +47,7 @@ export class HeroViewComp extends CCComp {
get model() {
// 🔥 修复添加安全检查防止ent为null时的访问异常
if (!this.ent) {
this.debugWarn("[HeroViewComp] ent is null, returning null for model");
mLogger.warn(this.debugMode, 'HeroViewComp', "[HeroViewComp] ent is null, returning null for model");
return null;
}
return this.ent.get(HeroAttrsComp);
@@ -196,7 +188,7 @@ export class HeroViewComp extends CCComp {
// 不再基于血量是否满来决定显示状态,只更新进度条
let hp=this.model.hp;
let hp_max=this.model.Attrs[Attrs.HP_MAX];
// this.debugLog("hp_show",hp,hp_max)
// mLogger.log(this.debugMode, 'HeroViewComp', "hp_show",hp,hp_max)
let targetProgress = hp / hp_max;
let hpNode = this.top_node.getChildByName("hp");
@@ -224,7 +216,7 @@ export class HeroViewComp extends CCComp {
if(!this.top_node.active) return
let mp=this.model.mp;
let mp_max=this.model.Attrs[Attrs.MP_MAX];
this.debugLog("mp_show",mp,mp_max)
mLogger.log(this.debugMode, 'HeroViewComp', "mp_show",mp,mp_max)
this.top_node.getChildByName("mp").getComponent(ProgressBar).progress = mp / mp_max;
this.scheduleOnce(() => {
this.top_node.getChildByName("mp").getChildByName("mpb").getComponent(ProgressBar).progress = mp / mp_max;
@@ -425,7 +417,7 @@ export class HeroViewComp extends CCComp {
realDead(){
// 🔥 修复添加model安全检查防止实体销毁过程中的空指针异常
if (!this.model) {
this.debugWarn("[HeroViewComp] realDead called but model is null, skipping");
mLogger.warn(this.debugMode, 'HeroViewComp', "[HeroViewComp] realDead called but model is null, skipping");
return;
}
if(this.model.fac === FacSet.HERO){
@@ -501,7 +493,7 @@ export class HeroViewComp extends CCComp {
playSkillEffect(skill_id:number) {
let skill = SkillSet[skill_id]
this.debugLog('[heroview] skill_id'+skill_id,skill)
mLogger.log(this.debugMode, 'HeroViewComp', '[heroview] skill_id'+skill_id,skill)
if (!skill) return;
switch(skill.act){
case "max":

View File

@@ -1,3 +1,5 @@
import { _decorator } from "cc";
import { mLogger } from "../common/Logger";
import { basename } from "path/win32";
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
@@ -8,6 +10,8 @@ import { TalAttrs, talConf, TalEffet, TalTarget, TriType} from "../common/config
import { HeroAttrsComp } from "./HeroAttrsComp";
import { HeroViewComp } from "./HeroViewComp";
const { property } = _decorator;
/**
* 天赋槽位接口定义
* 描述单个天赋的数据结构
@@ -42,6 +46,9 @@ export interface TalSlot {
*/
@ecs.register('TalComp', true)
export class TalComp extends ecs.Comp {
@property({ tooltip: "是否启用调试日志" })
private debugMode: boolean = false;
/** 英雄视图组件引用,运行时获取以避免循环引用 */
private heroView: any = null;
@@ -80,7 +87,7 @@ export class TalComp extends ecs.Comp {
*/
private onUseTalentCard(event: string, args: any) {
const uuid = args as number;
console.log(`[TalComp] 收到天赋选择事件,添加天赋 ID: ${uuid}`);
mLogger.log(this.debugMode, 'TalComp', `[TalComp] 收到天赋选择事件,添加天赋 ID: ${uuid}`);
this.addTal(uuid);
}
@@ -91,7 +98,7 @@ export class TalComp extends ecs.Comp {
// 只有当前实体是主角时才处理虽然TalComp只挂载在主角上但为了安全起见可以再确认或者直接处理
// GameEvent.CanUpdateLv 事件参数 { lv: number }
console.log(`[TalComp] 监听到升级事件,当前等级: ${args.lv}`);
mLogger.log(this.debugMode, 'TalComp', `[TalComp] 监听到升级事件,当前等级: ${args.lv}`);
// 更新升级类型的天赋进度 (默认每次升级触发一次val=1)
this.updateCur(TriType.LUP, 1);
@@ -109,7 +116,7 @@ export class TalComp extends ecs.Comp {
addTal(uuid: number,v_add:number = 0,c_add:number = 0,t_add:number = 0) {
// 检查天赋是否已存在
if (this.Tals[uuid]) {
console.log(`[TalComp]天赋已存在,执行叠加逻辑 ID:${uuid}`);
mLogger.log(this.debugMode, 'TalComp', `[TalComp]天赋已存在,执行叠加逻辑 ID:${uuid}`);
const tConf = talConf[uuid];
if (tConf) {
// 叠加效果数值
@@ -121,7 +128,7 @@ export class TalComp extends ecs.Comp {
// 获取天赋配置
const tConf = talConf[uuid];
if (!tConf) {
console.error(`[TalComp]天赋配置不存在,天赋ID:${uuid}`);
mLogger.error(this.debugMode, 'TalComp', `[TalComp]天赋配置不存在,天赋ID:${uuid}`);
return;
}
@@ -143,7 +150,7 @@ export class TalComp extends ecs.Comp {
desc: tConf.desc,
cur: 0, // 当前累积值初始为0
};
console.log(`[TalComp]添加天赋成功,天赋ID:${uuid}`);
mLogger.log(this.debugMode, 'TalComp', `[TalComp]添加天赋成功,天赋ID:${uuid}`);
}
checkTal() {
@@ -157,7 +164,7 @@ export class TalComp extends ecs.Comp {
for (let uuid in this.Tals) {
const talent = this.Tals[uuid];
if (talent.cur >= (talent.Trigger - talent.Trigger_add)) { // 修复触发条件,累积值达到或超过触发阈值时触发
console.log(`[TalComp]天赋触发,天赋ID:${uuid}`);
mLogger.log(this.debugMode, 'TalComp', `[TalComp]天赋触发,天赋ID:${uuid}`);
// 重置累积值
talent.cur = 0;
// 添加到触发列表
@@ -180,7 +187,7 @@ export class TalComp extends ecs.Comp {
updateVal(uuid: number, val: number) {
// 检查天赋是否存在
if (!this.Tals[uuid]) {
console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`);
mLogger.error(this.debugMode, 'TalComp', `[TalComp]天赋不存在,天赋ID:${uuid}`);
return;
}
@@ -191,7 +198,7 @@ export class TalComp extends ecs.Comp {
updateTrigger(uuid: number, val: number) {
// 检查天赋是否存在
if (!this.Tals[uuid]) {
console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`);
mLogger.error(this.debugMode, 'TalComp', `[TalComp]天赋不存在,天赋ID:${uuid}`);
return;
}
@@ -225,7 +232,7 @@ export class TalComp extends ecs.Comp {
checkTrigger(uuid:number){
const talent = this.Tals[uuid];
if (talent.cur >= (talent.Trigger - talent.Trigger_add)) { // 修复触发条件,累积值达到或超过触发阈值时触发
console.log(`[TalComp]天赋触发,天赋ID:${uuid}`);
mLogger.log(this.debugMode, 'TalComp', `[TalComp]天赋触发,天赋ID:${uuid}`);
for(let i=0;i<(talent.count+talent.count_add);i++){
this.doTriggerTal(talent.uuid);
}
@@ -242,7 +249,7 @@ export class TalComp extends ecs.Comp {
doTriggerTal(uuid: number) {
// 检查天赋是否存在
if (!this.Tals[uuid]) {
console.error(`[TalComp]天赋不存在,天赋ID:${uuid}`);
mLogger.error(this.debugMode, 'TalComp', `[TalComp]天赋不存在,天赋ID:${uuid}`);
return;
}
const talent = this.Tals[uuid];