feat(战斗系统): 实现怪物金币掉落计算和抽卡升级消耗

- 添加calculateMonsterGold函数计算不同怪物类型的金币掉落
- 修改SingletonModuleComp初始化金币为0并添加抽卡和升级消耗
- 在MissionCardComp中添加抽卡和升级的金币检查逻辑
- 清理FightSet中无用配置并添加金币相关常量
- 在MissionComp中实现金币奖励计算和局内数据初始化
This commit is contained in:
walkpan
2026-01-15 23:32:57 +08:00
parent d6ce56e543
commit 90e6bd755a
6 changed files with 3884 additions and 3702 deletions

View File

@@ -1,15 +1,15 @@
import { _decorator, Vec3,Animation, instantiate, Prefab, Node, ProgressBar } from "cc";
import { _decorator, Vec3,Animation, instantiate, Prefab, Node, ProgressBar, Label } 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 { smc } from "../common/SingletonModuleComp";
import { oops } from "../../../../extensions/oops-plugin-framework/assets/core/Oops";
import { HeroAttrsComp } from "../hero/HeroAttrsComp";
import { MonsterCost, MonType } from "./RogueConfig";
import { MonsterCost, MonType, calculateMonsterGold } from "./RogueConfig";
import { GameEvent } from "../common/config/GameEvent";
import { HeroViewComp } from "../hero/HeroViewComp";
import { UIID } from "../common/config/GameUIConfig";
import { SkillView } from "../skill/SkillView";
import { FightSet, getLevelRewardType, CardType } from "../common/config/GameSet";
import { FightSet, getLevelRewardType, CardType, FacSet } from "../common/config/GameSet";
const { ccclass, property } = _decorator;
@@ -22,10 +22,18 @@ export class MissionComp extends CCComp {
// VictoryComp:any = null;
// reward:number = 0;
// reward_num:number = 0;
@property(Node)
coins_node:Node = null!
@property(Node)
lv_node:Node = null!
@property(Node)
chou_node:Node = null!
@property(Node)
time_node:Node = null!
/** 剩余复活次数 */
revive_times: number = 1;
rewards:any[]=[]
game_data:any={
exp:0,
@@ -41,6 +49,7 @@ export class MissionComp extends CCComp {
this.on(GameEvent.DO_AD_BACK,this.do_ad,this)
this.on(GameEvent.CanUpdateLv,this.onLevelUp,this)
this.on(GameEvent.ReviveSuccess, this.onReviveSuccess, this)
}
protected update(dt: number): void {
if(!smc.mission.play) return
@@ -96,10 +105,7 @@ export class MissionComp extends CCComp {
do_reward(){
// 奖励发放
}
do_drop(drop_item:any[],game_data:any={exp:0,gold:0,diamond:0}){
// console.log("[MissionComp] do_drop",drop_item,game_data)
}
do_mon_dead(event:any,data:any){
// console.log("[MissionComp] do_mon_dead",event,data)
smc.vmdata.mission_data.mon_num--
@@ -122,17 +128,26 @@ export class MissionComp extends CCComp {
type = MonType.ELITE;
}
}
this.cal_gold_reward(data, type);
}
}
cal_gold_reward(data: any, type: MonType) {
const cost = MonsterCost[data.uuid] || 1;
const level = data.lv || 1;
let add_gold = calculateMonsterGold(data.uuid, level, type);
smc.updateGold(add_gold, false);
}
do_hero_dead(event:any,data:any){
// console.log("[MissionComp] do_hero_dead",event,data)
// 收到 HeroDead 说明已经没有复活次数了,打开失败界面,等待玩家选择(复活或结束)
// oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false}) // 暂时不分发结束事件
this.open_Victory(null,true)
}
do_ad(){
do_ad(){
if(this.ad_back()){
oops.message.dispatchEvent(GameEvent.AD_BACK_TRUE)
smc.vmdata.mission_data.refresh_count+=FightSet.MORE_RC
@@ -147,7 +162,7 @@ export class MissionComp extends CCComp {
}
async mission_start(){
// 防止上一局的 fight_end 延迟回调干扰新局
this.unscheduleAllCallbacks();
@@ -217,6 +232,10 @@ export class MissionComp extends CCComp {
}
data_init(){
// 重置金币为初始值 (如果需要保留金币,请注释掉此行)
smc.vmdata.gold = 0;
smc.vmdata.chou_gold = FightSet.CHOU_GOLD;
smc.vmdata.lvup_gold = FightSet.LVUP_GOLD_UP;
//局内数据初始化 smc 数据初始化
smc.mission.play = true;
smc.mission.pause = false;
@@ -252,8 +271,7 @@ export class MissionComp extends CCComp {
tal:[],
info:'',
};
// 重置金币为初始值 (如果需要保留金币,请注释掉此行)
smc.vmdata.gold = 200;
// console.log("[MissionComp]局内数据初始化",smc.vmdata.mission_data)
}