future 1 年之前
父节点
当前提交
c5b56dfdc6

+ 29 - 0
assets/data/data.ts

@@ -387,6 +387,11 @@ export class event_item{
     public event_item_stop_play_loop_sound_data:event_item_stop_play_loop_sound = null; //停止播放一个音效资源
 
     public event_item_switch_scene_event_data:event_item_switch_scene_event = null; // 切换场景事件
+
+    public event_item_more_scene_is_show_arrow_event_data:event_item_more_scene_is_show_arrow_event = null;//多场景-是否显示箭头事件
+    public event_item_more_scene_jump_assigned_page_event_data:event_item_more_scene_jump_assigned_page_event = null;//多场景-跳转指定页数事件
+
+    public event_item_event_group_data:event_group_event_item = null;// 事件组
 }
 export class base_event_item{
 
@@ -490,6 +495,30 @@ export class event_item_switch_scene_event extends base_event_item { // 切换
     public delay_time:number = 0;
 }
 
+export class event_item_more_scene_is_show_arrow_event extends base_event_item {
+    public is_show:boolean = false;
+}
+
+export class event_item_more_scene_jump_assigned_page_event extends base_event_item {
+    public page_number:number = -1;
+    public interval_time:number = event_item_more_scene_jump_assigned_page_event.defaultIntervalTime(); //默认0.7
+    static defaultIntervalTime():number{ return 0.7 }
+}
+
+export class event_group_event_item extends base_event_item{ // 事件组
+    public list:event_group_event_item_event_item[] = []
+}
+
+export class event_widget_more_event_item extends base_event_item {
+    public binding_widget_id:number = -1; //绑定事件
+    public binding_widget_remark:string = ''; //备注
+}
+
+export class event_group_event_item_event_item extends base_event_item{
+    public event_item:event_item = new event_item
+    public delay_time:number = 0;
+}
+
 export class UserData {
     public user_id:string = null; //用户id
     public token:string = "";

+ 10 - 2
assets/script/config.ts

@@ -166,6 +166,10 @@ export class config {
         dir:"dir",
         show:"show",
         scene_rule_tips:"scene_rule_tips",
+        remark:"remark",
+        rotation:"rotation",
+        anchor:"anchor",
+        show_more_scene_arrow:"show_more_scene_arrow",
     }
 
     static last_id:number = 0;
@@ -199,6 +203,7 @@ export class config {
         da_guai:2, //打怪-说明:使用场上的道具攻击怪物
         guo_du:3, //过度场景-说明:无答案、无提示进行操作
         guo_ju_qing_not_rule:4, //过剧情-无规则-说明:按照剧情提示进行操作
+        guo_ju_qing_dai_dao_ju:5, //过剧情-带道具-说明:按照剧情进行道具交互
     }
 
     static zhao_xi_jie_tip_type = {
@@ -229,7 +234,11 @@ export class config {
         scene_ani:17,//场景动画
         delete_drag_other_data:18,//删除其他拖拽目标的属性
         stop_play_loop_sound:19,//停止一个音效
-        switch_scene_event:20, //切换场景事件
+        switch_scene_event:20, //多场景-切换场景事件
+        more_scene_is_show_arrow_event:21, //多场景-是否显示箭头事件
+        more_scene_jump_assigned_page_event:22, //多场景-跳转指定页数事件
+
+        event_group:100, //事件组
     }
 
     static top_view_type_map:Map<number,string> = new Map();
@@ -301,7 +310,6 @@ export class config {
         TOGGLE_YIN_YUE:"TOGGLE_YIN_YUE",  //开关音乐
         UPDATE_FREE_TIME_STATUS:"UPDATE_FREE_TIME_STATUS",  //更新免费时间状态
         WIN_LATER_AUTO_UNLOCK_NEXT_LEVEL:"WIN_LATER_AUTO_UNLOCK_NEXT_LEVEL", //获胜后自动解锁下一个关卡
-        MORE_SCENE_DIRECTION_BUTTON_CLICK_FINISH:"MORE_SCENE_DIRECTION_BUTTON_CLICK_FINISH", //多场景方向按钮点击完成
     }
     static MSG_CODE = {
         SUCCESS: 10000,

+ 24 - 14
assets/script/run/TaskSchedule/taskServce.ts

@@ -163,17 +163,19 @@ export class taskServce {
                     taskServce.cur_collect_event.event_item_collect_event_data.event_id_list.push(element)
                 }
                 // console.log("collect_event--",taskServce.cur_collect_event)
-                for (let index = 0; index < taskServce.cur_collect_event.event_item_collect_event_data.event_id_list.length; index++) {
-                    const element = taskServce.cur_collect_event.event_item_collect_event_data.event_id_list[index];
-                    let widget_id = taskServce.getEventById(element).event_item_be_event_data.binding_widget_id
-                    let event_data = new event_item
-                    let active_event = new event_active_event_item
-                    active_event.binding_widget_id = widget_id
-                    event_data.type = config.event_type.active_event
-                    event_data.event_item_active_event_data = active_event
-                    taskServce.DistributedEvent(event_data)
-                    console.log("event_data--",event_data)
-                }
+                // for (let index = 0; index < taskServce.cur_collect_event.event_item_collect_event_data.event_id_list.length; index++) {
+                //     const element = taskServce.cur_collect_event.event_item_collect_event_data.event_id_list[index];
+                //     let widget_id = taskServce.getEventById(element).event_item_be_event_data.binding_widget_id
+                //     let event_data = new event_item
+                //     //激活控件
+                //     let active_event = new event_active_event_item
+                //     active_event.binding_widget_id = widget_id
+                //     event_data.type = config.event_type.active_event
+                //     event_data.event_item_active_event_data = active_event
+                //     // 事件
+                //     taskServce.DistributedEvent(event_data)
+                //     console.log("event_data--",event_data)
+                // }
             break;
             // case config.event_type.start_event:
 
@@ -230,7 +232,15 @@ export class taskServce {
             break;
             case config.event_type.switch_scene_event:
             break;
-
+            case config.event_type.more_scene_is_show_arrow_event:
+                ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,-11,event)
+            break;
+            case config.event_type.more_scene_jump_assigned_page_event:
+                ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,-11,event)
+            break;
+            case config.event_type.event_group:
+                ClientEvent.dispatchEvent(config.EventRun.NOTICE_EVENT,-11,event)
+            break;
         }
         taskServce.exeNextDelayEvent(event)
     }
@@ -473,11 +483,11 @@ export class taskServce {
         }
     }
 
