掉落加双倍处理 基本完成
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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})
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user