data.global.center.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { EDITOR } from "cc/env";
  2. import get_proxy_trigger from "./data.global.trigger";
  3. export default class GlobalDC {
  4. private static _trigger_: ReturnType<typeof get_proxy_trigger>;
  5. // private static _clock_: ReturnType<typeof get_proxy_clock>;
  6. public static get Trigger(){
  7. return GlobalDC._trigger_;
  8. }
  9. // public static get Clock(){
  10. // return GlobalDC._clock_;
  11. // }
  12. public static init(){
  13. GlobalDC._trigger_ = get_proxy_trigger('global_trigger');
  14. // GlobalDC._clock_ = get_proxy_clock('global_clock', APP_NAME);
  15. // GlobalDC.clockRun();
  16. GlobalDC.listening();
  17. }
  18. private static listening(){
  19. // DataProxy.follow(GlobalDC.Trigger, 'CLICK', (o, v)=>{
  20. // AudioManager.playEffect(AudioManager.EAudio.EF_CLICK);
  21. // }, false);
  22. // let interval_stamp = Date.now();
  23. // let td = 0;
  24. // DataProxy.follow(GlobalDC.Clock, 'current_time', (o, v)=>{
  25. // td = v - interval_stamp;
  26. // interval_stamp = v;
  27. // GlobalDC._interval_call_token_map_.forEach(async item=>{
  28. // if((v - item.timestamp) >= item.interval){
  29. // item.timestamp += item.interval;
  30. // Reflect.apply(item.call, item.that, [td, v]);
  31. // }
  32. // });
  33. // }, false);
  34. // GlobalDC.interval(60 * 1000, (td, now)=>{
  35. // if(mtec.time.sameDay(GlobalDC.Clock.login_time, now)) return void 0;
  36. // GlobalDC.Clock.login_time = now;
  37. // GlobalDC.Trigger.NEW_DAY = now;
  38. // });
  39. }
  40. // private static clockRun(){
  41. // let now = Date.now();
  42. // if(!mtec.time.sameDay(GlobalDC.Clock.login_time, now)){
  43. // GlobalDC.Clock.login_time = now;
  44. // GlobalDC.Trigger.NEW_DAY = now;
  45. // }
  46. // setInterval(()=>GlobalDC.Clock.current_time = Date.now(), 1000/30);
  47. // }
  48. private static _interval_call_token_map_: Map<string, {timestamp: number, interval: number, call: (td: number, now: number)=>any, that?: any}> = new Map();
  49. public static interval(interval: number, call: (td: number, now: number)=>any, thisArg?: any){
  50. let token = mtec.string.randomToken(7, 36, tlkn=>!GlobalDC._interval_call_token_map_.has(tlkn));
  51. GlobalDC._interval_call_token_map_.set(token, {timestamp: Date.now(), interval, call, that: thisArg??null})
  52. return token;
  53. }
  54. public static clearInterval(token: string){
  55. if(!GlobalDC._interval_call_token_map_.has(token)) return void 0;
  56. GlobalDC._interval_call_token_map_.delete(token);
  57. }
  58. }
  59. if(!EDITOR){
  60. GlobalDC.init();
  61. }