掉落加双倍处理 基本完成

This commit is contained in:
2025-08-19 23:22:59 +08:00
parent c47ecc21e6
commit bee97b4fe8
6 changed files with 4496 additions and 4730 deletions

View File

@@ -73,14 +73,6 @@ export class SingletonModuleComp extends ecs.Comp {
level:1,//关卡等级
max_mission:4,//最大关卡
},
reward:{
score:0,
mission:0,
gold:0, //升级主要资源
diamond:0, //商店购买 及 双倍奖励资源
meat:0,
exp:0, //升级经验
}
};
vmAdd() {
VM.add(this.vmdata, "data");
@@ -222,7 +214,7 @@ export class SingletonModuleComp extends ecs.Comp {
this.gameDataSyncManager.spendGameProperty("diamond",diamond)
}
}
/**
* 消耗游戏数据属性(统一接口)
* - 支持单个字段spendGameProperty('gold', 10)

View File

@@ -308,8 +308,13 @@ export class MonsterDropManager {
* @param buffCount buff数量
* @returns 基础资源掉落结果
*/
static calculateBaseResourceDrops(monsterQuality: QualitySet, stageNumber: number, buffCount: number = 0): {exp: number, gold?: number, diamond?: number} {
const result: {exp: number, gold?: number, diamond?: number} = {exp: 0};
static calculateBaseResourceDrops(monsterQuality: QualitySet, stageNumber: number, buffCount: number = 0): {exp: number, gold: number, diamond: number} {
// 初始化结果对象,确保所有字段都存在
const result: {exp: number, gold: number, diamond: number} = {
exp: 0,
gold: 0,
diamond: 0
};
// 获取品质加成
const qualityBonus = QualityBonusConfig[monsterQuality];

View File

@@ -24,7 +24,11 @@ export class MissionComp extends CCComp {
// reward:number = 0;
// reward_num:number = 0;
rewards:any[]=[]
game_data:any={
exp:0,
gold:0,
diamond:0
}
onLoad(){
this.on(GameEvent.MissionStart,this.mission_start,this)
this.on(GameEvent.MonDead,this.do_mon_dead,this)
@@ -46,8 +50,11 @@ export class MissionComp extends CCComp {
do_reward(){
// 奖励发放
}
do_drop(drop_item:any[]){
console.log("[MissionComp] do_drop",drop_item)
do_drop(drop_item:any[],game_data:any={exp:0,gold:0,diamond:0}){
console.log("[MissionComp] do_drop",drop_item,game_data)
this.game_data["exp"]+=game_data.exp
this.game_data["gold"]+=game_data.gold
this.game_data["diamond"]+=game_data.diamond
let parent=this.node.getChildByName("reward").getChildByName("items")
let items=parent.children
if(drop_item.length>0){
@@ -96,7 +103,7 @@ export class MissionComp extends CCComp {
smc.vmdata.mission_data.mon_num--
if(data.drops){
if(data.drops.length>0){
this.do_drop(data.drops)
this.do_drop(data.drops,data.game_data)
}
}
if(smc.vmdata.mission_data.mon_num<=0) {
@@ -107,7 +114,7 @@ export class MissionComp extends CCComp {
}
smc.addMission(1)
oops.message.dispatchEvent(GameEvent.FightEnd,{victory:true})
oops.gui.open(UIID.Victory,{victory:true,rewards:this.rewards})
oops.gui.open(UIID.Victory,{victory:true,rewards:this.rewards,game_data:this.game_data})
}
}
@@ -116,7 +123,7 @@ export class MissionComp extends CCComp {
smc.vmdata.mission_data.hero_num--
if(smc.vmdata.mission_data.hero_num<=0) {
oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})
oops.gui.open(UIID.Victory,{victory:false,rewards:this.rewards})
oops.gui.open(UIID.Victory,{victory:false,rewards:this.rewards,game_data:this.game_data})
}
}
do_ad(){
@@ -160,7 +167,7 @@ export class MissionComp extends CCComp {
to_end_fight(){
oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})
oops.gui.open(UIID.Victory,{victory:false,rewards:this.rewards})
oops.gui.open(UIID.Victory,{victory:false,rewards:this.rewards,game_data:this.game_data})
}

View File

@@ -16,6 +16,11 @@ export class VictoryComp extends CCComp {
reward_lv:number=1
reward_num:number=2
rewards:any[]=[]
game_data:any={
exp:0,
gold:0,
diamond:0
}
/** 视图层逻辑代码分离演示 */
protected onLoad(): void {
@@ -23,6 +28,9 @@ export class VictoryComp extends CCComp {
onAdded(args: any) {
console.log("[VictoryComp] onAdded",args,smc.items)
if(args.game_data){
this.game_data=args.game_data
}
if(args.rewards){
this.add_reward(args.rewards)
this.rewards=args.rewards
@@ -52,15 +60,28 @@ export class VictoryComp extends CCComp {
}
}
victory_end(){
this.clear_data()
oops.message.dispatchEvent(GameEvent.MissionEnd)
oops.gui.removeByNode(this.node)
}
clear_data(){
this.game_data={
exp:0,
gold:0,
diamond:0
}
this.rewards=[]
this.node.getChildByName("box").getChildByName("items").removeAllChildren()
}
//看广告双倍
watch_ad(){
return true
}
double_reward(){
if(this.watch_ad()){
smc.addExp(this.game_data["exp"])
smc.addGold(this.game_data["gold"])
smc.addDiamond(this.game_data["diamond"])
this.rewards.forEach(d_item=>{
smc.addItem(d_item.item_uuid,d_item.count)
})
@@ -69,6 +90,7 @@ export class VictoryComp extends CCComp {
console.log("[VictoryComp]double_reward",smc.items,this.rewards)
}
restart(){
this.clear_data()
oops.message.dispatchEvent(GameEvent.MissionStart)
oops.gui.removeByNode(this.node)
}