Guide.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { _decorator, Component, Node, director, Enum, Vec3, v3, Animation } from 'cc';
  2. import { Window } from '../core/ui/window/Window';
  3. import { WindowOpenMode } from '../core/ui/window/WindowOpenMode';
  4. import { WindowSystem } from '../core/ui/window/WindowSystem';
  5. const { ccclass, property } = _decorator;
  6. /**
  7. * 引导类型
  8. */
  9. export enum GuideType {
  10. Train,
  11. Marshal
  12. }
  13. /**
  14. * 引导
  15. * @author 孙雄
  16. */
  17. @ccclass('Guide')
  18. export class Guide extends Component {
  19. @property({ tooltip: "类型列表", type: [Node] })
  20. public typeList: Node[] = [];
  21. private type: GuideType;
  22. private static guides: Map<GuideType, Guide> = new Map<GuideType, Guide>();
  23. start() {
  24. this.type = this.getComponent(Window).params[0];
  25. for (let i = 0; i < this.typeList.length; i++) {
  26. this.typeList[i].active = i == this.type;
  27. }
  28. Guide.guides.has(this.type) && Guide.close(this.type);
  29. Guide.guides.set(this.type, this);
  30. this.scheduleOnce(() => {
  31. Guide.close(this.type);
  32. }, 10);
  33. }
  34. public static close(type: GuideType) {
  35. if (Guide.guides.has(type)) {
  36. if (Guide.guides.get(type).node) Guide.guides.get(type).getComponent(Window).forceClose();
  37. Guide.guides.delete(type);
  38. }
  39. }
  40. public static create(type: GuideType) {
  41. WindowSystem.open('prefabs/ui/guide/guide', WindowOpenMode.CloseAndAdd, [type]);
  42. }
  43. }