-    public static exeSwitchSceneNextevent(trigger_event_id: number) {
+    public static exeSuccessTriggerEvent(trigger_event_id: number) {
         if(trigger_event_id == -1) {
             return
         }
-        let event = taskServce.getEventById(trigger_event_id)
+        let event = this.getEventById(trigger_event_id)
         if(event == null) {
             return
         }

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

@@ -1,6 +1,6 @@
 import { _decorator, AudioClip, AudioSource, Component, Node, Size, Sprite, SpriteFrame, sys, UITransform, Vec3 } from 'cc';
 import { game_run } from './game_run';
-import { attributes_data, LevelItemData, other_widget_finish_listen_item, scene_item_data, sysMessage, task_data, ui_att_item, UserData, UserUnlockLevesData, widget_item_data } from '../../data/data';
+import { attributes_data, event_item, LevelItemData, other_widget_finish_listen_item, scene_item_data, sysMessage, task_data, ui_att_item, UserData, UserUnlockLevesData, widget_item_data } from '../../data/data';
 import { config } from '../config';
 import { sceneManager } from './sceneManager';
 
@@ -355,7 +355,6 @@ export class gameManager extends Component {
         ClientEvent.offAll(config.EventRun.ON_COUNT_DOWN_START)
         ClientEvent.offAll(config.EventRun.ON_SHOW_RULE_BTN)
         ClientEvent.offAll(config.EventRun.ON_BOSS_HURT)
-        ClientEvent.offAll(config.EventRun.MORE_SCENE_DIRECTION_BUTTON_CLICK_FINISH)
 
         ClientEvent.on(config.EventRun.WIDGET_FINISH,this.onWidgetFinishEvent.bind(this),this)
         ClientEvent.on(config.EventRun.WIDGET_FAIL,this.onWidgetFailEvent.bind(this),this)
@@ -364,7 +363,6 @@ export class gameManager extends Component {
         ClientEvent.on(config.EventRun.TOP_VIEW_FAIL,this.onUiFailEvent.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)
-        ClientEvent.on(config.EventRun.MORE_SCENE_DIRECTION_BUTTON_CLICK_FINISH,this.onMoreSceneDirectionButtonClickEvent.bind(this),this)
     }
 
     public initGR(gr:game_run){
@@ -401,7 +399,7 @@ export class gameManager extends Component {
          this.startLevelGame()
     }
 
-    public onLaunch(call){
+    public onLaunch(call,delay=0.7){
         this.mGameRun.onlaunch(call)
     }
 
@@ -608,8 +606,12 @@ export class gameManager extends Component {
         taskServce.extEventByEventId(event_id)
     }
 
-    onMoreSceneDirectionButtonClickEvent(trigger_event_id:number){
-        taskServce.exeSwitchSceneNextevent(trigger_event_id)
+    exeSuccessTriggerEvent(trigger_event_id:number) {
+        taskServce.exeSuccessTriggerEvent(trigger_event_id)
+    }
+
+    exeNextDelayEvent(event_item:event_item) {
+        taskServce.exeNextDelayEvent(event_item)
     }
 
     showFindRuleTips(){

+ 2 - 2
assets/script/run/game_run.ts

@@ -193,12 +193,12 @@ export class game_run extends Component {
         
     }
 
-    public onlaunch(call){
+    public onlaunch(call,delay:number=0.7){
         this.launch.active = true;
         call()
         this.scheduleOnce(()=>{
             this.launch.active = false;
-        },0.7)
+        },delay)
     }
     public isCurScenePageCheckWidgetFinish(widget_id:number):boolean{
         return this.scene_layer.getComponent(scene_layer).isCurScenePageCheckWidgetFinish(widget_id)

+ 72 - 9
assets/script/run/scene_layer.ts

@@ -1,11 +1,10 @@
 import { _decorator, AudioSource, Component, instantiate, Node, Prefab, Widget } from 'cc';
-import { event_item, event_item_switch_scene_event, scene_item_data, task_data } from '../../data/data';
+import { event_group_event_item, event_group_event_item_event_item, event_item, event_item_switch_scene_event, scene_item_data, task_data } from '../../data/data';
 import { scene_page } from './scene_page';
 import { scene_page_dir } from './scene_page_dir';
 import { ClientEvent } from '../clientEvent';
 import { config } from '../config';
 import { gameManager } from './gameManager';
-import { taskServce } from './TaskSchedule/taskServce';
 const { ccclass, property } = _decorator;
 
 class EventTarget{
@@ -25,6 +24,7 @@ export class scene_layer extends Component {
     private mAudioList:Map<string,Node> = new Map;
     private up_id_string = '_up'
     private next_id_string = '_next'
+    private is_show_cur_directionBtn:boolean = true; //是否显示当前方向按钮,默认显示
     protected start(): void {
         this.node.addComponent(AudioSource)
     }
@@ -32,19 +32,25 @@ export class scene_layer extends Component {
         this.mSceneTask = data
         this.getTaskSwitchSceneEventList()
     }
+    
     public initScene(pages:scene_item_data[],type:number){
         ClientEvent.on(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
         this.mScenePages = pages;
         this.initSceneDir(type)
         this.loadAllPage()
+        this.changeHideAllDirectionBtn()
     }
 
     public unInit(){
         this.content.destroyAllChildren()
         this.content.removeAllChildren()
+        this.mSceneTask = null
+        this.mTaskEventItemList.clear()
         this.mScenePages = []
-        this.mCurPage = 0;
+        this.mCurPage = 0
         this.mAudioList.clear()
+        this.unscheduleAllCallbacks()
+        this.is_show_cur_directionBtn = true
         ClientEvent.off(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
     }
 
@@ -80,6 +86,34 @@ export class scene_layer extends Component {
             if(event.event_item_stop_play_loop_sound_data!=null){
                 this.deleteAudioItem(event.event_item_stop_play_loop_sound_data.res)
             }
+        }else if(event.type===config.event_type.more_scene_is_show_arrow_event) {
+            let data = event.event_item_more_scene_is_show_arrow_event_data
+            if(data!=null) {
+                this.is_show_cur_directionBtn = data.is_show
+                if(data.is_show) {
+                    this.changeUpNextDirectionBtn()
+                } else {
+                    this.changeHideAllDirectionBtn()
+                }
+                gameManager.Singleton.exeNextDelayEvent(event)
+            }
+        }else if(event.type===config.event_type.more_scene_jump_assigned_page_event){
+            let data = event.event_item_more_scene_jump_assigned_page_event_data
+            if(data!=null) {
+                let page_index = data.page_number-1
+                if(page_index>-1 && page_index<this.mScenePages.length) {
+                    let interval_time = data.interval_time
+                    gameManager.Singleton.onLaunch(()=>{
+                        this.changePage(page_index)
+                        gameManager.Singleton.exeNextDelayEvent(event)
+                    },interval_time)
+                }
+            }
+        } else if(event.type===config.event_type.event_group) {
+            let data = event.event_item_event_group_data
+            if(data!=null&&data.list.length>0) {
+                this.executeEventGroup(event, data)
+            }
         }
     }
 
@@ -110,10 +144,17 @@ export class scene_layer extends Component {
     changePage(page:number){
         this.mCurPage = page;
         this.onChangeUpdatePages()
-        this.changeUpNextBtn()
+        this.changeUpNextDirectionBtn()
     }
 
-    changeUpNextBtn() {
+    changeHideAllDirectionBtn(){
+        this.scenePageDir.getComponent(scene_page_dir).hideAllBtn()
+    }
+
+    changeUpNextDirectionBtn() {
+        if(this.is_show_cur_directionBtn==false) {
+            return
+        }
         if(this.mScenePages.length>1){
             this.scenePageDir.getComponent(scene_page_dir).showAllBtn()
             if(this.mCurPage<=0){
@@ -129,7 +170,7 @@ export class scene_layer extends Component {
         for (let index = 0; index < this.content.children.length; index++) {
             const page = this.content.children[index];
             if(page.getComponent(AudioSource)!=null){
-                
+
             }else{
                 page.active = (this.mCurPage == index)
             }
@@ -219,17 +260,17 @@ export class scene_layer extends Component {
         }
         // 延迟时间
         let call = (()=> {
-            ClientEvent.dispatchEvent(config.EventRun.MORE_SCENE_DIRECTION_BUTTON_CLICK_FINISH, trigger_event_id)
+            gameManager.Singleton.exeSuccessTriggerEvent(trigger_event_id)
         })
         if(switch_scene_event_data.delay_time > 0) {
-            this.scenePageDir.getComponent(scene_page_dir).hideAllBtn()
+            this.changeHideAllDirectionBtn()
             let delay_time = switch_scene_event_data.delay_time
             this.scheduleOnce(()=> {
                 if(event_item.event_item_switch_scene_event_data.executeOnlyOnce) {
                     eventTarget.is_finish = true
                 }
                 call()
-                this.changeUpNextBtn()
+                this.changeUpNextDirectionBtn()
             },delay_time)
         } else {
             call()
@@ -268,6 +309,28 @@ export class scene_layer extends Component {
         }
        
     }
+
+    executeEventGroup(event:event_item, data:event_group_event_item) {
+        var c_index = 0
+        let c_item_data = data.list[c_index]
+        let call_back = (()=>{
+            c_index++
+            if(c_index >= data.list.length) {
+                gameManager.Singleton.exeSuccessTriggerEvent(event.success.trigger_event_id)
+                return
+            }
+            c_item_data = data.list[c_index]
+            this.runEventGrop(c_item_data, call_back)
+        })
+        this.runEventGrop(c_item_data,call_back)
+    }
+
+    runEventGrop(item_data: event_group_event_item_event_item, callback){
+        this.scheduleOnce(()=>{
+            gameManager.Singleton.exeEvent(item_data.event_item.event_id)
+            callback()
+        },item_data.delay_time)
+    }
 }