future 1 vuosi sitten
vanhempi
sitoutus
0d38cf7112

+ 1 - 0
assets/data/data.ts

@@ -386,6 +386,7 @@ export class zhao_xi_jie_item_data{
     public tips_res:string = "";
     public tips_res_name:string = "";
     public finish_event_id:number = -1; //完成事件id
+    public finish_widget_id:number = -1; //完成控件id
     public is_look_video_ads:boolean = false; //是否看过视频广告(无服务器返回,自主添加属性)
     public is_find_answer:boolean = false;    //是否找到答案(无服务器返回,自主添加属性)
 }

+ 2 - 0
assets/script/config.ts

@@ -303,6 +303,8 @@ export class config {
         TOP_VIEW_CLOSE:"TOP_VIEW_CLOSE", //弹窗关闭
         TOP_VIEW_FINISH:"TOP_VIEW_FINISH", //弹窗完成
         TOP_VIEW_FAIL:"TOP_VIEW_FAIL", //弹窗失败
+        TOP_VIEW_HIDE:"TOP_VIEW_HIDE", //弹窗隐藏
+        TOP_VIEW_ALL_HIDE:"TOP_VIEW_ALL_HIDE", //弹窗所有隐藏
         ON_WIDGET_FINISH_COLLECT_EVENT:"ON_WIDGET_FINISH_COLLECT_EVENT", //当控件完成事件
         ON_COUNT_DOWN_FAIL:"ON_COUNT_DOWN_FAIL",  //倒计时结束 失败
         ON_COUNT_DOWN_START:"ON_COUNT_DOWN_START",  //倒计时开始

+ 36 - 7
assets/script/run/TaskSchedule/taskServce.ts

@@ -18,6 +18,7 @@ export class taskServce {
     public static guo_ju_qing_binding_event_id:number = -1;
     private static isFinishZhaoXiJieTask:boolean = false;
     private static finishZhaoXiJieLastEventId:number = -1;
+    private static finishZhaoXiJieLastWidgetId:number = -1;
 
     //子场景
     private static mChildSceneData:task_data = null;
@@ -59,6 +60,7 @@ export class taskServce {
         taskServce.guo_ju_qing_binding_event_id = -1;
         taskServce.isFinishZhaoXiJieTask = false;
         taskServce.finishZhaoXiJieLastEventId = -1;
+        taskServce.finishZhaoXiJieLastWidgetId = -1;
     }
 
     public static initZhaoXiJieTask(){
@@ -406,23 +408,46 @@ export class taskServce {
         }
     }
 
+    public static checkFinishZhaoXiJieWidget(widget_id:number) {
+        if(taskServce.mTaskData.type!=config.task_type.zhao_xi_jie) {
+            return
+        }
+        if(taskServce.isFinishZhaoXiJieTask==false) {
+            return
+        }
+        if(taskServce.finishZhaoXiJieLastEventId!=-1) {
+            return
+        }
+        if(widget_id == taskServce.finishZhaoXiJieLastWidgetId) {
+            this.zhaoXiJieDirectFinish(false)
+        }
+    }
+
     public static checkFinishZhaoXiJieEventItem(finish_event_item:event_item) {
         if(!finish_event_item) { return }
         if(taskServce.isFinishZhaoXiJieTask) {
             if(finish_event_item.event_id == taskServce.finishZhaoXiJieLastEventId) {
-                // console.log('事件完成 事件完成 事件完成 执行')
-                gameManager.Singleton.unscheduleAllCallbacks()
-                let zhaoxijie_data = taskServce.mTaskData._zhao_xi_jie_data
-                ClientEvent.dispatchEvent(config.EventRun.ON_ZHAO_BU_TONG_ALL_FINISH, zhaoxijie_data)
-                let id = zhaoxijie_data.finish_event_id
-                taskServce.DistributedEvent(taskServce.getEventById(id))
+                this.zhaoXiJieDirectFinish(true)
             }
         }
     }
 
+    public static zhaoXiJieDirectFinish(isDispatchEventTopViewAllHide:boolean) {
+        // console.log('事件完成 事件完成 事件完成 执行')
+        gameManager.Singleton.unscheduleAllCallbacks()
+        let zhaoxijie_data = taskServce.mTaskData._zhao_xi_jie_data
+        ClientEvent.dispatchEvent(config.EventRun.ON_ZHAO_BU_TONG_ALL_FINISH, zhaoxijie_data)
+        if(isDispatchEventTopViewAllHide) {
+            ClientEvent.dispatchEvent(config.EventRun.TOP_VIEW_ALL_HIDE)
+        }
+        let id = zhaoxijie_data.finish_event_id
+        taskServce.DistributedEvent(taskServce.getEventById(id))
+    }
+
     public static checkFinishZhaoXiJieTask(widget_id:number){
         let isFinish  = true;
         taskServce.finishZhaoXiJieLastEventId = -1
+        taskServce.finishZhaoXiJieLastWidgetId = -1
         for (let index = 0; index < taskServce.mTaskData._zhao_xi_jie_data.widget_id_list.length; index++) {
             const element = taskServce.mTaskData._zhao_xi_jie_data.widget_id_list[index];
             if(!taskServce.finishZhaoXiJie.get(element.widget_id)){
@@ -433,6 +458,9 @@ export class taskServce {
                     if(element.finish_event_id) { // if(element.finish_event_id!=undefined)
                         taskServce.finishZhaoXiJieLastEventId = element.finish_event_id
                     }
+                    if(element.finish_widget_id) { // if(element.finish_widget_id!=undefined)
+                        taskServce.finishZhaoXiJieLastWidgetId = element.finish_widget_id
+                    }
                 }
             }
         }
@@ -452,9 +480,10 @@ export class taskServce {
             if(id==-1){
                 taskServce.isFinishZhaoXiJieTask = false
                 taskServce.finishZhaoXiJieLastEventId = -1
+                taskServce.finishZhaoXiJieLastWidgetId = -1
                 return tools.showToast("未设置全部找完任务的下一个事件!")
             }else{
-                if(taskServce.finishZhaoXiJieLastEventId==-1) {
+                if(taskServce.finishZhaoXiJieLastEventId==-1&&taskServce.finishZhaoXiJieLastWidgetId==-1) {
                     // console.log('直接执行了 直接执行了 直接执行了')
                     taskServce.DistributedEvent(taskServce.getEventById(id))                
                 }

+ 6 - 0
assets/script/run/gameManager.ts

@@ -399,6 +399,7 @@ export class gameManager extends Component {
         ClientEvent.offAll(config.EventRun.TOP_VIEW_CLOSE)
         ClientEvent.offAll(config.EventRun.TOP_VIEW_FINISH)
         ClientEvent.offAll(config.EventRun.TOP_VIEW_FAIL)
+        ClientEvent.offAll(config.EventRun.TOP_VIEW_HIDE)
         ClientEvent.offAll(config.EventRun.ON_COUNT_DOWN_FAIL)
         ClientEvent.offAll(config.EventRun.ON_COUNT_DOWN_START)
         ClientEvent.offAll(config.EventRun.ON_SHOW_RULE_BTN)
@@ -409,6 +410,7 @@ export class gameManager extends Component {
         ClientEvent.on(config.EventRun.TOP_VIEW_CLOSE,this.onUiCloseEvent.bind(this),this)
         ClientEvent.on(config.EventRun.TOP_VIEW_FINISH,this.onUiFinishEvent.bind(this),this)
         ClientEvent.on(config.EventRun.TOP_VIEW_FAIL,this.onUiFailEvent.bind(this),this)
+        ClientEvent.on(config.EventRun.TOP_VIEW_HIDE,this.onUiHideEvent.bind(this),this)
         ClientEvent.on(config.EventRun.ON_COUNT_DOWN_FAIL,this.onCountDownFailEvent.bind(this),this)
         ClientEvent.on(config.EventRun.ON_COUNT_DOWN_START,this.onStartCountDownEvent.bind(this),this)
     }
@@ -646,6 +648,10 @@ export class gameManager extends Component {
         taskServce.extEventByEventId(event_id)
     }
 
+    onUiHideEvent(widget_id:number) {
+        taskServce.checkFinishZhaoXiJieWidget(widget_id)
+    }
+
     onCountDownFailEvent(event_id:number){
         taskServce.extEventByEventId(event_id)
     }

+ 4 - 1
assets/script/run/ui/ui_base.ts

@@ -73,8 +73,11 @@ export class ui_base extends Component {
         
     }
 
-    public hide(){
+    public hide(isDispatchEvent:boolean=true){
         this.node.active = false;
+        if(isDispatchEvent) {
+            ClientEvent.dispatchEvent(config.EventRun.TOP_VIEW_HIDE,this.mData.att.id)
+        }
     }
 
     protected loadBg(bgInfo:ui_att_item){

+ 10 - 0
assets/script/run/ui_layer.ts

@@ -54,6 +54,7 @@ export class ui_layer extends Component {
         this.back_title_node.getComponent(back_title).initView(scene_des,this.onBack.bind(this))
         ClientEvent.on(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
         ClientEvent.on(config.EventRun.ON_SHOW_RULE_BTN,this.onChangeShowRuleStatus.bind(this),this)
+        ClientEvent.on(config.EventRun.TOP_VIEW_ALL_HIDE,this.onTopViewAllHide.bind(this),this)
     }
 
     public unInit(){
@@ -70,6 +71,7 @@ export class ui_layer extends Component {
         this.dai_dao_ju_bag.active =false;
         ClientEvent.off(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
         ClientEvent.off(config.EventRun.ON_SHOW_RULE_BTN,this.onChangeShowRuleStatus.bind(this),this)
+        ClientEvent.off(config.EventRun.TOP_VIEW_ALL_HIDE,this.onTopViewAllHide.bind(this),this)
     }
 
     onBack(){
@@ -296,6 +298,14 @@ export class ui_layer extends Component {
         gameManager.Singleton.showRule()
         this.content_rule_and_tips.getComponent(content_rule_and_tips).showRuleBtn()
     }
+
+    onTopViewAllHide() {
+        let ui_list = Array.from(this.mUIList.values())
+        for (let index = 0; index < ui_list.length; index++) {
+            const element = ui_list[index];
+            element.getComponent(ui_base).hide(false)
+        }
+    }
 }