PopManger.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. // Learn TypeScript:
  2. // - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
  3. // Learn Attribute:
  4. // - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
  5. // Learn life-cycle callbacks:
  6. // - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html
  7. import Sdk from "../SDK/SDK";
  8. import HTTPS, { NetPost } from "../Template/HTTPS";
  9. import LocalData, { WorkState } from "../Template/LocalData";
  10. import PopComponet from "../Template/PopComponet";
  11. export type Options = {
  12. animation?: boolean;
  13. PropType?: number;
  14. Data?: any;
  15. }
  16. export enum GameOver {
  17. fail = 0,
  18. succeed = 1,
  19. }
  20. const { ccclass, property } = cc._decorator;
  21. @ccclass
  22. export default class PopManger {
  23. private static instance: PopManger;
  24. public static getInstance(): PopManger {
  25. if (!PopManger.instance) {
  26. PopManger.instance = new PopManger();
  27. }
  28. return PopManger.instance;
  29. }
  30. Pop(path: string, options: Options = { animation: true }) {
  31. return new Promise<PopComponet>((resolve, reject) => {
  32. let bundle = cc.assetManager.getBundle("sub");
  33. bundle.load(path, cc.Prefab, null, (err, PopPrefab: cc.Prefab) => {
  34. if (err) {
  35. cc.error(`加载${path}失败`)
  36. reject(err)
  37. return
  38. }
  39. let a = this.InitPrefab(PopPrefab, options)
  40. if (a) {
  41. resolve(a)
  42. }
  43. resolve(null)
  44. })
  45. })
  46. }
  47. private InitPrefab(PopPrefab: cc.Prefab, options: Options) {
  48. let PopNode = cc.instantiate(PopPrefab)
  49. let PopCom = PopNode.getComponent(PopComponet)
  50. if (options && PopCom) {
  51. PopCom.Options = options
  52. }
  53. PopNode.parent = cc.Canvas.instance.node.getChildByName('PopManger')
  54. PopNode.setPosition(0, 0)
  55. if (options.animation) {
  56. this.OpenAni(PopNode, () => {
  57. PopCom?.OpenAniOver()
  58. })
  59. }
  60. if (PopCom) {
  61. return PopCom
  62. }
  63. return null
  64. }
  65. private OpenAni(PopPrefab: cc.Node, cb: Function) {
  66. PopPrefab.opacity = 0
  67. PopPrefab.scale = 0.5
  68. let t = cc.tween;
  69. t(PopPrefab)
  70. // 同时执行两个 cc.tween
  71. .parallel(
  72. t().to(0.15, { scale: 1.15 }).to(0.1, { scale: 1 }),
  73. t().to(0.15, { opacity: 255 })
  74. )
  75. .call(() => {
  76. cb?.()
  77. })
  78. .start()
  79. }
  80. protected onDestroy(): void {
  81. PopManger.instance = null
  82. }
  83. // update (dt) {}
  84. LoadGameScene() {
  85. return new Promise((resolve, reject) => {
  86. console.time('预加载场景耗时')
  87. cc.director.preloadScene("Game", null, () => {
  88. console.timeEnd('预加载场景耗时')
  89. resolve(true)
  90. })
  91. })
  92. }
  93. //懒得写资源管理器了 放在这里吧
  94. LoadAssets<T extends cc.Asset>(path: string): Promise<T> {
  95. return new Promise((resolve, reject) => {
  96. let bundle = cc.assetManager.getBundle("sub");
  97. bundle.load(path, (err, Asset: T) => {
  98. if (err) {
  99. cc.error(`加载${path}失败`)
  100. reject(err)
  101. return
  102. }
  103. resolve(Asset)
  104. })
  105. })
  106. }
  107. //懒得写资源管理器了 放在这里吧
  108. LoadBundle(path: string): Promise<cc.AssetManager.Bundle> {
  109. return new Promise((resolve, reject) => {
  110. cc.assetManager.loadBundle(path, (err, bundle) => {
  111. if (err) {
  112. console.log('加载Bundle失败')
  113. reject(err)
  114. return;
  115. }
  116. resolve(bundle)
  117. });
  118. })
  119. }
  120. loadScene_Game() {
  121. cc.director.loadScene("Game", () => {
  122. HTTPS.Instance.post(NetPost.AddRecord, {}).then((resp) => {
  123. })
  124. })
  125. }
  126. /**
  127. *
  128. * @param Succeed 结果 0失败 1成功
  129. */
  130. GameOver(Succeed: number) {
  131. let typeeee = 0
  132. switch (LocalData.getInstance().getWorkState()) {
  133. case WorkState.引导:
  134. return
  135. case WorkState.上班:
  136. typeeee = 0
  137. break;
  138. case WorkState.加班:
  139. typeeee = 1
  140. break;
  141. default:
  142. break;
  143. }
  144. HTTPS.Instance.post(NetPost.EndThisGam, {
  145. "Type": Succeed,
  146. "Barrier": typeeee
  147. }).then((resp) => {
  148. if (resp.Code == 200) {
  149. Sdk.getInstance().Setkey(resp.Data.WorkingDays, resp.Data.Id)
  150. }
  151. })
  152. }
  153. }