SkinLayer.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import { Color, find, Node, sp, Sprite, _decorator } from 'cc';
  2. import { BaseLayer } from '../../common/BaseLayer';
  3. import { utilTools } from '../../utils/utilTools';
  4. import { constants } from '../data/constants';
  5. import { ItemLayer } from '../item/ItemLayer';
  6. import { designManager } from '../manager/designManager';
  7. import { iconManager } from '../manager/iconManager';
  8. import { levelManager } from '../manager/levelManager';
  9. import { sdkManager } from '../manager/sdkManager';
  10. import { playerModel } from '../model/playerModel';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('SkinLayer')
  13. export class SkinLayer extends BaseLayer {
  14. roleBodySkeleon: sp.Skeleton;
  15. itemList: Node;
  16. btnGet: Node;
  17. onLoad() {
  18. super.onLoad();
  19. this.itemList = this.getNodeByPath("listBg/list");
  20. this.itemList.addComponent(ItemLayer);
  21. this.btnGet = this.getNodeByPath("btnGet");
  22. this.roleBodySkeleon = this.getNodeByPath("tribe/body").getComponent(sp.Skeleton);
  23. this.initUI();
  24. }
  25. initUI() {
  26. let tb = designManager.instance.getTable(constants.tableName.equip);
  27. this.itemList.getComponent(ItemLayer).initUI(this, tb, this.refreshEquipItem.bind(this));
  28. this.refreshRoleBodyLayer();
  29. this.refreshBtnGet();
  30. }
  31. refreshBtnGet() {
  32. this.btnGet.active = true;
  33. let tb = designManager.instance.getTable(constants.tableName.equip);
  34. for (let i in tb) {
  35. let row = tb[i];
  36. if (playerModel.instance.getEquipIdArr().indexOf(row.id) == -1) {
  37. return;
  38. }
  39. }
  40. this.btnGet.active = false;
  41. }
  42. refreshRoleBodyLayer() {
  43. let skinName = levelManager.instance.getSkinName(playerModel.instance.getEquipWeaponId(), playerModel.instance.getEquipDressId());
  44. this.roleBodySkeleon.setSkin(skinName);
  45. }
  46. refreshEquipItem(itemUI: Node, row: any) {
  47. let iconNode = find("icon", itemUI);
  48. iconManager.instance.setSprite(iconNode, row.icon);
  49. let getBg = find("getBg", itemUI);
  50. let noBg = find("noBg", itemUI);
  51. let wenhao = find("wenhao", itemUI);
  52. if (playerModel.instance.getEquipIdArr().indexOf(row.id) == -1) {
  53. // 还未获得
  54. noBg.active = true;
  55. getBg.active = false;
  56. wenhao.active = true;
  57. iconNode.getComponent(Sprite).color = Color.BLACK;
  58. } else {
  59. // 已获得
  60. getBg.active = true;
  61. noBg.active = false;
  62. wenhao.active = false;
  63. iconNode.getComponent(Sprite).color = Color.WHITE;
  64. }
  65. let choseWeapon = find("choseWeapon", itemUI);
  66. let choseDress = find("choseDress", itemUI);
  67. choseWeapon.active = false;
  68. choseDress.active = false;
  69. if (row.type == constants.equipTypes.weapon) {
  70. if (playerModel.instance.getEquipWeaponId() == row.id) {
  71. choseWeapon.active = true;
  72. }
  73. } else if (row.type == constants.equipTypes.dress) {
  74. if (playerModel.instance.getEquipDressId() == row.id) {
  75. choseDress.active = true;
  76. }
  77. }
  78. }
  79. onButtonClick(node: Node, name: string) {
  80. switch (name) {
  81. case "equipItem":
  82. this.onClickEquipItem(node);
  83. break;
  84. case "btnGet":
  85. this.onClickBtnGet(node);
  86. break;
  87. case "btnBack":
  88. this.onClickBtnBack(node);
  89. break;
  90. default:
  91. break;
  92. }
  93. }
  94. onClickEquipItem(node: Node) {
  95. let row = node["item"];
  96. if (playerModel.instance.getEquipIdArr().indexOf(row.id) == -1) {
  97. return;
  98. }
  99. if (row.type == constants.equipTypes.weapon) {
  100. playerModel.instance.setEquipWeaponId(row.id);
  101. } else if (row.type == constants.equipTypes.dress) {
  102. playerModel.instance.setEquipDressId(row.id);
  103. }
  104. this.itemList.getComponent(ItemLayer).refreshUI();
  105. this.refreshRoleBodyLayer();
  106. }
  107. onClickBtnGet(node: Node) {
  108. let tb = designManager.instance.getTable(constants.tableName.equip);
  109. let idArr = [];
  110. for (let i in tb) {
  111. let row = tb[i];
  112. if (playerModel.instance.getEquipIdArr().indexOf(row.id) != -1) {
  113. continue;
  114. }
  115. idArr.push(row.id);
  116. }
  117. if (idArr.length <= 0) {
  118. return;
  119. }
  120. sdkManager.instance.sendEvent("观看激励视频-解锁皮肤");
  121. sdkManager.instance.openAd((st: number) => {
  122. if (st != 1) {
  123. return;
  124. }
  125. let id = utilTools.getRandomItemByArr(idArr);
  126. playerModel.instance.addEquipId(id);
  127. this.itemList.getComponent(ItemLayer).refreshItemUIById(id);
  128. this.refreshBtnGet();
  129. sdkManager.instance.sendEvent("观看完激励视频-解锁皮肤");
  130. });
  131. }
  132. onClickBtnBack(node: Node) {
  133. this.closeLayer();
  134. }
  135. }