search_node.ts 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  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 = search_data.event
  51. let c_title = ""
  52. let c_text = ""
  53. if(c_event_item!=null) {
  54. switch (c_event_item.type) {
  55. case config.event_type.play_ani: //0播放动画
  56. c_title = '播放动画'
  57. c_text = `${c_event_item.event_item_play_ani_data.binding_widget_id}`
  58. break;
  59. case config.event_type.top_view: //1弹窗
  60. c_title = '弹窗'
  61. c_text = `${c_event_item.event_item_top_view_data.binding_ui_id}`
  62. break;
  63. case config.event_type.text_sound: //2出现文字及语音
  64. c_title = '出现文字及语音'
  65. c_text = `${c_event_item.event_item_text_sound_data.binding_widget_id}`
  66. break;
  67. case config.event_type.change_one_item_status: //3改变指定道具资源
  68. c_title = '改变指定道具资源'
  69. c_text = `${c_event_item.event_item_change_one_item_status_data.binding_widget_id}`
  70. break;
  71. case config.event_type.show_new_item://4出现新道具
  72. c_title = '出现新道具'
  73. c_text = `${c_event_item.event_item_show_new_item_data.binding_widget_id}`
  74. break;
  75. case config.event_type.show_question_select://5出现问题选择
  76. c_title = '出现问题选择'
  77. c_text = `${c_event_item.event_item_show_question_select_data.binding_widget_id}`
  78. break;
  79. case config.event_type.start_event://6开始事件
  80. c_title = '开始事件'
  81. c_text = `${c_event_item.event_item_start_event_data.binding_event_id}`
  82. break;
  83. case config.event_type.collect_event://7收集事件 多组件完成触发
  84. c_title = ''
  85. c_text = `收集事件 多组件完成触发`
  86. break;
  87. case config.event_type.active_event://8激活
  88. c_title = '激活'
  89. c_text = `${c_event_item.event_item_active_event_data.binding_widget_id}`
  90. break;
  91. case config.event_type.stop_active_event://9停用交互
  92. c_title = '停用交互'
  93. c_text = `${c_event_item.event_item_stop_active_event_data.binding_widget_id}`
  94. break;
  95. case config.event_type.countdown_over://10倒计时结束
  96. c_title = '倒计时结束'
  97. c_text = `${c_event_item.event_item_countdown_over_data.binding_widget_id}`
  98. break;
  99. case config.event_type.be_event: //11被动触发事件
  100. c_title = '被动触发事件'
  101. c_text = `${c_event_item.event_item_be_event_data.binding_widget_id}`
  102. break;
  103. case config.event_type.hide://12触发让控件隐藏
  104. c_title = '触发让控件隐藏'
  105. c_text = `${c_event_item.event_item_hide_data.binding_widget_id}`
  106. break;
  107. case config.event_type.delay_exe_event://13延迟多久执行一个事件
  108. c_title = '延迟多久执行一个事件'
  109. c_text = `${c_event_item.event_item_delay_exe_data.binding_event_id}`
  110. break;
  111. case config.event_type.fail_event://14失败
  112. c_title = ''
  113. c_text = `失败`
  114. break;
  115. case config.event_type.play_sound://15播放一个音效
  116. c_title = ''
  117. c_text = `播放一个音效`
  118. break;
  119. case config.event_type.show_scene_title://16显示场景的标签
  120. c_title = '显示场景的标签'
  121. c_text = `${c_event_item.event_item_show_scene_title_data.title}`
  122. break;
  123. case config.event_type.scene_ani://17场景动画
  124. c_title = '场景动画'
  125. c_text = `${c_event_item.event_item_scene_ani.ani_id}`
  126. break;
  127. case config.event_type.delete_drag_other_data://18删除其他拖拽目标的属性
  128. c_title = '删除其他拖拽目标的属性'
  129. c_text = `${c_event_item.event_item_delete_drag_other_data.widget_id}`
  130. break;
  131. case config.event_type.stop_play_loop_sound://19停止一个音效
  132. c_title = '停止一个音效'
  133. c_text = `${c_event_item.event_item_stop_play_loop_sound_data.res}`
  134. break;
  135. }
  136. }
  137. if(c_text!="") {
  138. let item = instantiate(this.item_prefab)
  139. item.parent = this.content;
  140. item.getComponent(Label).color = Color.BLACK
  141. item.getComponent(Label).string = "\n当前绑定-> " + c_title + ": " + c_text
  142. }
  143. }
  144. private showNextSuccessTrigger() {
  145. let text = ''
  146. if(this.m_event_item.success.trigger_event_id==-1) {
  147. text = "\n暂未设置触发下个事件的id"
  148. } else {
  149. text = `\n触发下个事件的id${this.m_event_item.success.trigger_event_id}`
  150. }
  151. let item = instantiate(this.item_prefab)
  152. item.parent = this.content;
  153. item.getComponent(Label).color = Color.RED
  154. item.getComponent(Label).string = text
  155. // let event_list = Attributes.Singleton.getEventList()
  156. // for (let index = 0; index < event_list.length; index++) {
  157. // const element = event_list[index];
  158. // if(element.event_id == this.m_event_item.success.trigger_event_id) {
  159. // console.log('type=',element.type)
  160. // break
  161. // }
  162. // }
  163. }
  164. finAboutWidgetList(widget:widget_item_data){
  165. let widget_id = widget.att.id;
  166. let drag_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.DRAG_TYPE)
  167. for (let index = 0; index < drag_list.length; index++) {
  168. const drag_item = drag_list[index];
  169. if(drag_item.att.drag_data.other_widget_finish_listen_list!=undefined){
  170. for (let index = 0; index < drag_item.att.drag_data.other_widget_finish_listen_list.length; index++) {
  171. const element = drag_item.att.drag_data.other_widget_finish_listen_list[index];
  172. if(element.widget_id===widget_id){
  173. let item = instantiate(this.item_prefab)
  174. item.parent = this.content;
  175. item.getComponent(Label).color = Color.GREEN
  176. item.getComponent(Label).string = `被拖拽控件id:${drag_item.att.id}监听`
  177. }
  178. }
  179. }
  180. }
  181. let click_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.CLICK_TYPE)
  182. for (let index = 0; index < click_list.length; index++) {
  183. const drag_item = click_list[index];
  184. if(drag_item.att.click_data.other_widget_finish_listen_list!=undefined){
  185. for (let index = 0; index < drag_item.att.click_data.other_widget_finish_listen_list.length; index++) {
  186. const element = drag_item.att.click_data.other_widget_finish_listen_list[index];
  187. if(element.widget_id===widget_id){
  188. let item = instantiate(this.item_prefab)
  189. item.parent = this.content;
  190. item.getComponent(Label).color = Color.GREEN
  191. item.getComponent(Label).string = `被点击控件id:${drag_item.att.id}监听`
  192. }
  193. }
  194. }
  195. }
  196. let slide_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.SLIDE_TYPE)
  197. for (let index = 0; index < slide_list.length; index++) {
  198. const drag_item = slide_list[index];
  199. if(drag_item.att.slide_data.other_widget_finish_listen_list!=undefined){
  200. for (let index = 0; index < drag_item.att.slide_data.other_widget_finish_listen_list.length; index++) {
  201. const element = drag_item.att.slide_data.other_widget_finish_listen_list[index];
  202. if(element.widget_id===widget_id){
  203. let item = instantiate(this.item_prefab)
  204. item.parent = this.content;
  205. item.getComponent(Label).color = Color.GREEN
  206. item.getComponent(Label).string = `被滑动控件id:${drag_item.att.id}监听`
  207. }
  208. }
  209. }
  210. }
  211. let event_list = Attributes.Singleton.getEventList()
  212. for (let index = 0; index < event_list.length; index++) {
  213. const event = event_list[index];
  214. switch (event.type) {
  215. case config.event_type.play_ani:
  216. if(event.event_item_play_ani_data.binding_widget_id==widget_id){
  217. let item = instantiate(this.item_prefab)
  218. item.parent = this.content;
  219. item.getComponent(Label).color = Color.BLUE
  220. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  221. }
  222. break;
  223. case config.event_type.top_view:
  224. if(event.event_item_top_view_data.binding_ui_id===widget_id){
  225. let item = instantiate(this.item_prefab)
  226. item.parent = this.content;
  227. item.getComponent(Label).color = Color.BLUE
  228. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  229. }
  230. break;
  231. case config.event_type.text_sound:
  232. if(event.event_item_text_sound_data.binding_widget_id===widget_id){
  233. let item = instantiate(this.item_prefab)
  234. item.parent = this.content;
  235. item.getComponent(Label).color = Color.BLUE
  236. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  237. }
  238. break;
  239. case config.event_type.change_one_item_status:
  240. if(event.event_item_change_one_item_status_data.binding_widget_id===widget_id){
  241. let item = instantiate(this.item_prefab)
  242. item.parent = this.content;
  243. item.getComponent(Label).color = Color.BLUE
  244. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  245. }
  246. break;
  247. case config.event_type.show_new_item:
  248. if(event.event_item_show_new_item_data.binding_widget_id===widget_id){
  249. let item = instantiate(this.item_prefab)
  250. item.parent = this.content;
  251. item.getComponent(Label).color = Color.BLUE
  252. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  253. }
  254. break;
  255. case config.event_type.show_question_select:
  256. if(event.event_item_show_question_select_data.binding_widget_id===widget_id){
  257. let item = instantiate(this.item_prefab)
  258. item.parent = this.content;
  259. item.getComponent(Label).color = Color.BLUE
  260. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  261. }
  262. break;
  263. case config.event_type.active_event:
  264. if(event.event_item_active_event_data.binding_widget_id===widget_id){
  265. let item = instantiate(this.item_prefab)
  266. item.parent = this.content;
  267. item.getComponent(Label).color = Color.BLUE
  268. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  269. }
  270. break;
  271. case config.event_type.stop_active_event:
  272. if(event.event_item_stop_active_event_data.binding_widget_id===widget_id){
  273. let item = instantiate(this.item_prefab)
  274. item.parent = this.content;
  275. item.getComponent(Label).color = Color.BLUE
  276. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  277. }
  278. break;
  279. case config.event_type.countdown_over:
  280. if(event.event_item_countdown_over_data.binding_widget_id===widget_id){
  281. let item = instantiate(this.item_prefab)
  282. item.parent = this.content;
  283. item.getComponent(Label).color = Color.BLUE
  284. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  285. }
  286. break;
  287. case config.event_type.be_event:
  288. if(event.event_item_be_event_data.binding_widget_id===widget_id){
  289. let item = instantiate(this.item_prefab)
  290. item.parent = this.content;
  291. item.getComponent(Label).color = Color.BLUE
  292. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  293. }
  294. break;
  295. case config.event_type.hide:
  296. if(event.event_item_hide_data.binding_widget_id===widget_id){
  297. let item = instantiate(this.item_prefab)
  298. item.parent = this.content;
  299. item.getComponent(Label).color = Color.BLUE
  300. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  301. }
  302. break;
  303. case config.event_type.delete_drag_other_data:
  304. if(event.event_item_delete_drag_other_data.widget_id===widget_id){
  305. let item = instantiate(this.item_prefab)
  306. item.parent = this.content;
  307. item.getComponent(Label).color = Color.BLUE
  308. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  309. }
  310. break;
  311. }
  312. }
  313. }
  314. finAboutEventList(event:event_item){
  315. let event_id = event.event_id;
  316. let event_list = Attributes.Singleton.getEventList()
  317. for (let index = 0; index < event_list.length; index++) {
  318. const event = event_list[index];
  319. if(event.success.trigger_event_id==event_id){
  320. let item = instantiate(this.item_prefab)
  321. item.parent = this.content;
  322. item.getComponent(Label).color = Color.BLUE
  323. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  324. }
  325. switch (event.type) {
  326. case config.event_type.show_question_select:
  327. let question_list = event.event_item_show_question_select_data.question_list;
  328. for (let index = 0; index < question_list.length; index++) {
  329. const i = question_list[index];
  330. if(i.binding_event_id===event_id){
  331. let item = instantiate(this.item_prefab)
  332. item.parent = this.content;
  333. item.getComponent(Label).color = Color.BLUE
  334. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  335. }
  336. }
  337. break;
  338. case config.event_type.start_event:
  339. if(event_id ===event.event_item_start_event_data.binding_event_id){
  340. let item = instantiate(this.item_prefab)
  341. item.parent = this.content;
  342. item.getComponent(Label).color = Color.BLUE
  343. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  344. }
  345. break;
  346. case config.event_type.collect_event:
  347. let event_id_list = event.event_item_collect_event_data.event_id_list
  348. for (let index = 0; index < event_id_list.length; index++) {
  349. const element = event_id_list[index];
  350. if(element===event_id){
  351. let item = instantiate(this.item_prefab)
  352. item.parent = this.content;
  353. item.getComponent(Label).color = Color.BLUE
  354. item.getComponent(Label).string = `${event.event_name}-id:${event.event_id}绑定`
  355. }
  356. }
  357. break;
  358. case config.event_type.delay_exe_event:
  359. if(event.event_item_delay_exe_data.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. break;
  366. }
  367. }
  368. let drag_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.DRAG_TYPE)
  369. for (let index = 0; index < drag_list.length; index++) {
  370. const drag_item = drag_list[index];
  371. if(drag_item.att.drag_data.other_widget_finish_listen_list!=undefined){
  372. for (let index = 0; index < drag_item.att.drag_data.other_widget_finish_listen_list.length; index++) {
  373. const element = drag_item.att.drag_data.other_widget_finish_listen_list[index];
  374. if(element.event_id===event_id){
  375. let item = instantiate(this.item_prefab)
  376. item.parent = this.content;
  377. item.getComponent(Label).color = Color.GREEN
  378. item.getComponent(Label).string = `被拖拽控件id:${drag_item.att.id}调用`
  379. }
  380. }
  381. }
  382. }
  383. let top_list = Attributes.Singleton.get_cur_scene_widget_by_type(config.Widget_Type_List.UI_TOP)
  384. for (let index = 0; index < top_list.length; index++) {
  385. const top_item = top_list[index];
  386. if(top_item.att.top_data.close_event_id===event_id){
  387. let item = instantiate(this.item_prefab)
  388. item.parent = this.content;
  389. item.getComponent(Label).color = Color.GREEN
  390. item.getComponent(Label).string = `被弹窗件id:${top_item.att.id}调用`
  391. }
  392. if(top_item.att.top_data.finish_event_id===event_id){
  393. let item = instantiate(this.item_prefab)
  394. item.parent = this.content;
  395. item.getComponent(Label).color = Color.GREEN
  396. item.getComponent(Label).string = `被弹窗件id:${top_item.att.id}调用`
  397. }
  398. if(top_item.att.top_data.fail_event_id===event_id){
  399. let item = instantiate(this.item_prefab)
  400. item.parent = this.content;
  401. item.getComponent(Label).color = Color.GREEN
  402. item.getComponent(Label).string = `被弹窗件id:${top_item.att.id}调用`
  403. }
  404. }
  405. }
  406. public getCurSearchType(id:number=this.m_id){
  407. let widget_list = Attributes.Singleton.get_cur_scene_all_widget()
  408. let widget:widget_item_data = null;
  409. for (let index = 0; index < widget_list.length; index++) {
  410. const element = widget_list[index];
  411. if(id==element.att.id){
  412. widget = element;
  413. break;
  414. }
  415. }
  416. let event:event_item = null;
  417. if(widget==null){
  418. let event_list = Attributes.Singleton.getEventList()
  419. for (let index = 0; index < event_list.length; index++) {
  420. const element = event_list[index];
  421. if(id==element.event_id){
  422. event = element;
  423. break;
  424. }
  425. }
  426. if(event!=null){
  427. return {"event":event,"type":1}
  428. }
  429. }else{
  430. return {"widget":widget,"type":0}
  431. }
  432. return null;
  433. }
  434. public close(){
  435. this.node.active = false;
  436. }
  437. }