refactor(经验系统): 移除怪物经验计算和英雄经验更新逻辑

经验系统重构,删除不再使用的怪物经验计算函数getMonsterExp和英雄经验更新方法updateHeroExp
This commit is contained in:
walkpan
2026-01-14 20:53:17 +08:00
parent 5c5954b7d5
commit 20538b76b7
3 changed files with 2 additions and 57 deletions

View File

@@ -138,38 +138,7 @@ export class SingletonModuleComp extends ecs.Comp {
gold: 200, // 金币数据MVVM绑定字段
};
/**
* 更新英雄经验
* @param exp 获得的经验值
*/
updateHeroExp(exp: number) {
if (!this.vmdata.hero) return;
this.vmdata.hero.exp += exp*20;
// console.log('[smc] 英雄升级 经验:' + this.vmdata.hero.exp + ' 等级:' + this.vmdata.hero.lv + ' 上限:' + this.vmdata.hero.exp_max);
// 确保 exp_max 初始化
if (this.vmdata.hero.exp_max <= 0) {
this.vmdata.hero.exp_max = getLevelExp(this.vmdata.hero.lv || 1);
}
while (this.vmdata.hero.exp >= this.vmdata.hero.exp_max) {
this.vmdata.hero.exp -= this.vmdata.hero.exp_max;
this.vmdata.hero.lv++;
// 更新下一级所需经验
this.vmdata.hero.exp_max = getLevelExp(this.vmdata.hero.lv);
// 触发升级事件
oops.message.dispatchEvent(GameEvent.CanUpdateLv, { lv: this.vmdata.hero.lv });
}
// 更新进度条显示 (0-1)
if (this.vmdata.hero.exp_max > 0) {
this.vmdata.hero.exp_pre = Math.floor(this.vmdata.hero.exp / this.vmdata.hero.exp_max * 100);
} else {
this.vmdata.hero.exp_pre = 0;
}
}
/**
* 记录天赋获取

View File

@@ -4,7 +4,7 @@ import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/modu
import { smc } from "../common/SingletonModuleComp";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
import { getLevelExp, getMonsterExp, MonsterCost, MonType } from "./RogueConfig";
import { MonsterCost, MonType } from "./RogueConfig";
import { GameEvent } from "../common/config/GameEvent";
import { HeroViewComp } from "../hero/HeroViewComp";
import { UIID } from "../common/config/GameUIConfig";
@@ -122,10 +122,7 @@ export class MissionComp extends CCComp {
type = MonType.ELITE;
}
}
// 获取怪物经验
const exp = getMonsterExp(data.uuid, level, type);
smc.updateHeroExp(exp);
}
}

View File

@@ -347,27 +347,6 @@ export function getLevelExp(level: number): number {
return Math.floor(baseExp * Math.pow(growthFactor, level - 1));
}
/**
* 获取怪物掉落经验
* @param monsterUuid 怪物ID
* @param monsterLevel 怪物等级
* @param monsterType 怪物类型
*/
export function getMonsterExp(monsterUuid: number, monsterLevel: number, monsterType: MonType): number {
// 基础掉落经验 (可以从 MonsterCost 推导,或者单独配置)
const baseDrop = MonsterCost[monsterUuid] ? MonsterCost[monsterUuid] * 5 : 5;
// 类型加成
let typeMultiplier = 1.0;
if (monsterType === MonType.ELITE) typeMultiplier = 3.0;
if (monsterType === MonType.BOSS) typeMultiplier = 10.0;
// 等级加成 (每级增加10%)
const levelMultiplier = 1 + (monsterLevel - 1) * 0.1;
return Math.floor(baseDrop * typeMultiplier * levelMultiplier);
}
// 怪物消耗点数配置
export const MonsterCost: Record<number, number> = {
5201: 1, // 兽人战士 (Warrior)