bag.ts 3.4 KB

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