bag.ts 3.2 KB

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