FirstHero.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { _decorator, Component, Toggle, ToggleContainer, Animation, v3 } from 'cc';
  2. import { BattleData } from '../battle/BattleData';
  3. import { DataSystem } from '../core/data/DataSystem';
  4. import { Http, HttpResponseCode } from '../core/net/Http';
  5. import { UITween } from '../core/ui/tween/UITween';
  6. import { Window } from '../core/ui/window/Window';
  7. import { platform } from '../data/jsb/platform';
  8. import { UserData } from '../data/UserData';
  9. import { FormationData } from '../hero/formation/FormationData';
  10. import { UserHeroData } from '../hero/UserHeroData';
  11. const { ccclass, property, requireComponent } = _decorator;
  12. /**
  13. * 图鉴英雄项
  14. * @author 袁浩
  15. */
  16. @ccclass('FirstHero')
  17. @requireComponent(Http)
  18. export class FirstHero extends Component {
  19. @property({ tooltip: "武将列表容器", type: ToggleContainer })
  20. public heroContainer: ToggleContainer;
  21. private selectedIndex = 0;
  22. public onSelected(toggle: Toggle) {
  23. for (let i = 0; i < this.heroContainer.toggleItems.length; i++) {
  24. const item = this.heroContainer.toggleItems[i];
  25. if (item != toggle) {
  26. item.node.getChildByName("缩小动画").getComponent(UITween).play();
  27. }
  28. else {
  29. this.selectedIndex = i;
  30. }
  31. }
  32. toggle.node.getChildByName("放大动画").getComponent(UITween).play();
  33. }
  34. public async onReceive() {
  35. let http = this.getComponent(Http);
  36. let result = await http.send("/api/hero/receiveFirstHero", { index: this.selectedIndex });
  37. if (result && result.code == HttpResponseCode.Success) {
  38. platform.reportThinking("guide", JSON.stringify({ guide_id: 'first_recruit' }));
  39. let userHero = DataSystem.getData(UserHeroData);
  40. userHero.addHero(result.data);
  41. let formation = DataSystem.getData(FormationData);
  42. formation.set(1, result.data);
  43. let userData = DataSystem.getData(UserData);
  44. let battleResult = await http.send("/api/battle/startBattle", { level: userData.level });
  45. if (battleResult && battleResult.code == HttpResponseCode.Success) {
  46. DataSystem.getData(BattleData).mission = userData.level;
  47. }
  48. this.getComponent(Window).close();
  49. }
  50. }
  51. }