refactor(经验系统): 移除怪物经验计算和英雄经验更新逻辑
经验系统重构,删除不再使用的怪物经验计算函数getMonsterExp和英雄经验更新方法updateHeroExp
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录天赋获取
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user