future hai 1 ano
pai
achega
073cb516e9

+ 6 - 0
assets/data/data.ts

@@ -184,6 +184,7 @@ export class ui_att_item{
     public height:number = 0;
     public res:string = ""; //资源
     public res_name:string = "";
+    public score:number = 0;
 }
 export class not_have_interact_data{
     public bg:ui_att_item = null;
@@ -423,6 +424,7 @@ export class event_item{
     public event_item_start_event_data:event_start_event_item = null; //
     public event_item_collect_event_data:event_collect_event_item = null; // 
     public event_item_collect_event_score_data:event_collect_event_score_item = null; // 
+    public event_item_collect_widget_score_data:event_collect_widget_score_item = null; // 
     public event_item_active_event_data:event_active_event_item = null; //
     public event_item_stop_active_event_data:event_stop_active_event_item = null; //
 
@@ -539,6 +541,10 @@ export class event_collect_event_score_item extends base_event_item { // 收集
     public event_id_list:number[] = []
     public total_score:number = 0; //分数
 }
+export class event_collect_widget_score_item extends base_event_item { //收集控件-分数
+    public widget_id_list:number[] = []
+    public total_score:number = 0; //分数
+}
 export class event_item_countdown_over extends base_event_item{ //倒计时结束
     public binding_widget_id:number = -1; //绑定某一个UI
     public binding_fail_event_id:number = -1; //失败事件

+ 2 - 0
assets/script/config.ts

@@ -241,6 +241,7 @@ export class config {
         more_scene_jump_assigned_page_event:22, //多场景-跳转指定页数事件
         top_view_hide:23,//弹窗隐藏
         collect_event_score:24, //收集事件-分数
+        collect_widget_score:25, //收集多个控件-分数
         event_group:100, //事件组
     }
 
@@ -299,6 +300,7 @@ export class config {
         WIDGET_FAIL:"WIDGET_FAIL", //失败
         WIDGET_HIDE:"WIDGET_HIDE", //隐藏
         WIDGET_DRAG_OTHER_FINISH:"WIDGET_DRAG_OTHER_FINISH", //控件拖拽其他完成
+        WIDGET_QUESTION_SELECT_FINISH:"WIDGET_QUESTION_SELECT_FINISH", //控件问题选择完成
         SHOW_ZHAO_BU_TONG_FINISH_STATUS:"SHOW_ZHAO_BU_TONG_FINISH_STATUS", //
         ON_ZHAO_BU_TONG_ALL_FINISH:"ON_ZHAO_BU_TONG_ALL_FINISH", //找细节所有完成
         TOP_VIEW_CLOSE:"TOP_VIEW_CLOSE", //弹窗关闭

+ 72 - 3
assets/script/run/TaskSchedule/taskServce.ts

@@ -1,5 +1,5 @@
 import { _decorator, Component, Node } from 'cc';
-import { da_guai_item_data, event_active_event_item, event_collect_event_item, event_collect_event_score_item, event_item, event_start_event_item, task_data, zhao_xi_jie_data, zhao_xi_jie_item_data } from '../../../data/data';
+import { da_guai_item_data, event_collect_event_item, event_collect_event_score_item, event_collect_widget_score_item, event_item, event_start_event_item, task_data, zhao_xi_jie_data, zhao_xi_jie_item_data } from '../../../data/data';
 import { config } from '../../config';
 import { tools } from '../../tools';
 import { ClientEvent } from '../../clientEvent';
@@ -18,6 +18,8 @@ export class taskServce {
     private static cur_only_collect_event:event_item = null;
     private static cur_collect_event_score:event_item = null;
     private static cur_collect_event_score_total_score:number = 0;
+    private static cur_collect_widget_score:event_item = null;
+    private static cur_collect_widget_score_total_score:number = 0;
     public static guo_ju_qing_binding_event_id:number = -1;
     private static isFinishZhaoXiJieTask:boolean = false;
     private static finishZhaoXiJieLastEventId:number = -1;
@@ -63,6 +65,8 @@ export class taskServce {
         taskServce.cur_only_collect_event = null;
         taskServce.cur_collect_event_score = null;
         taskServce.cur_collect_event_score_total_score = 0;
+        taskServce.cur_collect_widget_score = null;
+        taskServce.cur_collect_widget_score_total_score = 0;
         taskServce.guo_ju_qing_binding_event_id = -1;
         taskServce.isFinishZhaoXiJieTask = false;
         taskServce.finishZhaoXiJieLastEventId = -1;
@@ -226,6 +230,26 @@ export class taskServce {
                         const element = event_score_id_list[index];
                         taskServce.cur_collect_event_score.event_item_collect_event_score_data.event_id_list.push(element)
                     }
+                    // console.log("收集事件-分数 ",taskServce.cur_collect_event_score.event_item_collect_event_score_data.event_id_list)
+                    // 不再执行后续事件
+                    return
+                }
+            break;
+            case config.event_type.collect_widget_score:
+                let widget_score_id_list = event.event_item_collect_widget_score_data.widget_id_list
+                if(widget_score_id_list.length>0) {
+                    taskServce.cur_collect_widget_score_total_score = 0
+
+                    taskServce.cur_collect_widget_score = new event_item;
+                    taskServce.cur_collect_widget_score.event_id = event.event_id
+                    taskServce.cur_collect_widget_score.type = event.type
+                    taskServce.cur_collect_widget_score.event_item_collect_widget_score_data = new event_collect_widget_score_item
+                    taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.total_score = event.event_item_collect_widget_score_data.total_score
+                    for (let index = 0; index < widget_score_id_list.length; index++) {
+                        const element = widget_score_id_list[index];
+                        taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.widget_id_list.push(element)
+                    }
+                    // console.log("收集控件-分数 ",taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.widget_id_list)
                     // 不再执行后续事件
                     return
                 }
@@ -434,13 +458,56 @@ export class taskServce {
                 taskServce.finishDaGuai.set(widget_id,true)
                 ClientEvent.dispatchEvent(config.EventRun.ON_BOSS_HURT,d_1.hurt)
                 taskServce.checkFinishDaBossTask()
-
             break;
         } 
+    }
 
+    public static onWidgetQuestionSelectFinishEvent(widget_id:number, score:number) {
+        this.calculateCurrentCollectWidgetScore(widget_id, score)
     }
 
     public static onWidgetDragOtherFinishEvent(widget_id:number, score:number) {
+        this.calculateCurrentCollectEventScore(widget_id, score)
+    }
+
+    // 计算当前收集控件分数
+    private static calculateCurrentCollectWidgetScore(widget_id:number, score:number) {
+        // console.log('widget_id=',widget_id,'score=',score)
+        if(taskServce.cur_collect_widget_score==null) {
+            return
+        }
+        if(taskServce.mTaskData==null){
+            return
+        }
+        let e_index = taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.widget_id_list.indexOf(widget_id)
+        if(e_index!=-1){
+            taskServce.cur_collect_widget_score_total_score += score
+            taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.widget_id_list.splice(e_index,1)
+            // console.log('当前收控件分数=',taskServce.cur_collect_widget_score_total_score)
+            if(taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.widget_id_list.length<=0) {
+                ClientEvent.dispatchEvent(config.EventRun.ON_WIDGET_FINISH_COLLECT_EVENT,taskServce.cur_collect_widget_score.event_id)
+                let collect_widget_score = taskServce.getEventById(taskServce.cur_collect_widget_score.event_id)
+                // console.log('collect_event_score=',collect_widget_score)
+                if(taskServce.cur_collect_widget_score_total_score>=taskServce.cur_collect_widget_score.event_item_collect_widget_score_data.total_score) {
+                    if(collect_widget_score.success.trigger_event_id!=-1){
+                        console.log('收集-控件-分数  成功')
+                        taskServce.exeNextDelayEvent(collect_widget_score)
+                        taskServce.cur_collect_event_score = null //置为null
+                    }
+                } else {
+                    if(collect_widget_score.fail.trigger_event_id!=-1){
+                        console.log('收集-控件-分数  失败')
+                        taskServce.exeNextDelayEvent(collect_widget_score, false)
+                        taskServce.cur_collect_event_score = null //置为null
+                    }
+                }
+            }
+        }
+    }
+
+    // 计算当前收集事件分数
+    private static calculateCurrentCollectEventScore(widget_id:number, score:number) {
+        // console.log('widget_id=',widget_id,'score=',score)
         if(taskServce.cur_collect_event_score==null) {
             return
         }
@@ -454,18 +521,20 @@ export class taskServce {
                 taskServce.cur_collect_event_score_total_score += score
                 taskServce.cur_collect_event_score.event_item_collect_event_score_data.event_id_list.splice(e_index,1)
             }
-            // console.log('当前分数=',taskServce.cur_collect_event_score_total_score)
+            // console.log('当前收集事件分数=',taskServce.cur_collect_event_score_total_score)
             if(taskServce.cur_collect_event_score.event_item_collect_event_score_data.event_id_list.length<=0) {
                 ClientEvent.dispatchEvent(config.EventRun.ON_WIDGET_FINISH_COLLECT_EVENT,taskServce.cur_collect_event_score.event_id)
                 let collect_event_score = taskServce.getEventById(taskServce.cur_collect_event_score.event_id)
                 // console.log('collect_event_score=',collect_event_score)
                 if(taskServce.cur_collect_event_score_total_score>=taskServce.cur_collect_event_score.event_item_collect_event_score_data.total_score) {
                     if(collect_event_score.success.trigger_event_id!=-1){
+                        console.log('收集-事件-分数   成功')
                         taskServce.exeNextDelayEvent(collect_event_score)
                         taskServce.cur_collect_event_score = null //置为null
                     }
                 } else {
                     if(collect_event_score.fail.trigger_event_id!=-1){
+                        console.log('收集-事件-分数   失败')
                         taskServce.exeNextDelayEvent(collect_event_score, false)
                         taskServce.cur_collect_event_score = null //置为null
                     }

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

@@ -393,6 +393,7 @@ export class gameManager extends Component {
         ClientEvent.offAll(config.EventRun.WIDGET_FINISH)
         ClientEvent.offAll(config.EventRun.WIDGET_FAIL)
         ClientEvent.offAll(config.EventRun.WIDGET_DRAG_OTHER_FINISH)
+        ClientEvent.offAll(config.EventRun.WIDGET_QUESTION_SELECT_FINISH)
         ClientEvent.offAll(config.EventRun.ON_WIDGET_FINISH_COLLECT_EVENT)
         ClientEvent.offAll(config.EventRun.WIDGET_HIDE)
         ClientEvent.offAll(config.EventRun.SHOW_ZHAO_BU_TONG_FINISH_STATUS)
@@ -409,6 +410,7 @@ export class gameManager extends Component {
         ClientEvent.on(config.EventRun.WIDGET_FINISH,this.onWidgetFinishEvent.bind(this),this)
         ClientEvent.on(config.EventRun.WIDGET_FAIL,this.onWidgetFailEvent.bind(this),this)
         ClientEvent.on(config.EventRun.WIDGET_DRAG_OTHER_FINISH,this.onWidgetDragOtherFinishEvent.bind(this),this)
+        ClientEvent.on(config.EventRun.WIDGET_QUESTION_SELECT_FINISH,this.onWidgetQuestionSelectFinishEvent.bind(this),this)
         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)
@@ -473,6 +475,7 @@ export class gameManager extends Component {
     protected onDestroy(): void {
         ClientEvent.off(config.EventRun.WIDGET_FINISH,this.onWidgetFinishEvent.bind(this),this)
         ClientEvent.off(config.EventRun.WIDGET_DRAG_OTHER_FINISH,this.onWidgetDragOtherFinishEvent.bind(this),this)
+        ClientEvent.off(config.EventRun.WIDGET_QUESTION_SELECT_FINISH,this.onWidgetQuestionSelectFinishEvent.bind(this),this)
     }
 
     public startLevelGame(){
@@ -635,6 +638,10 @@ export class gameManager extends Component {
         taskServce.onWidgetFinishEvent(widget_id, finish_event_item)
     }
 
+    onWidgetQuestionSelectFinishEvent(widget_id:number, score:number) {
+        taskServce.onWidgetQuestionSelectFinishEvent(widget_id, score)
+    }
+
     onWidgetDragOtherFinishEvent(widget_id:number, score:number) {
         taskServce.onWidgetDragOtherFinishEvent(widget_id, score)
     }

+ 3 - 2
assets/script/run/top_layer.ts

@@ -161,12 +161,13 @@ export class top_layer extends Component {
         item.parent = this.question_content;
         item.position = new Vec3(data.att.x,data.att.y)
         this.mQuestionSelect = item.getComponent(question_select)
-        this.mQuestionSelect.initView(data.att.question_select,event_data,this.onQuestionItemSelect.bind(this))
+        this.mQuestionSelect.initView(data.att.id, data.att.question_select, event_data, this.onQuestionItemSelect.bind(this))
     }
 
-    onQuestionItemSelect(data:event_item_show_question_select_item){
+    onQuestionItemSelect(widget_id:number, att_data:ui_att_item, data:event_item_show_question_select_item){
         this.mQuestionSelect.node.removeFromParent()
         this.mQuestionSelect = null;
+        ClientEvent.dispatchEvent(config.EventRun.WIDGET_QUESTION_SELECT_FINISH,widget_id,att_data.score)
         if(data.binding_event_id!=-1){
             gameManager.Singleton.exeEvent(data.binding_event_id)
         }

+ 1 - 1
assets/script/run/ui/btn_question_item.ts

@@ -25,7 +25,7 @@ export class btn_question_item extends Component {
         gameManager.initUiBaseAtt(this.node,this.m_data)
         this.node.on(Node.EventType.TOUCH_END,()=>{
             if(this.mCallBack!=null){
-                this.mCallBack(this.mEventData)
+                this.mCallBack(this,this.mEventData)
             }
         })
     }

+ 6 - 4
assets/script/run/ui/question_select.ts

@@ -6,10 +6,12 @@ const { ccclass, property } = _decorator;
 
 @ccclass('question_select')
 export class question_select extends Component {
-    private m_data:att_question_select = null;
     @property(Prefab) btn_question:Prefab = null;
+    private m_widget_id:number = 0
+    private m_data:att_question_select = null;
     private mCallBack = null;
-    public initView(data:att_question_select,event_data:event_item_show_question_select,call){
+    public initView(widget_id:number,data:att_question_select,event_data:event_item_show_question_select,call){
+        this.m_widget_id = widget_id
         this.m_data = data;
         this.mCallBack = call;
         this.node.destroyAllChildren();
@@ -23,9 +25,9 @@ export class question_select extends Component {
     }
 
 
-    onItemClick(item:event_item_show_question_select_item){
+    onItemClick(item:btn_question_item, data:event_item_show_question_select_item){
         if(this.mCallBack!=null){
-            this.mCallBack(item)
+            this.mCallBack(this.m_widget_id,item.getData(),data)
         }
         gameManager.Singleton.sys_click_button_music()
     }