future 1 жил өмнө
parent
commit
7ef48e4eff

+ 6 - 0
assets/data/data.ts

@@ -84,6 +84,7 @@ export class att_drag_data{
     public other_drag_list:att_drag_data[] = [];
     public other_widget_finish_listen_list:other_widget_finish_listen_item[] = [];
     public index:number = -1; //当前索引
+    public score:number = 0; //分数
 }
 
 export class other_widget_finish_listen_item{
@@ -421,6 +422,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_active_event_data:event_active_event_item = null; //
     public event_item_stop_active_event_data:event_stop_active_event_item = null; //
 
@@ -533,6 +535,10 @@ export class event_collect_event_item extends base_event_item{ // 收集多个
     public event_id_list:number[] = []
     public is_alone:boolean = false; //是否单独一个
 }
+export class event_collect_event_score_item extends base_event_item { // 收集多个事件分数
+    public event_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 - 1
assets/script/config.ts

@@ -240,7 +240,7 @@ export class config {
         more_scene_is_show_arrow_event:21, //多场景-是否显示箭头事件
         more_scene_jump_assigned_page_event:22, //多场景-跳转指定页数事件
         top_view_hide:23,//弹窗隐藏
-
+        collect_event_score:24, //收集事件-分数
         event_group:100, //事件组
     }
 
@@ -298,6 +298,7 @@ export class config {
         WIDGET_FINISH:"WIDGET_FINISH", //控件完成了自己本身的任务
         WIDGET_FAIL:"WIDGET_FAIL", //失败
         WIDGET_HIDE:"WIDGET_HIDE", //隐藏
+        WIDGET_DRAG_OTHER_FINISH:"WIDGET_DRAG_OTHER_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", //弹窗关闭

+ 65 - 6
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_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_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 { config } from '../../config';
 import { tools } from '../../tools';
 import { ClientEvent } from '../../clientEvent';
@@ -16,6 +16,8 @@ export class taskServce {
     private static finishDaGuai:Map<number,boolean> = new Map;
     private static cur_collect_event:event_item = null;
     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;
     public static guo_ju_qing_binding_event_id:number = -1;
     private static isFinishZhaoXiJieTask:boolean = false;
     private static finishZhaoXiJieLastEventId:number = -1;
@@ -59,6 +61,8 @@ export class taskServce {
         taskServce.finishZhaoXiJie.clear();
         taskServce.cur_collect_event = null;
         taskServce.cur_only_collect_event = null;
+        taskServce.cur_collect_event_score = null;
+        taskServce.cur_collect_event_score_total_score = 0;
         taskServce.guo_ju_qing_binding_event_id = -1;
         taskServce.isFinishZhaoXiJieTask = false;
         taskServce.finishZhaoXiJieLastEventId = -1;
@@ -208,9 +212,25 @@ export class taskServce {
                 //     console.log("event_data--",event_data)
                 // }
             break;
-            // case config.event_type.start_event:
-
-            // break;
+            case config.event_type.collect_event_score:
+                taskServce.cur_collect_event_score_total_score = 0
+
+                let event_score_id_list = event.event_item_collect_event_score_data.event_id_list
+                taskServce.cur_collect_event_score = new event_item;
+                taskServce.cur_collect_event_score.event_id = event.event_id
+                taskServce.cur_collect_event_score.type = event.type
+                taskServce.cur_collect_event_score.event_item_collect_event_score_data = new event_collect_event_score_item
+                taskServce.cur_collect_event_score.event_item_collect_event_score_data.total_score = event.event_item_collect_event_score_data.total_score
+                for (let index = 0; index < event_score_id_list.length; index++) {
+                    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)
+                // 不再执行后续事件
+                if(taskServce.cur_collect_event_score.event_item_collect_event_score_data.event_id_list.length>0) {
+                    return
+                }
+            break;
             case config.event_type.active_event:
                 ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,event.event_item_active_event_data.binding_widget_id,event)
             break;
@@ -421,6 +441,40 @@ export class taskServce {
 
     }
 
+    public static onWidgetDragOtherFinishEvent(widget_id:number, score:number) {
+        if(taskServce.cur_collect_event_score==null) {
+            return
+        }
+        if(taskServce.mTaskData==null){
+            return
+        }
+        let event = this.exeWidgeTaskDic.get(widget_id)
+        if(event!=null) {
+            let e_index = taskServce.cur_collect_event_score.event_item_collect_event_score_data.event_id_list.indexOf(event.event_id)
+            if(e_index!=-1){
+                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)
+            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){
+                        taskServce.exeNextDelayEvent(collect_event_score)
+                        taskServce.cur_collect_event_score = null //置为null
+                    }
+                } else {
+                    if(collect_event_score.fail.trigger_event_id!=-1){
+                        taskServce.exeNextDelayEvent(collect_event_score, false)
+                        taskServce.cur_collect_event_score = null //置为null
+                    }
+                }
+            }
+        }
+    }
+
     public static checkFinishDaBossTask(){
         let isFinish  = true;
         if(!taskServce.mTaskData._da_guai){
@@ -568,7 +622,7 @@ export class taskServce {
        taskServce.DistributedEvent(event)
     }
 
-    public static exeNextDelayEvent(event:event_item){
+    public static exeNextDelayEvent(event:event_item, is_success_trigger:boolean=true){
         if(event!=null){
             if(event.success.is_finish_game){
                 return gameManager.Singleton.gameOver()
@@ -577,7 +631,12 @@ export class taskServce {
                     return gameManager.Singleton.nextScene()
                 }
             }
-            let id = event.success.trigger_event_id;
+            let id = -1
+            if(is_success_trigger) {
+                id = event.success.trigger_event_id
+            } else {
+                id = event.fail.trigger_event_id
+            }
             if(id!=-1){
                 let _event:event_item =  this.getEventById(id)
                 if(_event===null){

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

@@ -392,6 +392,7 @@ export class gameManager extends Component {
         ClientEvent.offAll(config.EventRun.NOTICE_EVENT)
         ClientEvent.offAll(config.EventRun.WIDGET_FINISH)
         ClientEvent.offAll(config.EventRun.WIDGET_FAIL)
+        ClientEvent.offAll(config.EventRun.WIDGET_DRAG_OTHER_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)
@@ -407,6 +408,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.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)
@@ -470,6 +472,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)
     }
 
     public startLevelGame(){
@@ -632,6 +635,10 @@ export class gameManager extends Component {
         taskServce.onWidgetFinishEvent(widget_id, finish_event_item)
     }
 
+    onWidgetDragOtherFinishEvent(widget_id:number, score:number) {
+        taskServce.onWidgetDragOtherFinishEvent(widget_id, score)
+    }
+
     onWidgetFailEvent(widget_id:number){
         taskServce.onWidgetFailEvent(widget_id)
     }

+ 4 - 0
assets/script/run/widget/widget_drag.ts

@@ -2,6 +2,8 @@ import { _decorator, Component, EventTouch, Node, Rect, UITransform, v2, Vec2, V
 import { widget_base } from './widget_base';
 import { att_drag_data, widget_item_data } from '../../../data/data';
 import { gameManager } from '../gameManager';
+import { ClientEvent } from '../../clientEvent';
+import { config } from '../../config';
 const { ccclass, property } = _decorator;
 
 @ccclass('widget_drag')
@@ -27,6 +29,7 @@ export class widget_drag extends widget_base {
                 item.other_event_id = element.other_event_id;
                 item.drag_size_width = element.drag_size_width;
                 item.drag_size_height = element.drag_size_height;
+                item.score = element.score;
                 this.other_drag_list.push(item)
             }
         }
@@ -95,6 +98,7 @@ export class widget_drag extends widget_base {
                     if(item_data.other_event_id!=-1){
                         this.offEvent()
                         console.log("item_data.other_event_id",item_data.other_event_id)
+                        ClientEvent.dispatchEvent(config.EventRun.WIDGET_DRAG_OTHER_FINISH,this.mData.att.id,item_data.score)
                         gameManager.Singleton.exeEvent(item_data.other_event_id)
                         isCheck = true;
                         break;