fix(奖励): 修复等级奖励类型获取逻辑并添加空值检查

- 调整 getLevelRewardType 函数,仅在特定等级返回天赋类型,其他等级返回 null
- 在 MissionComp.call_cards 中添加奖励类型空值检查,避免无效调用
- 为多个预制体组件统一添加 debugMode 默认值
This commit is contained in:
walkpan
2026-02-04 20:31:40 +08:00
parent b9e9527375
commit 30ca0baabc
3 changed files with 23 additions and 28 deletions

View File

@@ -8780,6 +8780,7 @@
"__prefab": {
"__id__": 400
},
"debugMode": false,
"card1": {
"__id__": 323
},
@@ -17261,6 +17262,7 @@
"__prefab": {
"__id__": 768
},
"debugMode": false,
"coins_node": {
"__id__": 657
},
@@ -17309,6 +17311,7 @@
"__prefab": {
"__id__": 772
},
"debugMode": false,
"_id": ""
},
{
@@ -38848,6 +38851,7 @@
"__prefab": {
"__id__": 1759
},
"debugMode": false,
"_id": ""
},
{

View File

@@ -10,14 +10,12 @@ import { CardType, CardKind } from "./GameSet";
* @returns 奖励类型 CardType
*/
export function getLevelRewardType(level: number): CardType {
if (level === 1) {
return CardType.Skill;
} else if (level >= 2 && level <= 5) {
return CardType.Talent;
} else if (level === 6) {
return CardType.Partner;
} else {
return CardType.Potion; // 以后暂时都是物品
switch (level) {
case 2: return CardType.Talent;
case 5: return CardType.Talent;
case 10: return CardType.Talent;
default:
return null
}
}

View File

@@ -77,7 +77,7 @@ export class MissionComp extends CCComp {
SpecialMonsterSchedule.forEach((item, index) => {
if (!this.spawnedSpecialIndices.has(index) && fightTime >= item.time) {
this.spawnedSpecialIndices.add(index);
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 触发特殊刷怪: ${item.desc}`);
mLogger.log(this.debugMode, 'MissionComp', ` 触发特殊刷怪: ${item.desc}`);
oops.message.dispatchEvent("SpawnSpecialMonster", {
uuid: item.uuid,
type: item.type,
@@ -89,23 +89,15 @@ export class MissionComp extends CCComp {
// 升级奖励触发
onLevelUp(event: string, args: any) {
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 英雄升级到 ${args.lv} 级!`);
mLogger.log(this.debugMode, 'MissionComp', ` 英雄升级到 ${args.lv} 级!`);
// 默认每级都触发属性选择
oops.message.dispatchEvent(GameEvent.AttrSelect);
this.call_cards(args.lv)
// 获取当前等级对应的奖励类型
// 触发奖励选择界面 (暂时留空)
// this.showLevelUpReward();
}
call_cards(lv:number){
const rewardType = getLevelRewardType(lv);
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 触发奖励选择, 类型: ${rewardType}`);
// 默认每级都触发属性选择
oops.message.dispatchEvent(GameEvent.AttrSelect);
if(!rewardType || rewardType== null) return
mLogger.log(this.debugMode, 'MissionComp', ` 触发奖励选择, 类型: ${rewardType}`);
// 根据类型发送对应的事件
switch (rewardType) {
case CardType.Talent:
@@ -120,11 +112,12 @@ export class MissionComp extends CCComp {
case CardType.Potion:
oops.message.dispatchEvent(GameEvent.ShopOpen);
break;
}
}
showLevelUpReward() {
// TODO: 显示三选一技能/属性奖励界面
mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] 显示升级奖励界面 (TODO)");
mLogger.log(this.debugMode, 'MissionComp', " 显示升级奖励界面 (TODO)");
}
//奖励发放
@@ -133,7 +126,7 @@ export class MissionComp extends CCComp {
}
do_mon_dead(event:any,data:any){
// mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] do_mon_dead",event,data)
// mLogger.log(this.debugMode, 'MissionComp', " do_mon_dead",event,data)
smc.vmdata.mission_data.mon_num--
// 计算并增加经验
// data 应该是怪物组件或包含怪物信息的对象
@@ -222,7 +215,7 @@ do_ad(){
// smc.mission.play = false;
smc.mission.pause = true;
// oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})
mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] open_Victory",is_hero_dead,this.revive_times)
mLogger.log(this.debugMode, 'MissionComp', " open_Victory",is_hero_dead,this.revive_times)
oops.gui.open(UIID.Victory,{
victory:false,
rewards:this.rewards,
@@ -235,7 +228,7 @@ do_ad(){
onReviveSuccess() {
if (this.revive_times > 0) {
this.revive_times--;
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 玩家复活,剩余次数: ${this.revive_times}`);
mLogger.log(this.debugMode, 'MissionComp', ` 玩家复活,剩余次数: ${this.revive_times}`);
}
}
@@ -250,7 +243,7 @@ do_ad(){
}
mission_end(){
// mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] mission_end")
// mLogger.log(this.debugMode, 'MissionComp', " mission_end")
// 合并 FightEnd 逻辑:清理组件、停止游戏循环
smc.mission.play=false
this.cleanComponents()
@@ -302,7 +295,7 @@ do_ad(){
};
// mLogger.log(this.debugMode, 'MissionComp', "[MissionComp]局内数据初始化",smc.vmdata.mission_data)
// mLogger.log(this.debugMode, 'MissionComp', "局内数据初始化",smc.vmdata.mission_data)
}
private cleanComponents() {