top_layer.ts 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import { _decorator, Component, instantiate, Node, Prefab, Vec3 } from 'cc';
  2. import { att_question_select, event_item, event_item_show_question_select, event_item_show_question_select_item, ui_att_item, widget_item_data } from '../../data/data';
  3. import { ClientEvent } from '../clientEvent';
  4. import { config } from '../config';
  5. import { fail_ani } from './ui/fail_ani';
  6. import { tools } from '../tools';
  7. import { sound_text_content } from './ui/sound_text_content';
  8. import { gameManager } from './gameManager';
  9. import { question_select } from './ui/question_select';
  10. import { rule_view } from './tips/rule_view';
  11. import { tips_view } from './tips/tips_view';
  12. import { fail } from './ui/fail';
  13. import { win } from './ui/win';
  14. const { ccclass, property } = _decorator;
  15. @ccclass('top_layer')
  16. export class top_layer extends Component {
  17. @property(Node) fail_ani_view:Node = null;
  18. @property(Node) sound_text_content:Node = null;
  19. @property(Prefab) question_select_prefab:Prefab = null;
  20. @property(Node) question_content:Node = null;
  21. @property(Node) rule_view:Node = null;
  22. @property(Node) tips_view:Node = null;
  23. @property(Node) win:Node = null;
  24. @property(Node) fail:Node = null;
  25. private mTextSoundList:Map<number,widget_item_data> = new Map;
  26. private mQuestionList:Map<number,widget_item_data> = new Map;
  27. private mQuestionSelect:question_select = null;
  28. public initTop(){
  29. ClientEvent.off(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
  30. ClientEvent.off(config.EventRun.ON_WIN,this.onWin.bind(this),this)
  31. ClientEvent.off(config.EventRun.SHOW_TIPS,this.onShowWidgetTip.bind(this),this)
  32. ClientEvent.on(config.EventRun.SHOW_TIPS,this.onShowWidgetTip.bind(this),this)
  33. ClientEvent.on(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
  34. ClientEvent.on(config.EventRun.ON_WIN,this.onWin.bind(this),this)
  35. }
  36. public unInit(){
  37. this.sound_text_content.active = false;
  38. this.fail_ani_view.active = false;
  39. this.question_content.removeAllChildren()
  40. this.rule_view.active = false;
  41. this.tips_view.active = false;
  42. this.win.active = false;
  43. this.fail.active = false;
  44. this.mQuestionSelect = null;
  45. this.mTextSoundList.clear()
  46. this.mQuestionList.clear()
  47. ClientEvent.off(config.EventRun.NOTICE_EVENT,this.beActive.bind(this),this)
  48. ClientEvent.off(config.EventRun.ON_WIN,this.onWin.bind(this),this)
  49. ClientEvent.off(config.EventRun.SHOW_TIPS,this.onShowWidgetTip.bind(this),this)
  50. }
  51. initQuestionList(list:widget_item_data[]){
  52. // this.mQuestionList.clear()
  53. for (let index = 0; index < list.length; index++) {
  54. const widget = list[index];
  55. this.mQuestionList.set(widget.att.id,widget);
  56. }
  57. }
  58. initTextSoundLlist(list:widget_item_data[]){
  59. // this.mTextSoundList.clear()
  60. for (let index = 0; index < list.length; index++) {
  61. const widget = list[index];
  62. this.mTextSoundList.set(widget.att.id,widget);
  63. }
  64. }
  65. beActive(widgetId:number,event:event_item){
  66. if(event.type===config.event_type.text_sound){
  67. let widget = this.mTextSoundList.get(widgetId);
  68. if(widget){
  69. this.sound_text_content.active = true;
  70. this.sound_text_content.getComponent(sound_text_content).show(widgetId,widget.att.text_sound_data,gameManager.getCacheSoundByName(widget.att.text_sound_data.sound_data.url))
  71. }else{
  72. tools.showToast("配置音效和文字错误!")
  73. }
  74. }else if(event.type===config.event_type.show_question_select){
  75. let question = this.mQuestionList.get(widgetId)
  76. if(question){
  77. if(this.mQuestionSelect==null){
  78. this.addQuestionSelect(question,event.event_item_show_question_select_data)
  79. }
  80. }
  81. }else if(event.type===config.event_type.hide){
  82. let question = this.mQuestionList.get(widgetId)
  83. if(question){
  84. if(this.mQuestionSelect!=null){
  85. this.mQuestionSelect.node.removeFromParent()
  86. this.mQuestionSelect = null;
  87. }
  88. }
  89. }else if(event.type===config.event_type.fail_event){
  90. this.fail_ani_view.getComponent(fail_ani).Play()
  91. this.scheduleOnce(()=>{
  92. this.fail.getComponent(fail).show(event.event_item_fail_event_data.is_relife,this.onClickReLife.bind(this),this.onClickReStart.bind(this))
  93. },1.5)
  94. }
  95. }
  96. onWin(){
  97. this.win.getComponent(win).show(this.onClickShare.bind(this),this.onClickNext.bind(this))
  98. }
  99. onClickShare(){
  100. }
  101. onClickNext(){
  102. }
  103. onClickReLife(){
  104. gameManager.Singleton.reLife()
  105. }
  106. onClickReStart(){
  107. this.fail.active = false
  108. gameManager.Singleton.reStartGame()
  109. }
  110. addQuestionSelect(data:widget_item_data,event_data:event_item_show_question_select){
  111. let item = instantiate(this.question_select_prefab)
  112. item.parent = this.question_content;
  113. item.position = new Vec3(data.att.x,data.att.y)
  114. this.mQuestionSelect = item.getComponent(question_select)
  115. this.mQuestionSelect.initView(data.att.question_select,event_data,this.onQuestionItemSelect.bind(this))
  116. }
  117. onQuestionItemSelect(data:event_item_show_question_select_item){
  118. this.mQuestionSelect.node.removeFromParent()
  119. this.mQuestionSelect = null;
  120. if(data.binding_event_id!=-1){
  121. gameManager.Singleton.exeEvent(data.binding_event_id)
  122. }
  123. }
  124. showTips(){
  125. this.tips_view.getComponent(tips_view).show()
  126. }
  127. showRule(){
  128. this.rule_view.getComponent(rule_view).show()
  129. }
  130. onShowWidgetTip(res){
  131. let item = new ui_att_item;
  132. item.res = res;
  133. this.tips_view.getComponent(tips_view).showFindRuleTips(item)
  134. }
  135. showFindRuleTips(){
  136. let scene_data = gameManager.Singleton.getSceneManager().getSceneData()
  137. this.tips_view.getComponent(tips_view).showFindRuleTips(scene_data.att.scene_rule_tips_data.rule_find_tips)
  138. }
  139. initRuleAndTips(){
  140. let scene_data = gameManager.Singleton.getSceneManager().getSceneData()
  141. if(scene_data.att.scene_rule_tips_data==undefined||scene_data.att.scene_rule_tips_data==null){
  142. return tools.showToast("没有配置提示资源!")
  143. }else{
  144. this.tips_view.getComponent(tips_view).initView(scene_data.att.scene_rule_tips_data.tips_data)
  145. }
  146. if(scene_data.att.scene_rule_tips_data.rule_list.length<=0){
  147. }else{
  148. this.rule_view.getComponent(rule_view).initView(scene_data.att.scene_rule_tips_data.rule_list)
  149. }
  150. }
  151. }