BattleResult.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { _decorator, Component, Node, Label, bezier, instantiate, Prefab, ProgressBar, EventHandler, SystemEvent } from 'cc';
  2. import { DataSystem } from '../../core/data/DataSystem';
  3. import { Sound } from '../../core/sound/Sound';
  4. import { ConfigData } from '../../data/ConfigData';
  5. import { UserData } from '../../data/UserData';
  6. import { NoviceGuideData } from '../../guide/NoviceGuideData';
  7. import { GM } from '../../launch/GM';
  8. import { MissionData } from '../MissionData';
  9. import { ResultItem } from './ResultItem';
  10. const { ccclass, property } = _decorator;
  11. @ccclass('BattleResult')
  12. export class BattleResult extends Component {
  13. @property({ type: Label, tooltip: "倒计时lable" }) countLabel: Label;
  14. @property({ type: Node, tooltip: "列表节点" }) list: Node;
  15. @property({ type: Prefab, tooltip: "item预制体" }) prefab: Prefab;
  16. @property({ type: ProgressBar, tooltip: "兵营进度" }) progress: ProgressBar;
  17. @property({ type: Node, tooltip: "完成组" }) completeNode: Node;
  18. @property({ type: Node, tooltip: "可点击背景" }) mask: Node;
  19. private count: number = 10;
  20. start() {
  21. this.mask.on(SystemEvent.EventType.TOUCH_END, () => {
  22. this.close();
  23. }, this)
  24. }
  25. update(dt: number) {
  26. this.count -= dt;
  27. this.countLabel.string = Math.floor(this.count) + " 秒后自动关闭";
  28. if (this.count <= 0) {
  29. DataSystem.getData(NoviceGuideData).skipBarracks = true;
  30. this.close();
  31. }
  32. DataSystem.watch(NoviceGuideData, 'openBarracks') && this.close();
  33. }
  34. public close(): void {
  35. this.node.active = false;
  36. DataSystem.getData(MissionData)._isResultWindowClose = true;
  37. }
  38. public setData(data: any): void {
  39. this.node.getComponent(Sound).play();
  40. // GM.addBattleLog("结算窗口打开");
  41. this.count = 10;
  42. if (this.progress && data) {
  43. DataSystem.getData(NoviceGuideData).openBattleResult = true;
  44. data && this.setListData(data);
  45. let progress = DataSystem.getData(UserData).prestige / DataSystem.getData(ConfigData)["barrack"][DataSystem.getData(UserData).campLv].cost;
  46. this.progress.progress = progress;
  47. this.completeNode.active = progress >= 1;
  48. }
  49. }
  50. //{"code":0,"data":{"isWin":true,"money":10000,"diamond":500,"bonus":0,"prestige":100,"chipData":{"111001":5}}}
  51. private setListData(data: any): void {
  52. this.list && this.list.removeAllChildren();
  53. for (let k in data) {
  54. if (k != "chips" && k != "heros" && k != "level" && k != "autoMoney") {
  55. if (typeof (data[k]) == 'number' && data[k] != 0) {
  56. let node = instantiate(this.prefab);
  57. switch (k) {
  58. case "money":
  59. node.getComponent(ResultItem).setData("image/icons/icon4/spriteFrame", data[k] + "", false, 2, "粮草");
  60. break;
  61. case "diamond":
  62. node.getComponent(ResultItem).setData("image/icons/icon7/spriteFrame", data[k] + "", false, 2, "元宝");
  63. break;
  64. case "bonus":
  65. node.getComponent(ResultItem).setData("image/icons/icon2/spriteFrame", data[k] + "", false, 2, "红包币");
  66. break;
  67. case "prestige":
  68. node.getComponent(ResultItem).setData("image/icons/icon8/spriteFrame", data[k] + "", false, 2, "威望石");
  69. break;
  70. }
  71. node.setParent(this.list);
  72. }
  73. }
  74. }
  75. for (let i = 0; i < data["heros"].length; i++) {
  76. let node = instantiate(this.prefab);
  77. node.getComponent(ResultItem).setData("images/general/texture/head_img/" + DataSystem.getData(ConfigData)["general"][data["heros"][i]]["hero_res"] + "/spriteFrame", "1", false, DataSystem.getData(ConfigData)["general"][data["heros"][i]]["color"], DataSystem.getData(ConfigData)["general"][data["heros"][i]]["name"]);
  78. node.setParent(this.list);
  79. }
  80. for (let key in data["chips"]) {
  81. let node = instantiate(this.prefab);
  82. node.getComponent(ResultItem).setData("images/general/texture/head_img/" + DataSystem.getData(ConfigData)["general"][key]["hero_res"] + "/spriteFrame", data["chips"][key] + "", true, DataSystem.getData(ConfigData)["general"][key]["color"], DataSystem.getData(ConfigData)["general"][key]["name"] + "碎片");
  83. node.setParent(this.list);
  84. }
  85. }
  86. }