cur_edit_scene.ts 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import { _decorator, Component, director, Director, instantiate, Node, Size, UITransform, Vec3 } from 'cc';
  2. import { scene_select_list } from './scene_select_list';
  3. import { edit_scene } from './edit_scene';
  4. import { ClientEvent } from '../clientEvent';
  5. import { config } from '../config';
  6. import { base_view } from './base_view';
  7. import { scroll_scene } from './scroll_scene';
  8. import { tools } from '../tools';
  9. import { widget_item } from './widget_item';
  10. import { scene_item_data, widget_item_data } from '../../data/data';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('cur_edit_scene')
  13. export class cur_edit_scene extends Component {
  14. private m_edit_scene:edit_scene = null;
  15. protected start(): void {
  16. ClientEvent.on(config.Event.UpdateEditScene,this.UpdateEditScene,this)
  17. ClientEvent.on(config.Event.DragWidgetEnd,this.DragWidgetEnd,this)
  18. ClientEvent.on(config.Event.RemoveWidget,this.removeWidget,this)
  19. ClientEvent.on(config.Event.updateWidgetData,this.updateWidgetData,this)
  20. }
  21. public initView(_edit_scene:edit_scene){
  22. this.node.removeAllChildren()
  23. this.m_edit_scene = _edit_scene;
  24. }
  25. DragWidgetEnd(container_id:number=-1){
  26. if(this.m_edit_scene.getMain().action_node.children.length>0){
  27. let base_v = this.getCurEditBaseView()
  28. if(base_v===null){
  29. tools.showToast("当前没有创建场景")
  30. }else{
  31. let page = base_v.getCurPageView();
  32. if(page===null){
  33. return tools.showToast("当前没有分页")
  34. }
  35. let node = instantiate(this.m_edit_scene.getMain().action_node.children[0])
  36. let bg = page.getComponent(scroll_scene).getBg();
  37. let pos = bg.getComponent(UITransform).convertToNodeSpaceAR(node.position)
  38. let data = this.m_edit_scene.getMain().action_node.children[0].getComponent(widget_item).getData()
  39. node.getComponent(widget_item).initWidgetByScene(data)
  40. if(data.type===config.Widget_Type_List.UI_TOP||data.type===config.Widget_Type_List.TEXT_SOUND){
  41. node.getComponent(UITransform).contentSize = new Size(1080,1920)
  42. node.position = new Vec3(1080*0.5,1920*0.5,0);
  43. }else{
  44. node.position = pos;
  45. }
  46. if(container_id==-1){
  47. page.getComponent(scroll_scene).addWidget(node)
  48. setTimeout(()=>{node.getComponent(widget_item).initWidgetAddCurEditSecne()},50)
  49. }else{
  50. node.position = new Vec3(0,0);
  51. page.getComponent(scroll_scene).addContainer(container_id,node)
  52. }
  53. //添加数据
  54. // let scene_data = this.getCurEditSceneData()
  55. // let cur_page_num = this.getCurEditBaseView().cur_page();
  56. // let temp_data = node.getComponent(widget_item).getData();
  57. // let cur_page_data = scene_data.page_list[cur_page_num]
  58. // let n_data = new widget_item_data(temp_data.name,temp_data.type)
  59. // n_data.att = temp_data.att;
  60. // cur_page_data.page_widget_list.push(n_data)
  61. director.once(Director.EVENT_AFTER_DRAW,()=>{
  62. this.updateWidgetData()
  63. // console.log("---",this.getCurEditSceneData())
  64. })
  65. }
  66. }
  67. }
  68. public updateWidgetData(){
  69. let base_v = this.getCurEditBaseView()
  70. let page = base_v.getCurPageView();
  71. let bg = page.getComponent(scroll_scene).getBg();
  72. let scene_data = this.getCurEditSceneData()
  73. let cur_page_num = this.getCurEditBaseView().cur_page();
  74. let cur_page_data = scene_data.page_list[cur_page_num]
  75. let temp = []
  76. // console.log("updateWidgetData",bg)
  77. for (let index = 0; index < bg.children.length; index++) {
  78. let node = bg.children[index]
  79. let temp_data = node.getComponent(widget_item).getData();
  80. let data = new widget_item_data(temp_data.name,temp_data.type)
  81. if(temp_data.type==config.Widget_Type_List.CONTAINER_LAYER){
  82. let container = node.getComponent(widget_item).getContainer()
  83. temp_data.att.container_layer.widget_list = []
  84. for (let j = 0; j < container.children.length; j++) {
  85. const element = container.children[j];
  86. let element_data = element.getComponent(widget_item).getWidgetAtt();
  87. let item_data = new widget_item_data(element_data.name,element_data.widget_type)
  88. item_data.att = element_data
  89. temp_data.att.container_layer.widget_list.push(item_data)
  90. }
  91. data.att = temp_data.att;
  92. }else{
  93. data.att = temp_data.att;
  94. }
  95. temp.push(data)
  96. }
  97. cur_page_data.page_widget_list =temp
  98. // console.log("updateWidgetData",temp)
  99. }
  100. public removeWidget(node:Node){
  101. // let scene_data = this.getCurEditSceneData()
  102. // let cur_page_num = this.getCurEditBaseView().cur_page();
  103. // let cur_page_data = scene_data.page_list[cur_page_num]
  104. // let data = node.getComponent(widget_item).getData();
  105. // let index = cur_page_data.page_widget_list.indexOf(data)
  106. // console.log(" cur_page_data.page_widget_list", cur_page_data.page_widget_list)
  107. // if(index!=-1){
  108. // cur_page_data.page_widget_list.splice(index,1)
  109. // }
  110. this.updateWidgetData()
  111. node.destroy()
  112. node.removeFromParent()
  113. // console.log(" cur_page_data.page_widget_list", cur_page_data.page_widget_list)
  114. }
  115. UpdateEditScene(){
  116. this.node.destroyAllChildren()
  117. this.node.removeAllChildren()
  118. let data = this.m_edit_scene.getCurSelectScene()
  119. if(data!=null){
  120. let pf = instantiate(this.m_edit_scene.getPrefabByType())
  121. pf.parent = this.node
  122. pf.getComponent(base_view).initView(this.m_edit_scene)
  123. }
  124. }
  125. onClickScene(){
  126. let base_v = this.getCurEditBaseView()
  127. if(base_v!=null){
  128. if(base_v.getCurPageView()!=null){
  129. ClientEvent.dispatchEvent(config.Event.UpdateAttributes,base_v.getCurPageView().getComponent(scroll_scene).getScenePageAtt())
  130. }else{
  131. ClientEvent.dispatchEvent(config.Event.UpdateAttributes,null)
  132. }
  133. }
  134. }
  135. getCurEditSceneData():scene_item_data{
  136. if(this.node.children.length<=0){
  137. return null;
  138. }
  139. return this.node.children[0].getComponent(base_view).getData()
  140. }
  141. getCurEditBaseView():base_view{
  142. if(this.node.children.length<=0){
  143. return null;
  144. }
  145. return this.node.children[0].getComponent(base_view)
  146. }
  147. }