BuyBoomerangUI.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { _decorator, Node, Label, EventTouch} from 'cc';
  2. import { BaseExp } from '../core/base/BaseExp';
  3. import List from '../third/List';
  4. import { autoBind } from '../extend/AutoBind';
  5. import { userIns } from '../data/UserData';
  6. import { BoomerangItem } from '../items/item/BoomerangItem';
  7. import { uiMgr } from '../core/manager/UIManager';
  8. import { Constants } from '../data/Constants';
  9. import { TossBoomerangUI } from './TossBoomerangUI';
  10. import MsgHints from '../utils/MsgHints';
  11. import { ITEM_TYPE, ResUtil } from '../utils/ResUtil';
  12. import { audioMgr } from '../core/manager/AudioManager';
  13. const { ccclass, property } = _decorator;
  14. //购买飞镖
  15. @ccclass('BuyBoomerangUI')
  16. export class BuyBoomerangUI extends BaseExp {
  17. @autoBind({ type: List, tooltip: "飞镖列表" })
  18. public prop_scrollView: List;
  19. @autoBind({ type: Label, tooltip: "飞镖个数文本" })
  20. public boomerang_num_lable: Label;
  21. @autoBind({ type: Node, tooltip: "飞镖按钮" })
  22. public boomerang_btn: Node;
  23. //飞镖商店数据
  24. private dartDatas: any[] = [];
  25. public show(...args: any[]){
  26. this.hasAnim = true;
  27. this.closeOnBlank = false;
  28. const toss:TossBoomerangUI = uiMgr.getPageComponent(Constants.popUIs.tossBoomerangUI);
  29. if(toss && toss.shoot_btn){
  30. toss.shoot_btn.parent.active = false;
  31. }
  32. //设置飞镖个数
  33. this.boomerang_num_lable.string = userIns.data.boomerang;
  34. this.loadDartData();
  35. }
  36. /**
  37. * 飞镖商店数据
  38. */
  39. public loadDartData(){
  40. this.dartDatas = userIns.boomerangShopTable;
  41. this.prop_scrollView.numItems = this.dartDatas.length;
  42. }
  43. /**
  44. * 设置飞镖商店数据
  45. * @param item item节点
  46. * @param idx 数据信息
  47. */
  48. public setDartItemData(item: Node, idx: number) {
  49. let com:BoomerangItem = item.getComponent(BoomerangItem);
  50. com.init(this.dartDatas[idx],this.buyClicked.bind(this));
  51. }
  52. /**
  53. * 购买飞镖
  54. */
  55. public buyClicked(data:any,clikTarget:Node){
  56. const [id,num] = data.price_1.split("_");
  57. const sData:any = userIns.itemTable.find(e=>e.id == id);
  58. //是否升级
  59. let isSucced: boolean = false;
  60. if(sData.id === 1001){//金币钻石
  61. if(userIns.data.gold < num){
  62. MsgHints.show("Insufficient gold!");
  63. }else{
  64. userIns.data.gold -= num;
  65. isSucced = true;
  66. }
  67. }else if(sData.id === 1002){//钻石
  68. if(userIns.data.diamond < num){
  69. MsgHints.show("Insufficient diamonds!");
  70. }else{
  71. userIns.data.diamond -= num;
  72. isSucced = true;
  73. }
  74. }
  75. if(isSucced){
  76. audioMgr.playOneShot(Constants.audios.buy);
  77. ResUtil.flyAnim(ITEM_TYPE.Boomerang, clikTarget, this.boomerang_btn, data.quantity, 50,(b) => {});
  78. userIns.data.boomerang += data.quantity;
  79. //设置飞镖个数
  80. this.boomerang_num_lable.string = userIns.data.boomerang;
  81. const toss:TossBoomerangUI = uiMgr.getPageComponent(Constants.popUIs.tossBoomerangUI);
  82. if(toss){
  83. toss.setBoomerang();
  84. }
  85. }
  86. }
  87. /**
  88. * 按钮点击事件
  89. * @param event 事件
  90. * @param param 参数
  91. */
  92. override onBtnClicked(event:EventTouch, param:any) {
  93. super.onBtnClicked(event, param);
  94. let btnName = event.target.name;
  95. if(btnName === 'close_btn'){
  96. const toss:TossBoomerangUI = uiMgr.getPageComponent(Constants.popUIs.tossBoomerangUI);
  97. if(toss && toss.shoot_btn){
  98. toss.shoot_btn.parent.active = true;
  99. }
  100. uiMgr.hide(Constants.popUIs.buyBoomerangUI);
  101. }
  102. }
  103. }