|
@@ -1,23 +1,37 @@
|
|
import { _decorator, AudioSource, Component, instantiate, Node, Prefab, Widget } from 'cc';
|
|
import { _decorator, AudioSource, Component, instantiate, Node, Prefab, Widget } from 'cc';
|
|
-import { event_item, scene_item_data } from '../../data/data';
|
|
|
|
|
|
+import { event_item, event_item_switch_scene_event, scene_item_data, task_data } from '../../data/data';
|
|
import { scene_page } from './scene_page';
|
|
import { scene_page } from './scene_page';
|
|
import { scene_page_dir } from './scene_page_dir';
|
|
import { scene_page_dir } from './scene_page_dir';
|
|
import { ClientEvent } from '../clientEvent';
|
|
import { ClientEvent } from '../clientEvent';
|
|
import { config } from '../config';
|
|
import { config } from '../config';
|
|
import { gameManager } from './gameManager';
|
|
import { gameManager } from './gameManager';
|
|
|
|
+import { taskServce } from './TaskSchedule/taskServce';
|
|
const { ccclass, property } = _decorator;
|
|
const { ccclass, property } = _decorator;
|
|
|
|
|
|
|
|
+class EventTarget{
|
|
|
|
+ event_item: event_item;
|
|
|
|
+ is_finish:boolean;
|
|
|
|
+}
|
|
|
|
+
|
|
@ccclass('scene_layer')
|
|
@ccclass('scene_layer')
|
|
export class scene_layer extends Component {
|
|
export class scene_layer extends Component {
|
|
@property(Node) content:Node = null;
|
|
@property(Node) content:Node = null;
|
|
@property(Prefab) scenePagePrefab:Prefab = null;
|
|
@property(Prefab) scenePagePrefab:Prefab = null;
|
|
@property(Node) scenePageDir:Node = null;
|
|
@property(Node) scenePageDir:Node = null;
|
|
|
|
+ protected mSceneTask:task_data = null;
|
|
|
|
+ private mTaskEventItemList:Map<string,EventTarget> = new Map;
|
|
protected mScenePages:scene_item_data[] =[]
|
|
protected mScenePages:scene_item_data[] =[]
|
|
private mCurPage:number = 0;
|
|
private mCurPage:number = 0;
|
|
private mAudioList:Map<string,Node> = new Map;
|
|
private mAudioList:Map<string,Node> = new Map;
|
|
|
|
+ private up_id_string = '_up'
|
|
|
|
+ private next_id_string = '_next'
|
|
protected start(): void {
|
|
protected start(): void {
|
|
this.node.addComponent(AudioSource)
|
|
this.node.addComponent(AudioSource)
|
|
}
|
|
}
|
|
|
|
+ public initSceneTask(data:task_data) {
|
|
|
|
+ this.mSceneTask = data
|
|
|
|
+ this.getTaskSwitchSceneEventList()
|
|
|
|
+ }
|
|
public initScene(pages:scene_item_data[],type:number){
|
|
public initScene(pages:scene_item_data[],type:number){
|
|
ClientEvent.on(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
|
|
ClientEvent.on(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
|
|
this.mScenePages = pages;
|
|
this.mScenePages = pages;
|
|
@@ -96,6 +110,10 @@ export class scene_layer extends Component {
|
|
changePage(page:number){
|
|
changePage(page:number){
|
|
this.mCurPage = page;
|
|
this.mCurPage = page;
|
|
this.onChangeUpdatePages()
|
|
this.onChangeUpdatePages()
|
|
|
|
+ this.changeUpNextBtn()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ changeUpNextBtn() {
|
|
if(this.mScenePages.length>1){
|
|
if(this.mScenePages.length>1){
|
|
this.scenePageDir.getComponent(scene_page_dir).showAllBtn()
|
|
this.scenePageDir.getComponent(scene_page_dir).showAllBtn()
|
|
if(this.mCurPage<=0){
|
|
if(this.mCurPage<=0){
|
|
@@ -105,7 +123,6 @@ export class scene_layer extends Component {
|
|
this.scenePageDir.getComponent(scene_page_dir).hideNextBtn()
|
|
this.scenePageDir.getComponent(scene_page_dir).hideNextBtn()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
onChangeUpdatePages(){
|
|
onChangeUpdatePages(){
|
|
@@ -163,6 +180,86 @@ export class scene_layer extends Component {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ onClickCurPageDirectionButton(isUp:boolean) {
|
|
|
|
+ if(this.mSceneTask == null) {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ let event_id = -1
|
|
|
|
+ var key = this.mCurPage + ''
|
|
|
|
+ if(isUp) {
|
|
|
|
+ key = key + this.up_id_string
|
|
|
|
+ } else {
|
|
|
|
+ key = key + this.next_id_string
|
|
|
|
+ }
|
|
|
|
+ let eventTarget:EventTarget = this.mTaskEventItemList.get(key)
|
|
|
|
+ if(eventTarget != null && eventTarget.is_finish == false) {
|
|
|
|
+ event_id = eventTarget.event_item.event_id
|
|
|
|
+ }
|
|
|
|
+ // console.log('event_id=',event_id)
|
|
|
|
+ if(event_id != -1) {
|
|
|
|
+ this.scheduleOnce(()=>{ // 切换场景有延时0.7
|
|
|
|
+ this.checkDelayTimeNextEvent(event_id, eventTarget)
|
|
|
|
+ },0.7)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ checkDelayTimeNextEvent(event_id:number, eventTarget:EventTarget) {
|
|
|
|
+ if(eventTarget == null) {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // 当前数据
|
|
|
|
+ let event_item:event_item = eventTarget.event_item
|
|
|
|
+ let switch_scene_event_data:event_item_switch_scene_event = event_item.event_item_switch_scene_event_data
|
|
|
|
+ // 下一个事件成功的id
|
|
|
|
+ var next_event_id = -1
|
|
|
|
+ let trigger_event_id = event_item.success.trigger_event_id
|
|
|
|
+ if(trigger_event_id != -1) {
|
|
|
|
+ let next_event = taskServce.getEventById(trigger_event_id)
|
|
|
|
+ next_event_id = next_event.event_id
|
|
|
|
+ }
|
|
|
|
+ // 延迟时间
|
|
|
|
+ let call = (()=> {
|
|
|
|
+ ClientEvent.dispatchEvent(config.EventRun.MORE_SCENE_DIRECTION_BUTTON_CLICK_FINISH, next_event_id)
|
|
|
|
+ })
|
|
|
|
+ if(switch_scene_event_data.delay_time > 0) {
|
|
|
|
+ this.scenePageDir.getComponent(scene_page_dir).hideAllBtn()
|
|
|
|
+ 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()
|
|
|
|
+ },delay_time)
|
|
|
|
+ } else {
|
|
|
|
+ call()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ getTaskSwitchSceneEventList() {
|
|
|
|
+ if(this.mSceneTask == null) {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ for(let i = 0; i < this.mSceneTask.event_list.length; i++) {
|
|
|
|
+ let element:event_item = this.mSceneTask.event_list[i]
|
|
|
|
+ let element_switch_scene_event_data:event_item_switch_scene_event = element.event_item_switch_scene_event_data
|
|
|
|
+ if(element.type == config.event_type.switch_scene_event && element_switch_scene_event_data != null) {
|
|
|
|
+ if(element_switch_scene_event_data.binding_page_index != -1 && element_switch_scene_event_data.direction != config.switch_scene_page_direction.unknown) {
|
|
|
|
+ var key = element_switch_scene_event_data.binding_page_index + ''
|
|
|
|
+ if(element_switch_scene_event_data.direction == config.switch_scene_page_direction.up || element_switch_scene_event_data.direction == config.switch_scene_page_direction.left) {
|
|
|
|
+ key = key + this.up_id_string
|
|
|
|
+ } else {
|
|
|
|
+ key = key + this.next_id_string
|
|
|
|
+ }
|
|
|
|
+ let eventTarget = new EventTarget()
|
|
|
|
+ eventTarget.event_item = element
|
|
|
|
+ eventTarget.is_finish = false
|
|
|
|
+ this.mTaskEventItemList.set(key, eventTarget)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
initSceneDir(type:number){
|
|
initSceneDir(type:number){
|
|
if(this.mScenePages.length>1){
|
|
if(this.mScenePages.length>1){
|
|
this.scenePageDir.getComponent(scene_page_dir).initView(type,this.onUp.bind(this),this.onNext.bind(this))
|
|
this.scenePageDir.getComponent(scene_page_dir).initView(type,this.onUp.bind(this),this.onNext.bind(this))
|