bag.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import { _decorator, Component, instantiate, Node, PageView, Prefab } from 'cc';
  2. import { uiManager } from '../../manager/uiManager';
  3. import { http } from '../../http';
  4. import { config } from '../../config';
  5. import { bag_list_item_data, bag_type_item_data } from '../../data';
  6. import { bag_type_item } from './bag_type_item';
  7. import { bag_list_page } from './bag_list_page';
  8. import { GameManager } from '../../GameManager';
  9. import { ClientEvent } from '../../lib/clientEvent';
  10. const { ccclass, property } = _decorator;
  11. @ccclass('bag')
  12. export class bag extends Component {
  13. @property(Node) btn_back:Node = null
  14. @property(Node) type_content:Node = null
  15. @property(Prefab) type_item:Prefab = null
  16. @property(Node) list_bg:Node = null
  17. @property(Node) list_pageView:Node = null
  18. @property(Prefab) list_page_prefab:Prefab = null
  19. @property(Node) img_empty:Node = null
  20. private cur_type_item:bag_type_item = null
  21. private data_list:bag_list_item_data[] = []
  22. start() {
  23. uiManager.Instance().onButtonListen(this.btn_back, ()=>{
  24. this.close()
  25. ClientEvent.dispatchEvent(config.UI_EVENT.HOME_DID_BECOME_ACTIVE)
  26. })
  27. this.list_bg.active = false
  28. this.requestTypeList()
  29. }
  30. close() {
  31. this.node.removeFromParent()
  32. }
  33. private requestTypeList() {
  34. uiManager.Instance().showLoading()
  35. http.post(config.API.bag_type_list,null, (err,d)=>{
  36. uiManager.Instance().hideLoading()
  37. if(!err){
  38. let nd = JSON.parse(d)
  39. if(nd.code === config.status.SUCCESS){
  40. // console.log("bag_type_list", nd.content)
  41. this.loadTypeView(nd.content)
  42. }
  43. }
  44. },'GET')
  45. }
  46. private loadTypeView(data_list:bag_type_item_data[]) {
  47. for (let index = 0; index < data_list.length; index++) {
  48. const element = data_list[index];
  49. let item = instantiate(this.type_item)
  50. item.parent = this.type_content
  51. let type_item = item.getComponent(bag_type_item)
  52. type_item.initView(element,this.onClickTypeItem.bind(this))
  53. if(index==0) {
  54. type_item.setSelected()
  55. this.cur_type_item = type_item
  56. this.requestContentList()
  57. } else {
  58. type_item.setUnselected()
  59. }
  60. this.list_bg.active = true
  61. }
  62. }
  63. private onClickTypeItem(item:bag_type_item) {
  64. if(item.getData().id==this.cur_type_item.getData().id) {
  65. return
  66. }
  67. item.setSelected()
  68. this.cur_type_item.setUnselected()
  69. this.cur_type_item = item
  70. this.requestContentList()
  71. }
  72. private requestContentList() {
  73. let id = this.cur_type_item.getData().id
  74. GameManager.requestBagList(id, (d_list)=>{
  75. this.data_list = d_list
  76. this.loadListView()
  77. if(this.data_list.length>0) {
  78. this.img_empty.active = false
  79. } else {
  80. this.img_empty.active = true
  81. }
  82. },true)
  83. }
  84. private loadListView() {
  85. this.list_pageView.getComponent(PageView).removeAllPages()
  86. let group_list = []
  87. let slice_size:number = 20
  88. for (let i = 0; i < this.data_list.length; i += slice_size) {
  89. let group = this.data_list.slice(i, i + slice_size)
  90. group_list.push(group)
  91. }
  92. for (let index = 0; index < group_list.length; index++) {
  93. const element = group_list[index];
  94. let page = instantiate(this.list_page_prefab)
  95. page.getComponent(bag_list_page).initView(element)
  96. this.list_pageView.getComponent(PageView).addPage(page)
  97. }
  98. }
  99. }