Layout_Collect.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Layout_Collect.ts
  2. import { _decorator, Button, Component, Node, EventHandler, Label, SpriteFrame } from 'cc';
  3. import List from '../../scripts/Component/List/List';
  4. import { ui_collest_item } from './ui_collest_item';
  5. import { rootMgr } from '../../module_basic/scene/RootMgr';
  6. import { RewardDataManager } from '../../module_basic/data/RewardDataManager';
  7. const { ccclass, property } = _decorator;
  8. @ccclass('Layout_Collect')
  9. export class Layout_Collect extends Component {
  10. @property(Button)
  11. cloose_btn: Button;
  12. // 列表
  13. @property(List)
  14. list1: List = null;
  15. protected start() {
  16. // 加载奖励数据
  17. RewardDataManager.instance.loadRewards();
  18. // 监听奖励解锁事件
  19. rootMgr.game.evt.on('rewardUnlocked', this.onRewardUnlocked, this);
  20. // 绑定列表渲染事件
  21. if (this.list1) {
  22. const renderEventHandler = new EventHandler();
  23. renderEventHandler.target = this.node;
  24. renderEventHandler.component = 'Layout_Collect';
  25. renderEventHandler.handler = 'onListRender1';
  26. this.list1.renderEvent = renderEventHandler;
  27. this.updateList();
  28. }
  29. }
  30. // 更新列表显示
  31. private updateList() {
  32. if (this.list1) {
  33. this.list1.numItems = RewardDataManager.instance.getAllRewards().length;
  34. }
  35. }
  36. // 奖励解锁事件处理
  37. private onRewardUnlocked() {
  38. this.updateList();
  39. }
  40. onListRender1(item: any, idx: number) {
  41. let collectItem = item.getComponent(ui_collest_item);
  42. if (collectItem) {
  43. const rewards = RewardDataManager.instance.getAllRewards();
  44. if (idx < rewards.length) {
  45. const reward = rewards[idx];
  46. // 设置奖励图片
  47. if (collectItem.bottlesSp && collectItem.rewardSprites[idx]) {
  48. collectItem.keySp.spriteFrame = collectItem.rewardSprites[idx];
  49. collectItem.bottlesSp.spriteFrame = collectItem.rewardSprites[idx];
  50. collectItem.keySp.spriteFrame = collectItem.rewardSprites[idx];
  51. }
  52. if (collectItem.LabelName) {
  53. collectItem.LabelName.string = reward.name;
  54. }
  55. if (collectItem.keyBgNode && collectItem.openBgNode) {
  56. collectItem.keyBgNode.active = !reward.unlocked;
  57. collectItem.openBgNode.active = reward.unlocked;
  58. }
  59. }
  60. }
  61. }
  62. protected onDestroy(): void {
  63. rootMgr.game.evt.off('rewardUnlocked', this.onRewardUnlocked, this);
  64. }
  65. }