bag_list_page.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { _decorator, Component, instantiate, Layout, Node, Prefab, UITransform } from 'cc';
  2. import { bag_list_item_data, bag_type } from '../../data';
  3. import { bag_list_page_item } from './bag_list_page_item';
  4. import { GameManager } from '../../GameManager';
  5. import { uiManager } from '../../manager/uiManager';
  6. import { config } from '../../config';
  7. import { bag_avatar_preview } from './bag_avatar_preview';
  8. const { ccclass, property } = _decorator;
  9. @ccclass('bag_list_page')
  10. export class bag_list_page extends Component {
  11. @property(Node) bg:Node = null
  12. @property(Prefab) page_item:Prefab = null
  13. private cur_xiangkuang_item:bag_list_page_item = null
  14. start() {
  15. let fixed_count = 4
  16. let item = instantiate(this.page_item)
  17. let spacing_x = (this.bg.getComponent(UITransform).width - fixed_count*item.getComponent(UITransform).width) / (fixed_count + 1)
  18. let bg_layout = this.bg.getComponent(Layout)
  19. bg_layout.spacingX = spacing_x
  20. bg_layout.paddingLeft = spacing_x
  21. }
  22. initView(data_list:bag_list_item_data[]) {
  23. for (let index = 0; index < data_list.length; index++) {
  24. const element = data_list[index];
  25. let item = instantiate(this.page_item)
  26. item.parent = this.bg
  27. let item_com = item.getComponent(bag_list_page_item)
  28. item_com.initView(element,this.onClickItem.bind(this))
  29. if(element.stype==bag_type.xiangkuang) {
  30. if(element.usage_status==1) {
  31. item_com.setSelectedStatus()
  32. this.cur_xiangkuang_item = item_com
  33. } else {
  34. item_com.setUnselectedStatus()
  35. }
  36. }
  37. }
  38. }
  39. private onClickItem(item:bag_list_page_item) {
  40. let data = item.getData()
  41. switch (data.stype) {
  42. case bag_type.car_suipian:
  43. GameManager.showExchangeCarView(data.car_id,data.icon,data.quantity,()=>{
  44. data.quantity -= data.quantity
  45. item.setData(data)
  46. })
  47. break;
  48. case bag_type.xiangkuang:
  49. uiManager.Instance().showUi(config.UI.ui_bag_avatar_preview, null, (node:Node)=>{
  50. node.getComponent(bag_avatar_preview).initView(data, ()=>{
  51. if(this.cur_xiangkuang_item!=null) {
  52. let cur_data = this.cur_xiangkuang_item.getData()
  53. cur_data.usage_status = 0
  54. this.cur_xiangkuang_item.setData(cur_data)
  55. this.cur_xiangkuang_item.setUnselectedStatus()
  56. }
  57. data.usage_status = 1
  58. item.setData(data)
  59. item.setSelectedStatus()
  60. this.cur_xiangkuang_item = item
  61. })
  62. })
  63. break;
  64. case bag_type.daoju:
  65. break;
  66. default:
  67. break;
  68. }
  69. }
  70. }