search_node.ts 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. import { _decorator, Color, Component, EventTouch, instantiate, Label, Node, Prefab, UITransform, Vec3 } from 'cc';
  2. import { Attributes } from '../Attributes';
  3. import { event_item, widget_item_data } from '../../../data/data';
  4. import { config } from '../../config';
  5. const { ccclass, property } = _decorator;
  6. @ccclass('search_node')
  7. export class search_node extends Component {
  8. @property(Node) btn_close:Node = null;
  9. @property(Node) content:Node = null;
  10. @property(Prefab) item_prefab:Prefab = null;
  11. @property(Node) scrollView:Node = null;
  12. private m_event_item: event_item;
  13. private m_id:number = 0;
  14. public show(eventItem: event_item){
  15. this.m_event_item = eventItem
  16. let search = eventItem.event_id.toString()
  17. this.node.active = true;
  18. this.btn_close.on(Node.EventType.TOUCH_END,()=>{
  19. this.close()
  20. })
  21. this.m_id = parseInt(search)
  22. this.content.removeAllChildren()
  23. let search_data = this.getCurSearchType()
  24. let item = instantiate(this.item_prefab)
  25. item.parent = this.content;
  26. item.getComponent(Label).color = Color.MAGENTA
  27. if(search_data==null){
  28. item.getComponent(Label).string = "当前搜索的id不存在"
  29. }else{
  30. if(search_data.type==0){
  31. item.getComponent(Label).string = `您查找的是控件.\n 控件id:${search_data.widget.att.id}.控件名称:${search_data.widget.name}`
  32. this.finAboutWidgetList(search_data.widget)
  33. }else{
  34. item.getComponent(Label).string = `您查找的是事件.\n 事件id:${search_data.event.event_id}.事件名称:${search_data.event.event_name}`
  35. this.finAboutEventList(search_data.event)
  36. }
  37. }
  38. this.scrollView.off(Node.EventType.TOUCH_MOVE)
  39. // this.scrollView.on(Node.EventType.TOUCH_MOVE,(et:EventTouch)=>{
  40. // let p = new Vec3(et.getUILocation().x,et.getUILocation().y)
  41. // let n_p = this.scrollView.parent.getComponent(UITransform).convertToNodeSpaceAR(p)
  42. // this.scrollView.position = n_p;
  43. // })
  44. if(search_data!=null) {
  45. this.showBinding(search_data)
  46. }
  47. this.showNextSuccessTrigger()
  48. }
  49. private showBinding(search_data) {
  50. let c_event_item:event_item = search_data.event
  51. if(c_event_item==null){
  52. return
  53. }
  54. let c_title = ""
  55. let c_text = ""
  56. switch (c_event_item.type) {
  57. case config.event_type.play_ani: //0播放动画
  58. c_title = '播放动画'
  59. c_text = `${c_event_item.event_item_play_ani_data.binding_widget_id}`
  60. break;
  61. case config.event_type.top_view: //1弹窗
  62. c_title = '弹窗'
  63. c_text = `${c_event_item.event_item_top_view_data.binding_ui_id}`
  64. break;
  65. case config.event_type.text_sound: //2出现文字及语音
  66. c_title = '出现文字及语音'
  67. c_text = `${c_event_item.event_item_text_sound_data.binding_widget_id}`
  68. break;
  69. case config.event_type.change_one_item_status: //3改变指定道具资源
  70. c_title = '改变指定道具资源'
  71. c_text = `${c_event_item.event_item_change_one_item_status_data.binding_widget_id}`
  72. break;
  73. case config.event_type.show_new_item://4出现新道具
  74. c_title = '出现新道具'
  75. c_text = `${c_event_item.event_item_show_new_item_data.binding_widget_id}`
  76. break;
  77. case config.event_type.show_question_select://5出现问题选择
  78. c_title = '出现问题选择'
  79. c_text = `${c_event_item.event_item_show_question_select_data.binding_widget_id}`
  80. break;
  81. case config.event_type.start_event://6开始事件
  82. c_title = '开始事件'
  83. c_text = `${c_event_item.event_item_start_event_data.binding_event_id}`
  84. break;
  85. case config.event_type.collect_event://7收集事件 多组件完成触发
  86. c_title = ''
  87. c_text = `收集事件 多组件完成触发`
  88. break;
  89. case config.event_type.active_event://8激活
  90. c_title = '激活'
  91. c_text = `${c_event_item.event_item_active_event_data.binding_widget_id}`
  92. break;
  93. case config.event_type.stop_active_event://9停用交互
  94. c_title = '停用交互'
  95. c_text = `${c_event_item.event_item_stop_active_event_data.binding_widget_id}`
  96. break;
  97. case config.event_type.countdown_over://10倒计时结束
  98. c_title = '倒计时结束'
  99. c_text = `${c_event_item.event_item_countdown_over_data.binding_widget_id}`
  100. break;
  101. case config.event_type.be_event: //11被动触发事件
  102. c_title = '被动触发事件'
  103. c_text = `${c_event_item.event_item_be_event_data.binding_widget_id}`
  104. break;
  105. case config.event_type.hide://12触发让控件隐藏
  106. c_title = '触发让控件隐藏'
  107. c_text = `${c_event_item.event_item_hide_data.binding_widget_id}`
  108. break;
  109. case config.event_type.delay_exe_event://13延迟多久执行一个事件
  110. c_title = '延迟多久执行一个事件'
  111. c_text = `${c_event_item.event_item_delay_exe_data.binding_event_id}`
  112. break;
  113. case config.event_type.fail_event://14失败
  114. c_title = ''
  115. c_text = `失败`
  116. break;
  117. case config.event_type.play_sound://15播放一个音效
  118. c_title = ''
  119. c_text = `播放一个音效`
  120. break;
  121. case config.event_type.show_scene_title://16显示场景的标签
  122. c_title = '标签内容'
  123. c_text = `${c_event_item.event_item_show_scene_title_data.title}`
  124. break;
  125. case config.event_type.scene_ani://17场景动画
  126. c_title = '场景动画'
  127. c_text = `${c_event_item.event_item_scene_ani.ani_id}`
  128. break;
  129. case config.event_type.delete_drag_other_data://18删除其他拖拽目标的属性
  130. c_title = '删除其他拖拽目标的属性'
  131. c_text = `${c_event_item.event_item_delete_drag_other_data.widget_id}`
  132. break;
  133. case config.event_type.stop_play_loop_sound://19停止一个音效
  134. c_title = '停止一个音效'
  135. c_text = `${c_event_item.event_item_stop_play_loop_sound_data.res}`
  136. break;
  137. case config.event_type.switch_scene_event://20切换场景
  138. c_title = '多场景-切换场景按钮'
  139. let direction = c_event_item.event_item_switch_scene_event_data.direction
  140. let direction_str = '按钮-无'
  141. if(direction == config.switch_scene_page_direction.up) {
  142. direction_str = '按钮-上'
  143. } else if(direction == config.switch_scene_page_direction.down) {
  144. direction_str = '按钮-下'
  145. } else if(direction == config.switch_scene_page_direction.left) {
  146. direction_str = '按钮-左'
  147. } else if(direction == config.switch_scene_page_direction.right) {
  148. direction_str = '按钮-右'
  149. }
  150. let executeOnlyOnce_string = c_event_item.event_item_switch_scene_event_data.executeOnlyOnce ? '是' : '否'
  151. c_text = `方向:${direction_str} 页数:${c_event_item.event_item_switch_scene_event_data.binding_page_index+1} 仅执行一次:${executeOnlyOnce_string}`
  152. break;
  153. case config.event_type.more_scene_is_show_arrow_event://21多场景-是否显示箭头
  154. c_title = '多场景-是否显示箭头'
  155. c_text = c_event_item.event_item_more_scene_is_show_arrow_event_data.is_show ? '是' : '否'
  156. break;
  157. case config.event_type.more_scene_jump_assigned_page_event://22多场景-跳转指定页数事件
  158. c_title = '多场景-跳转指定页数事件'
  159. c_text = `页数:${c_event_item.event_item_more_scene_jump_assigned_page_event_data.page_number}`
  160. break;
  161. case config.event_type.event_group://100事件组
  162. c_title = '事件组'
  163. c_text = `~~~~~~~`
  164. break
  165. }
  166. if(c_text!="") {
  167. let item = instantiate(this.item_prefab)
  168. item.parent = this.content;
  169. item.getComponent(Label).color = Color.BLACK
  170. item.getComponent(Label).string = "\n当前绑定-> " + c_title + ": " + c_text
  171. }
  172. }
  173. private showNextSuccessTrigger() {
  174. let text = ''
  175. if(this.m_event_item.success.trigger_event_id==-1) {
  176. text = "\n暂未设置触发下个事件的id"
  177. } else {
  178. text = `\n触发下个事件的id${this.m_event_item.success.trigger_event_id}`
  179. }
  180. let item = instantiate(this.item_prefab)
  181. item.parent = this.content;
  182. item.getComponent(Label).color = Color.RED
  183. item.getComponent(Label).string = text
  184. // let event_list = Attributes.Singleton.getEventList()
  185. // for (let index = 0; index < event_list.length; index++) {
  186. // const element = event_list[index];
  187. // if(element.event_id == this.m_event_item.success.trigger_event_id) {
  188. // console.log('type=',element.type)
  189. // break
  190. // }
  191. // }
  192. }
  193. finAboutWidgetList(widget:widget_item_data){
  194. let widget_id = widget.att.id;
  195. let drag_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.DRAG_TYPE)
  196. for (let index = 0; index < drag_list.length; index++) {
  197. const drag_item = drag_list[index];
  198. if(drag_item.att.drag_data.other_widget_finish_listen_list!=undefined){
  199. for (let index = 0; index < drag_item.att.drag_data.other_widget_finish_listen_list.length; index++) {
  200. const element = drag_item.att.drag_data.other_widget_finish_listen_list[index];
  201. if(element.widget_id===widget_id){
  202. let item = instantiate(this.item_prefab)
  203. item.parent = this.content;
  204. item.getComponent(Label).color = Color.GREEN
  205. item.getComponent(Label).string = `被拖拽控件id:${drag_item.att.id}监听`
  206. }
  207. }
  208. }
  209. }
  210. let click_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.CLICK_TYPE)
  211. for (let index = 0; index < click_list.length; index++) {
  212. const drag_item = click_list[index];
  213. if(drag_item.att.click_data.other_widget_finish_listen_list!=undefined){
  214. for (let index = 0; index < drag_item.att.click_data.other_widget_finish_listen_list.length; index++) {
  215. const element = drag_item.att.click_data.other_widget_finish_listen_list[index];
  216. if(element.widget_id===widget_id){
  217. let item = instantiate(this.item_prefab)
  218. item.parent = this.content;
  219. item.getComponent(Label).color = Color.GREEN
  220. item.getComponent(Label).string = `被点击控件id:${drag_item.att.id}监听`
  221. }
  222. }
  223. }
  224. }
  225. let slide_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.SLIDE_TYPE)
  226. for (let index = 0; index < slide_list.length; index++) {
  227. const drag_item = slide_list[index];
  228. if(drag_item.att.slide_data.other_widget_finish_listen_list!=undefined){
  229. for (let index = 0; index < drag_item.att.slide_data.other_widget_finish_listen_list.length; index++) {
  230. const element = drag_item.att.slide_data.other_widget_finish_listen_list[index];
  231. if(element.widget_id===widget_id){
  232. let item = instantiate(this.item_prefab)
  233. item.parent = this.content;
  234. item.getComponent(Label).color = Color.GREEN
  235. item.getComponent(Label).string = `被滑动控件id:${drag_item.att.id}监听`
  236. }
  237. }
  238. }
  239. }
  240. let event_list = Attributes.Singleton.getEventList()
  241. for (let index = 0; index < event_list.length; index++) {
  242. const event = event_list[index];
  243. switch (event.type) {
  244. case config.event_type.play_ani:
  245. if(event.event_item_play_ani_data.binding_widget_id==widget_id){
  246. let item = instantiate(this.item_prefab)
  247. item.parent = this.content;
  248. item.getComponent(Label).color = Color.BLUE
  249. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  250. }
  251. break;
  252. case config.event_type.top_view:
  253. if(event.event_item_top_view_data.binding_ui_id===widget_id){
  254. let item = instantiate(this.item_prefab)
  255. item.parent = this.content;
  256. item.getComponent(Label).color = Color.BLUE
  257. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  258. }
  259. break;
  260. case config.event_type.text_sound:
  261. if(event.event_item_text_sound_data.binding_widget_id===widget_id){
  262. let item = instantiate(this.item_prefab)
  263. item.parent = this.content;
  264. item.getComponent(Label).color = Color.BLUE
  265. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  266. }
  267. break;
  268. case config.event_type.change_one_item_status:
  269. if(event.event_item_change_one_item_status_data.binding_widget_id===widget_id){
  270. let item = instantiate(this.item_prefab)
  271. item.parent = this.content;
  272. item.getComponent(Label).color = Color.BLUE
  273. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  274. }
  275. break;
  276. case config.event_type.show_new_item:
  277. if(event.event_item_show_new_item_data.binding_widget_id===widget_id){
  278. let item = instantiate(this.item_prefab)
  279. item.parent = this.content;
  280. item.getComponent(Label).color = Color.BLUE
  281. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  282. }
  283. break;
  284. case config.event_type.show_question_select:
  285. if(event.event_item_show_question_select_data.binding_widget_id===widget_id){
  286. let item = instantiate(this.item_prefab)
  287. item.parent = this.content;
  288. item.getComponent(Label).color = Color.BLUE
  289. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  290. }
  291. break;
  292. case config.event_type.active_event:
  293. if(event.event_item_active_event_data.binding_widget_id===widget_id){
  294. let item = instantiate(this.item_prefab)
  295. item.parent = this.content;
  296. item.getComponent(Label).color = Color.BLUE
  297. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  298. }
  299. break;
  300. case config.event_type.stop_active_event:
  301. if(event.event_item_stop_active_event_data.binding_widget_id===widget_id){
  302. let item = instantiate(this.item_prefab)
  303. item.parent = this.content;
  304. item.getComponent(Label).color = Color.BLUE
  305. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  306. }
  307. break;
  308. case config.event_type.countdown_over:
  309. if(event.event_item_countdown_over_data.binding_widget_id===widget_id){
  310. let item = instantiate(this.item_prefab)
  311. item.parent = this.content;
  312. item.getComponent(Label).color = Color.BLUE
  313. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  314. }
  315. break;
  316. case config.event_type.be_event:
  317. if(event.event_item_be_event_data.binding_widget_id===widget_id){
  318. let item = instantiate(this.item_prefab)
  319. item.parent = this.content;
  320. item.getComponent(Label).color = Color.BLUE
  321. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  322. }
  323. break;
  324. case config.event_type.hide:
  325. if(event.event_item_hide_data.binding_widget_id===widget_id){
  326. let item = instantiate(this.item_prefab)
  327. item.parent = this.content;
  328. item.getComponent(Label).color = Color.BLUE
  329. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  330. }
  331. break;
  332. case config.event_type.delete_drag_other_data:
  333. if(event.event_item_delete_drag_other_data.widget_id===widget_id){
  334. let item = instantiate(this.item_prefab)
  335. item.parent = this.content;
  336. item.getComponent(Label).color = Color.BLUE
  337. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  338. }
  339. break;
  340. }
  341. }
  342. }
  343. finAboutEventList(event:event_item){
  344. let event_id = event.event_id;
  345. let event_list = Attributes.Singleton.getEventList()
  346. for (let index = 0; index < event_list.length; index++) {
  347. const event = event_list[index];
  348. if(event.success.trigger_event_id==event_id){
  349. let item = instantiate(this.item_prefab)
  350. item.parent = this.content;
  351. item.getComponent(Label).color = Color.BLUE
  352. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  353. }
  354. switch (event.type) {
  355. case config.event_type.show_question_select:
  356. let question_list = event.event_item_show_question_select_data.question_list;
  357. for (let index = 0; index < question_list.length; index++) {
  358. const i = question_list[index];
  359. if(i.binding_event_id===event_id){
  360. let item = instantiate(this.item_prefab)
  361. item.parent = this.content;
  362. item.getComponent(Label).color = Color.BLUE
  363. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  364. }
  365. }
  366. break;
  367. case config.event_type.start_event:
  368. if(event_id ===event.event_item_start_event_data.binding_event_id){
  369. let item = instantiate(this.item_prefab)
  370. item.parent = this.content;
  371. item.getComponent(Label).color = Color.BLUE
  372. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  373. }
  374. break;
  375. case config.event_type.collect_event:
  376. let event_id_list = event.event_item_collect_event_data.event_id_list
  377. for (let index = 0; index < event_id_list.length; index++) {
  378. const element = event_id_list[index];
  379. if(element===event_id){
  380. let item = instantiate(this.item_prefab)
  381. item.parent = this.content;
  382. item.getComponent(Label).color = Color.BLUE
  383. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  384. }
  385. }
  386. break;
  387. case config.event_type.delay_exe_event:
  388. if(event.event_item_delay_exe_data.binding_event_id==event_id){
  389. let item = instantiate(this.item_prefab)
  390. item.parent = this.content;
  391. item.getComponent(Label).color = Color.BLUE
  392. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  393. }
  394. break;
  395. }
  396. }
  397. let drag_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.DRAG_TYPE)
  398. for (let index = 0; index < drag_list.length; index++) {
  399. const drag_item = drag_list[index];
  400. if(drag_item.att.drag_data.other_widget_finish_listen_list!=undefined){
  401. for (let index = 0; index < drag_item.att.drag_data.other_widget_finish_listen_list.length; index++) {
  402. const element = drag_item.att.drag_data.other_widget_finish_listen_list[index];
  403. if(element.event_id===event_id){
  404. let item = instantiate(this.item_prefab)
  405. item.parent = this.content;
  406. item.getComponent(Label).color = Color.GREEN
  407. item.getComponent(Label).string = `被拖拽控件id:${drag_item.att.id}调用`
  408. }
  409. }
  410. }
  411. }
  412. let top_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.UI_TOP)
  413. for (let index = 0; index < top_list.length; index++) {
  414. const top_item = top_list[index];
  415. if(top_item.att.top_data.close_event_id===event_id){
  416. let item = instantiate(this.item_prefab)
  417. item.parent = this.content;
  418. item.getComponent(Label).color = Color.GREEN
  419. item.getComponent(Label).string = `被弹窗件id:${top_item.att.id}调用`
  420. }
  421. if(top_item.att.top_data.finish_event_id===event_id){
  422. let item = instantiate(this.item_prefab)
  423. item.parent = this.content;
  424. item.getComponent(Label).color = Color.GREEN
  425. item.getComponent(Label).string = `被弹窗件id:${top_item.att.id}调用`
  426. }
  427. if(top_item.att.top_data.fail_event_id===event_id){
  428. let item = instantiate(this.item_prefab)
  429. item.parent = this.content;
  430. item.getComponent(Label).color = Color.GREEN
  431. item.getComponent(Label).string = `被弹窗件id:${top_item.att.id}调用`
  432. }
  433. }
  434. }
  435. public getCurSearchType(id:number=this.m_id){
  436. let widget_list = Attributes.Singleton.get_cur_scene_all_widget()
  437. let widget:widget_item_data = null;
  438. for (let index = 0; index < widget_list.length; index++) {
  439. const element = widget_list[index];
  440. if(id==element.att.id){
  441. widget = element;
  442. break;
  443. }
  444. }
  445. let event:event_item = null;
  446. if(widget==null){
  447. let event_list = Attributes.Singleton.getEventList()
  448. for (let index = 0; index < event_list.length; index++) {
  449. const element = event_list[index];
  450. if(id==element.event_id){
  451. event = element;
  452. break;
  453. }
  454. }
  455. if(event!=null){
  456. return {"event":event,"type":1}
  457. }
  458. }else{
  459. return {"widget":widget,"type":0}
  460. }
  461. return null;
  462. }
  463. public close(){
  464. this.node.active = false;
  465. }
  466. }