feat(战斗系统): 实现英雄复活机制并优化结算界面
- 在MissionComp中添加复活次数管理及复活成功回调 - 修改VictoryComp支持复活功能,包括广告复活和英雄状态恢复 - 调整结算界面布局和按钮显示逻辑 - 优化游戏结束流程,合并FightEnd逻辑 - 修改HeroViewComp中realDeadTime为更合理的值
This commit is contained in:
@@ -22,6 +22,10 @@ export class MissionComp extends CCComp {
|
||||
// VictoryComp:any = null;
|
||||
// reward:number = 0;
|
||||
// reward_num:number = 0;
|
||||
|
||||
/** 剩余复活次数 */
|
||||
revive_times: number = 1;
|
||||
|
||||
rewards:any[]=[]
|
||||
game_data:any={
|
||||
exp:0,
|
||||
@@ -32,10 +36,11 @@ export class MissionComp extends CCComp {
|
||||
this.on(GameEvent.MissionStart,this.mission_start,this)
|
||||
this.on(GameEvent.MonDead,this.do_mon_dead,this)
|
||||
this.on(GameEvent.HeroDead,this.do_hero_dead,this)
|
||||
this.on(GameEvent.FightEnd,this.fight_end,this)
|
||||
// this.on(GameEvent.FightEnd,this.fight_end,this)
|
||||
this.on(GameEvent.MissionEnd,this.mission_end,this)
|
||||
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||smc.mission.pause){
|
||||
@@ -80,7 +85,6 @@ export class MissionComp extends CCComp {
|
||||
do_mon_dead(event:any,data:any){
|
||||
// console.log("[MissionComp] do_mon_dead",event,data)
|
||||
smc.vmdata.mission_data.mon_num--
|
||||
|
||||
// 计算并增加经验
|
||||
// data 应该是怪物组件或包含怪物信息的对象
|
||||
if (data && data.uuid) {
|
||||
@@ -108,12 +112,10 @@ export class MissionComp extends CCComp {
|
||||
}
|
||||
|
||||
do_hero_dead(event:any,data:any){
|
||||
// console.log("[MissionComp] do_hero_dead",event,data)
|
||||
// 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,game_data:this.game_data})
|
||||
// }
|
||||
// console.log("[MissionComp] do_hero_dead",event,data)
|
||||
// 收到 HeroDead 说明已经没有复活次数了,打开失败界面,等待玩家选择(复活或结束)
|
||||
// oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false}) // 暂时不分发结束事件
|
||||
this.open_Victory(null,true)
|
||||
}
|
||||
do_ad(){
|
||||
if(this.ad_back()){
|
||||
@@ -158,9 +160,26 @@ 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,game_data:this.game_data})
|
||||
open_Victory(e:any,is_hero_dead: boolean = false){
|
||||
// 暂停游戏循环和怪物行为
|
||||
// smc.mission.play = false;
|
||||
smc.mission.stop_mon_action = true;
|
||||
// oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})
|
||||
console.log("[MissionComp] open_Victory",is_hero_dead,this.revive_times)
|
||||
oops.gui.open(UIID.Victory,{
|
||||
victory:false,
|
||||
rewards:this.rewards,
|
||||
game_data:this.game_data,
|
||||
can_revive: is_hero_dead && this.revive_times > 0
|
||||
})
|
||||
}
|
||||
|
||||
/** 复活成功回调,扣除次数 */
|
||||
onReviveSuccess() {
|
||||
if (this.revive_times > 0) {
|
||||
this.revive_times--;
|
||||
console.log(`[MissionComp] 玩家复活,剩余次数: ${this.revive_times}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,6 +195,11 @@ export class MissionComp extends CCComp {
|
||||
|
||||
mission_end(){
|
||||
// console.log("[MissionComp] mission_end")
|
||||
// 合并 FightEnd 逻辑:清理组件、停止游戏循环
|
||||
smc.mission.play=false
|
||||
smc.mission.pause=false
|
||||
this.cleanComponents()
|
||||
|
||||
this.node.active=false
|
||||
}
|
||||
|
||||
@@ -188,6 +212,7 @@ export class MissionComp extends CCComp {
|
||||
smc.vmdata.mission_data.level=0
|
||||
smc.vmdata.mission_data.time=15*60
|
||||
this.rewards=[] // 改为数组,用于存储掉落物品列表
|
||||
this.revive_times = 1; // 每次任务开始重置复活次数
|
||||
// console.log("[MissionComp]局内数据初始化",smc.vmdata.mission_data)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user