ExpropriationGrainUI.ts 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { _decorator, Component, Node, Prefab, instantiate, RichText, JsonAsset, EventHandler } from 'cc';
  2. import { DataSystem } from '../core/data/DataSystem';
  3. import { Http } from '../core/net/Http';
  4. import { ResourceLoader } from '../core/resourceManager/ResourceLoader';
  5. import { ConfigData } from '../data/ConfigData';
  6. import { ExpropriationGrainItem } from './ExpropriationGrainItem';
  7. const { ccclass, property, requireComponent } = _decorator;
  8. @ccclass('ExpropriationGrainUI')
  9. @requireComponent(Http)
  10. @requireComponent(ResourceLoader)
  11. export class ExpropriationGrainUI extends Component {
  12. @property({ tooltip: "item组件父级节点", type: Node }) private itemParent: Node;
  13. @property({ tooltip: "剩余次数文本", type: RichText }) private timesTxt: RichText;
  14. @property({ tooltip: "更新出征状态回调", type: EventHandler }) private initToGetArray: EventHandler;
  15. private itemArray: Node[] = [];//item数组
  16. private grainLeviesConfig = [];//配置
  17. private isToGetArray = [];//记录出征状态
  18. start() {
  19. this.getConfig();
  20. }
  21. private async getConfig() {
  22. let configData = DataSystem.getData(ConfigData);
  23. let data;
  24. if (configData.has("grainLevies")) {
  25. data = configData.get("grainLevies");
  26. } else {
  27. data = await (await this.getComponent(ResourceLoader).load<JsonAsset>("configs/grainLevies", JsonAsset)).json;
  28. }
  29. for (let i in data) {
  30. this.grainLeviesConfig.push(data[i]);
  31. }
  32. this.initUI();
  33. }
  34. public async initUI() {
  35. let itemData = [];
  36. for (let k = 0; k < this.grainLeviesConfig.length; k++) {
  37. let _data = this.grainLeviesConfig[k];
  38. itemData.push({ index: _data.index, rewardNum: _data.rewardNum, time: _data.time });
  39. }
  40. let resul = await this.getComponent(Http).send("/api/grainLevies/GetGrainLevies");
  41. if (resul && resul.code == 0) {
  42. for (let i = 0; i < resul.data.leviesDatas.length; i++) {
  43. let data = resul.data.leviesDatas[i];
  44. itemData[data.index - 1].finishTime = data.finishTime;
  45. itemData[data.index - 1].isReceive = data.isReceive;
  46. }
  47. this.timesTxt.string = "<b><color=#FFFFFF>剩余次数:</color><color=#DA5E5F>" + resul.data.times + "</color>";
  48. }
  49. for (let j = 0; j < itemData.length; j++) {
  50. this.isToGetArray.push(0);//初始都未出征
  51. let prefab = await this.getComponent(ResourceLoader).load<Prefab>("prefabs/ui/expropriationGrain/expropriationGrainItem", Prefab);
  52. let item = instantiate(prefab);
  53. item.getComponent(ExpropriationGrainItem).initToGetState = this.initToGetArray;
  54. item.getComponent(ExpropriationGrainItem).timesTxt = this.timesTxt;
  55. this.itemArray.push(item);
  56. item.parent = this.itemParent;
  57. item.getComponent(ExpropriationGrainItem).initUI(itemData[j]);
  58. }
  59. }
  60. /**
  61. * 更新出征状态回调
  62. * @param index 出征类型索引
  63. * @param type 出征状态,0为未出征
  64. */
  65. public initToGetArrayBack(index: number, type: number) {
  66. this.isToGetArray[index - 1] = type;
  67. let tempBool: boolean = false;//是否有人出征
  68. for (let i = 0; i < this.isToGetArray.length; i++) {
  69. if (this.isToGetArray[i]) {
  70. tempBool = true;
  71. break;
  72. }
  73. }
  74. //调用刷新回调
  75. this.initToGetBtn(tempBool);
  76. // if (!type && !tempBool) {
  77. // this.initToGetBtn(tempBool);
  78. // }
  79. // if (type && tempBool) {
  80. // this.initToGetBtn(tempBool);
  81. // }
  82. }
  83. public initToGetBtn(isToGet: boolean) {
  84. for (let i = 0; i < this.itemArray.length; i++) {
  85. this.itemArray[i].getComponent(ExpropriationGrainItem).initTogetBtn(isToGet);
  86. }
  87. }
  88. }