gameManager.ts 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. import { _decorator, assetManager, AudioClip, Component, instantiate, Label, Node, Prefab, resources, SpriteFrame, sys } from 'cc';
  2. import { ads_config, server_han_zi_zhao_bu_tong_data, server_mei_nv_zhao_xi_jie_data, server_play_info, server_play_list_data, server_shuang_tu_zhao_bu_tong_data, server_sys_info, server_user_info, unlock_levels, unlock_levels_item } from './data/server_play_list_data';
  3. import { config } from './config';
  4. import { ClientEvent } from './framework/clientEvent';
  5. import { http } from './http/http';
  6. import { StorageManager } from './framework/storageManager';
  7. import { tools } from './tools';
  8. import { AudioManager } from './framework/audioManager';
  9. import { Util } from './framework/util';
  10. import { wait_view } from './wait_view';
  11. const { ccclass, property } = _decorator;
  12. @ccclass('gameManager')
  13. export class gameManager extends Component {
  14. public static g_server_sys_info:server_sys_info = new server_sys_info();
  15. public static g_ads_config:ads_config = new ads_config();
  16. public static g_server_play_list_data:server_play_list_data = new server_play_list_data();
  17. // public static g_server_shuang_tu_zhao_bu_tong_data:server_shuang_tu_zhao_bu_tong_data = new server_shuang_tu_zhao_bu_tong_data();
  18. // public static g_server_han_zi_zhao_bu_tong_data:server_han_zi_zhao_bu_tong_data = new server_han_zi_zhao_bu_tong_data();
  19. // public static g_server_mei_nv_zhao_xi_jie_data:server_mei_nv_zhao_xi_jie_data = new server_mei_nv_zhao_xi_jie_data();
  20. private static uiLayer:Node = null;
  21. private static topLayer:Node = null;
  22. private static waitLayer:Node = null;
  23. public static userInfo:server_user_info = new server_user_info();
  24. public static uiViewList:Map<string,Node> = new Map();
  25. public static topViewList:Map<string,Node> = new Map();
  26. public static user_level_data:unlock_levels = new unlock_levels();
  27. public static PreloadingLevelImgNumber:number = 0;//执行预加载的数量
  28. public static cache:Map<string,Map<string,SpriteFrame>> = new Map();
  29. public static mp3_cache:Map<string,AudioClip> = new Map();
  30. public static test_user_list:string[] = [];
  31. public static _instance: gameManager;
  32. public static isFinishLoad:boolean = false;
  33. public static get instance () {
  34. if (this._instance) {
  35. return this._instance;
  36. }
  37. this._instance = new gameManager();
  38. return this._instance;
  39. }
  40. start() {
  41. }
  42. public static isTestUser(){
  43. for (let index = 0; index < gameManager.test_user_list.length; index++) {
  44. const element = gameManager.test_user_list[index];
  45. if(parseInt(element)==gameManager.userInfo.id){
  46. return true;
  47. }
  48. }
  49. return false;
  50. }
  51. public static init_test_user_list(list:string[]){
  52. gameManager.test_user_list = list;
  53. }
  54. public static init_unlock_levels(){
  55. for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
  56. const element = gameManager.g_server_play_list_data.list[index];
  57. let item:unlock_levels_item = new unlock_levels_item;
  58. item.id = element.id;
  59. item.level = 1;
  60. if(gameManager.user_level_data.list[element.id]){
  61. }else{
  62. if(item.id===config.PLAY_TYPE.YI_QI_ZHAO_CHA||item.id===config.PLAY_TYPE.JI_YI_LI||item.id===config.PLAY_TYPE.DOU_DI_ZHU){
  63. item.is_lock_game_play = 1;
  64. }else{
  65. item.is_lock_game_play = 0;
  66. }
  67. gameManager.user_level_data.list[element.id] = item;
  68. }
  69. }
  70. }
  71. public static update_unlock_levels(){
  72. for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
  73. const element = gameManager.g_server_play_list_data.list[index];
  74. if(element.id===config.PLAY_TYPE.YI_QI_ZHAO_CHA||element.id===config.PLAY_TYPE.JI_YI_LI||element.id===config.PLAY_TYPE.DOU_DI_ZHU){
  75. gameManager.user_level_data.list[element.id].is_lock_game_play = 1;
  76. }
  77. }
  78. }
  79. public static isFinishAllLevel(categoryid:number):boolean{
  80. let item = gameManager.get_cur_level_by_categoryid(categoryid)
  81. if(item.level===gameManager.get_play_level_number(categoryid)){
  82. return true;
  83. }
  84. return false;
  85. }
  86. public static get_play_level_number(categoryid:number):number{
  87. let list = gameManager.g_server_play_list_data.list;
  88. let number = 0;
  89. for (let index = 0; index < list.length; index++) {
  90. if(categoryid===list[index].id){
  91. number = list[index].barrier_number;
  92. break;
  93. }
  94. }
  95. return number;
  96. }
  97. public static get_unlock_levels():string{
  98. if(gameManager.user_level_data.list.length>0){
  99. return JSON.stringify(gameManager.user_level_data.list);
  100. }
  101. return "";
  102. }
  103. public static set_unlock_levels(unlock_levels:string){
  104. gameManager.user_level_data.list = [];
  105. let temp = JSON.parse(unlock_levels);
  106. for (let index = 0; index < temp.length; index++) {
  107. const element = temp[index];
  108. if(element!=null&&element!=undefined){
  109. let item = new unlock_levels_item()
  110. item.id = element.id;
  111. if(item.id===config.PLAY_TYPE.YI_QI_ZHAO_CHA||item.id===config.PLAY_TYPE.JI_YI_LI){
  112. item.is_lock_game_play = 1;
  113. }else{
  114. item.is_lock_game_play = element.is_lock_game_play;
  115. }
  116. item.level = element.level;
  117. item.look_video_number = element.look_video_number!=undefined?element.look_video_number:0;
  118. gameManager.user_level_data.list[item.id] = item;
  119. }
  120. }
  121. }
  122. public static set_unlock_levels_data(item:unlock_levels_item){
  123. gameManager.user_level_data.list[item.id] = item;
  124. }
  125. public static setWaitLayer(node:Node){
  126. gameManager.waitLayer = node;
  127. }
  128. public static sync_data(call_back,sync_data_type:number = config.sync_data_type.ALL){
  129. let form_Data = null;
  130. if(sys.platform===sys.Platform.BYTEDANCE_MINI_GAME){
  131. if(sync_data_type===config.sync_data_type.ALL){
  132. form_Data = {"coin": gameManager.userInfo.coin+"","unlock_levels": gameManager.get_unlock_levels()}
  133. }else if(sync_data_type===config.sync_data_type.COIN){
  134. form_Data = {"coin": gameManager.userInfo.coin+""}
  135. }else if(sync_data_type===config.sync_data_type.LEVELS){
  136. form_Data = {"unlock_levels": gameManager.get_unlock_levels()}
  137. }
  138. }else{
  139. form_Data = new FormData();
  140. if(sync_data_type===config.sync_data_type.ALL){
  141. form_Data.append("coin", gameManager.userInfo.coin+"");
  142. form_Data.append("unlock_levels", gameManager.get_unlock_levels());
  143. }else if(sync_data_type===config.sync_data_type.COIN){
  144. form_Data.append("coin", gameManager.userInfo.coin+"");
  145. }else if(sync_data_type===config.sync_data_type.LEVELS){
  146. form_Data.append("unlock_levels", gameManager.get_unlock_levels());
  147. }
  148. }
  149. http.post(config.api_url.sync_data,form_Data,(_err,c_data)=>{
  150. if(!_err){
  151. let c__data = JSON.parse(c_data);
  152. console.log("c__data",form_Data)
  153. if(c__data.code==config.MSG_CODE.SUCCESS){
  154. // ClientEvent.dispatchEvent(config.EVENT_MSG.ON_CHANGE_COIN_NUMBER);
  155. call_back(true)
  156. }
  157. }else{
  158. if(_err==-1){
  159. call_back(false)
  160. }
  161. }
  162. })
  163. }
  164. public static get_user_coin():number{
  165. return gameManager.userInfo.coin;
  166. }
  167. public static add_coin(coin:number){
  168. gameManager.userInfo.coin+=coin;
  169. gameManager.sync_data((is_sync)=>{},config.sync_data_type.COIN)
  170. }
  171. public static sub_coin(coin:number){
  172. gameManager.userInfo.coin-=coin;
  173. if( gameManager.userInfo.coin<0){
  174. gameManager.userInfo.coin = 0;
  175. }
  176. gameManager.sync_data((is_sync)=>{},config.sync_data_type.COIN)
  177. }
  178. public static showLoading(){
  179. gameManager.hideLoading();
  180. gameManager.addTopView(config.PREFAB_PATH.view_loading,null);
  181. }
  182. public static hideLoading(){
  183. if(gameManager.topViewList.get(config.PREFAB_PATH.view_loading)){
  184. gameManager.topViewList.get(config.PREFAB_PATH.view_loading).removeFromParent();
  185. gameManager.topViewList.set(config.PREFAB_PATH.view_loading,null);
  186. }
  187. }
  188. public static get_cur_level_by_categoryid(categoryid:number):unlock_levels_item{
  189. if(gameManager.user_level_data.list.length<=0){
  190. return null;
  191. }
  192. return gameManager.user_level_data.list[categoryid];
  193. // switch (categoryid) {
  194. // case config.PLAY_TYPE.YI_QI_ZHAO_CHA:
  195. // return gameManager.user_level_data.list[config.PLAY_TYPE.YI_QI_ZHAO_CHA];
  196. // case config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG:
  197. // return gameManager.user_level_data.list[config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG];
  198. // case config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE:
  199. // return gameManager.user_level_data.list[config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE];
  200. // }
  201. }
  202. public static next_level(categoryid:number,call_back):boolean{
  203. let item = gameManager.get_cur_level_by_categoryid(categoryid);
  204. let play_item = gameManager.get_play_list_item_by_categoryid(categoryid);
  205. if( (item.level+1) <= play_item.barrier_number ){
  206. item.level+=1;
  207. gameManager.sync_data((is_sync)=>{
  208. if(is_sync){
  209. gameManager.set_unlock_levels_data(item);
  210. }else{
  211. item.level-=1;
  212. }
  213. call_back(is_sync)
  214. },config.sync_data_type.LEVELS)
  215. return true;
  216. }
  217. return false;
  218. }
  219. public static setUiLayer(node:Node){
  220. gameManager.uiLayer = node;
  221. }
  222. public static getUiLayer(){
  223. return gameManager.uiLayer;
  224. }
  225. public static getTopLayer():Node{
  226. return gameManager.topLayer;
  227. }
  228. public static setTopLayer(node:Node){
  229. gameManager.topLayer = node;
  230. }
  231. public static addUiView(parent_path:string,call_back){
  232. if(gameManager.uiLayer==null){
  233. console.log("gameManager.uiLayer -- null!");
  234. return;
  235. }
  236. gameManager.showWaitView();
  237. resources.load(parent_path, Prefab, (err, prefab) => {
  238. if(err){
  239. console.log("addUiView -- err::",err);
  240. return;
  241. }
  242. let newNode:Node = instantiate(prefab);
  243. newNode.parent = gameManager.uiLayer;
  244. gameManager.uiViewList.set(parent_path,newNode);
  245. gameManager.hideWaitView();
  246. if(call_back!=null){
  247. call_back(newNode);
  248. }
  249. });
  250. }
  251. public static addTopView(parent_path:string,call_back){
  252. if(gameManager.topLayer==null){
  253. console.log("gameManager.topLayer -- null!");
  254. return;
  255. }
  256. gameManager.showWaitView();
  257. resources.load(parent_path, Prefab, (err, prefab) => {
  258. if(err){
  259. console.log("addTopView -- err::",err);
  260. return;
  261. }
  262. let newNode:Node = instantiate(prefab);
  263. gameManager.topViewList.set(parent_path,newNode);
  264. newNode.parent = gameManager.topLayer;
  265. gameManager.hideWaitView();
  266. if(call_back!=null){
  267. call_back(newNode);
  268. }
  269. });
  270. }
  271. public static showWaitView(opacity:number = 0,text:string=""){
  272. gameManager.waitLayer.active = true;
  273. gameManager.waitLayer.getComponent(wait_view).showView(opacity,text)
  274. }
  275. public static hideWaitView(){
  276. gameManager.waitLayer.active = false;
  277. }
  278. public static set_server_user_data(data){
  279. gameManager.userInfo = data;
  280. if(gameManager.userInfo.unlock_levels!=""){
  281. gameManager.set_unlock_levels(gameManager.userInfo.unlock_levels);
  282. }
  283. console.log("set_server_user_data::",data);
  284. }
  285. public static set_server_play_list_data(data:server_play_info){
  286. gameManager.g_server_play_list_data.list = data.wf_list;
  287. gameManager.g_server_sys_info = data.sys_info;
  288. gameManager.g_ads_config = data.ads_config;
  289. ClientEvent.dispatchEvent(config.EVENT_MSG.ON_INIT_GAME_LIST);
  290. console.log("set_server_play_list_data::",data);
  291. }
  292. public static get_play_list_item_by_categoryid(categoryid:number){
  293. for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
  294. const element = gameManager.g_server_play_list_data.list[index];
  295. if(element.id===categoryid){
  296. return element;
  297. }
  298. }
  299. return null;
  300. }
  301. public static PreloadingLevelImg(finish_call_back){
  302. if(gameManager.g_server_play_list_data.list.length<=0){
  303. return
  304. }
  305. if(gameManager.PreloadingLevelImgNumber<=0){
  306. let count = 0;
  307. let call_back = ()=>{
  308. count++;
  309. if(count>=gameManager.PreloadingLevelImgNumber){
  310. gameManager.PreloadingLevelImgNumber = 0;
  311. finish_call_back()
  312. }
  313. }
  314. for (let index = 0; index < gameManager.g_server_play_list_data.list.length; index++) {
  315. const element = gameManager.g_server_play_list_data.list[index];
  316. if(element.id===config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG||element.id===config.PLAY_TYPE.YI_QI_ZHAO_CHA){
  317. let item = gameManager.get_cur_level_by_categoryid(element.id);
  318. if((item.level+1)<=element.barrier_number){
  319. let key = `${element.id}_${item.level+1}`;
  320. // let str = StorageManager.instance.getGlobalData(key);
  321. if(!gameManager.cache.get(`${item.level+1}_${element.id}`)){
  322. gameManager.PreloadingLevelImgNumber++;
  323. gameManager.loadLevelImg(element.id,item.level+1,call_back)
  324. }
  325. }
  326. }
  327. }
  328. }
  329. }
  330. public static loadLevelImg(category_id,level,call_back){
  331. let key = `${category_id}_${level}`;
  332. let list:Map<string,SpriteFrame> = new Map()
  333. http.get(config.static_url.levels_info(category_id,level),(err,data)=>{
  334. if(!err){
  335. let _data = JSON.parse(data)
  336. if(_data.code===config.MSG_CODE.SUCCESS){
  337. let data = _data.content
  338. switch(category_id){
  339. case config.PLAY_TYPE.YI_QI_ZHAO_CHA:
  340. let img_count = 0;
  341. let img_call_back = ()=>{
  342. if(img_count>=2){
  343. console.log("key",key)
  344. StorageManager.instance.setGlobalData(key,"1")
  345. gameManager.cache.set(`${level}_${category_id}`,list)
  346. call_back();
  347. }
  348. }
  349. tools.loadRemoteImg(data.img1,(sf:SpriteFrame)=>{
  350. sf.addRef();
  351. list.set(data.img1,sf);
  352. img_count++;
  353. img_call_back();
  354. })
  355. tools.loadRemoteImg(data.img2,(sf)=>{
  356. sf.addRef();
  357. list.set(data.img2,sf);
  358. img_count++;
  359. img_call_back();
  360. })
  361. break;
  362. case config.PLAY_TYPE.HAN_ZI_ZHAO_BU_TONG:
  363. let img_count_font = 0;
  364. let img_call_back_font = ()=>{
  365. if(img_count_font>=3){
  366. console.log("key",key)
  367. gameManager.cache.set(`${level}_${category_id}`,list)
  368. StorageManager.instance.setGlobalData(key,"1")
  369. call_back();
  370. }
  371. }
  372. tools.loadRemoteImg(data.default_img,(sf)=>{
  373. sf.addRef();
  374. list.set(data.default_img,sf);
  375. img_count_font++;
  376. img_call_back_font();
  377. })
  378. tools.loadRemoteImg(data.find_img,(sf)=>{
  379. sf.addRef();
  380. list.set(data.find_img,sf);
  381. img_count_font++;
  382. img_call_back_font();
  383. })
  384. tools.loadRemoteImg(data.d_img,(sf)=>{
  385. sf.addRef();
  386. list.set(data.d_img,sf);
  387. img_count_font++;
  388. img_call_back_font();
  389. })
  390. break;
  391. case config.PLAY_TYPE.MEI_NV_ZHAO_XI_JIE:
  392. let img_count_component = 0;
  393. let img_call_back_component = ()=>{
  394. if(img_count_component>=data.component.length+1){
  395. console.log("key",key)
  396. gameManager.cache.set(`${level}_${category_id}`,list)
  397. StorageManager.instance.setGlobalData(key,"1")
  398. call_back();
  399. }
  400. }
  401. tools.loadRemoteImg(data.img,(sf)=>{
  402. sf.addRef();
  403. list.set(data.img,sf);
  404. img_count_component++;
  405. img_call_back_component();
  406. })
  407. for (let index = 0; index < data.component.length; index++) {
  408. const element = data.component[index];
  409. tools.loadRemoteImg(element.img,(sf,id)=>{
  410. sf.addRef();
  411. list.set(element.img,sf);
  412. img_count_component++;
  413. img_call_back_component();
  414. },element.id);
  415. }
  416. break;
  417. }
  418. }
  419. }
  420. })
  421. }
  422. //播放获取金币
  423. public static playAddCoinSound( loop:boolean = false){
  424. let path = gameManager.g_server_sys_info.sys_gain_coin_music;
  425. AudioManager.instance.playSound(path,loop)
  426. }
  427. //通用的关闭按钮点击音效
  428. public static playCloseBtnSound( loop:boolean = false){
  429. let path = gameManager.g_server_sys_info.sys_click_button_music;
  430. AudioManager.instance.playSound(path,loop)
  431. }
  432. //通用的按钮点击音效
  433. public static playBtnSound( loop:boolean = false){
  434. let path = gameManager.g_server_sys_info.sys_close_button_music;
  435. AudioManager.instance.playSound(path,loop)
  436. }
  437. //每个玩法的胜利音效
  438. public static playWinSoundByCategoryId(id:number, loop:boolean = false){
  439. let data = gameManager.get_play_list_item_by_categoryid(id)
  440. console.log("data.wf_fail_music",data.wf_fail_music)
  441. if(data.wf_victory_music!=null&&data.wf_victory_music!=""&&data.wf_victory_music!=undefined){
  442. let paht = data.wf_victory_music;
  443. AudioManager.instance.playSound(paht,loop)
  444. }
  445. }
  446. //每个玩法的失败音效
  447. public static playFailSoundByCategoryId(id:number, loop:boolean = false){
  448. let data = gameManager.get_play_list_item_by_categoryid(id);
  449. if(data.wf_fail_music!=null&&data.wf_fail_music!=""){
  450. let paht = data.wf_fail_music;
  451. AudioManager.instance.playSound(paht,loop)
  452. }
  453. }
  454. //每个玩法的正确音效
  455. public static playRightSoundByCategoryId(id:number, loop:boolean = false){
  456. let paht = gameManager.get_play_list_item_by_categoryid(id).wf_right_click_music;
  457. AudioManager.instance.playSound(paht,loop)
  458. }
  459. //每个玩法的错误音效
  460. public static playErrSoundByCategoryId(id:number, loop:boolean = false){
  461. let paht = gameManager.get_play_list_item_by_categoryid(id).wf_wrong_click_music;
  462. AudioManager.instance.playSound(paht,loop)
  463. }
  464. //每个玩法的背景音乐
  465. public static playGamePlayMusicByCategoryId(id:number, loop:boolean = false){
  466. let path = gameManager.get_play_list_item_by_categoryid(id).wf_piped_music;
  467. AudioManager.instance.playMusic(path,loop)
  468. }
  469. //主页的背景音乐
  470. public static playMainMusic(loop:boolean = false){
  471. let path = gameManager.g_server_sys_info.sys_piped_music;
  472. AudioManager.instance.playMusic(path,loop)
  473. }
  474. public static loadSysMusic(call_back){
  475. let count = 0;
  476. let call = ()=>{
  477. count++;
  478. if(count>=3){
  479. call_back()
  480. }
  481. }
  482. assetManager.loadRemote(gameManager.g_server_sys_info.sys_click_button_music, (err: any, clip: AudioClip)=> {
  483. clip.addRef()
  484. call()
  485. });
  486. assetManager.loadRemote(gameManager.g_server_sys_info.sys_close_button_music, (err: any, clip: AudioClip)=> {
  487. clip.addRef()
  488. call()
  489. });
  490. assetManager.loadRemote(gameManager.g_server_sys_info.sys_piped_music, (err: any, clip: AudioClip)=> {
  491. clip.addRef()
  492. call()
  493. });
  494. assetManager.loadRemote(gameManager.g_server_sys_info.sys_gain_coin_music, (err: any, clip: AudioClip)=> {
  495. clip.addRef()
  496. call()
  497. });
  498. }
  499. public static loadPlayMusicByCategoryId(id,call_back){
  500. let count = 0;
  501. let call = ()=>{
  502. count++;
  503. if(count>=5){
  504. call_back()
  505. }
  506. }
  507. let paly_item = gameManager.get_play_list_item_by_categoryid(id);
  508. if(!gameManager.mp3_cache.get(paly_item.wf_fail_music)){
  509. assetManager.loadRemote(paly_item.wf_fail_music, (err: any, clip: any)=> {
  510. clip.addRef()
  511. gameManager.mp3_cache.set(paly_item.wf_fail_music,clip)
  512. call()
  513. });
  514. }else{
  515. call()
  516. }
  517. if(!gameManager.mp3_cache.get(paly_item.wf_victory_music)){
  518. assetManager.loadRemote(paly_item.wf_victory_music, (err: any, clip: any)=> {
  519. clip.addRef()
  520. call()
  521. });
  522. }else{
  523. call()
  524. }
  525. if(!gameManager.mp3_cache.get(paly_item.wf_right_click_music)){
  526. assetManager.loadRemote(paly_item.wf_right_click_music, (err: any, clip: any)=> {
  527. clip.addRef()
  528. gameManager.mp3_cache.set(paly_item.wf_right_click_music,clip)
  529. call()
  530. });
  531. }else{
  532. call()
  533. }
  534. if(!gameManager.mp3_cache.get(paly_item.wf_wrong_click_music)){
  535. assetManager.loadRemote(paly_item.wf_wrong_click_music, (err: any, clip: any)=> {
  536. clip.addRef()
  537. gameManager.mp3_cache.set(paly_item.wf_wrong_click_music,clip)
  538. call()
  539. });
  540. }else{
  541. call()
  542. }
  543. if(!gameManager.mp3_cache.get(paly_item.wf_piped_music)){
  544. assetManager.loadRemote(paly_item.wf_piped_music, (err: any, clip: any)=> {
  545. clip.addRef()
  546. gameManager.mp3_cache.set(paly_item.wf_piped_music,clip)
  547. call()
  548. });
  549. }else{
  550. call()
  551. }
  552. }
  553. public static decRefSf(categoryid:number){
  554. let levels_item = gameManager.get_cur_level_by_categoryid(categoryid);
  555. gameManager.cache.forEach((v,k)=>{
  556. if(v!=null){
  557. let l = k.split("_");
  558. let level = parseInt(l[0]);
  559. let _categoryid = parseInt(l[1]);
  560. if(_categoryid==categoryid){
  561. if(level<levels_item.level){
  562. v.forEach((v1,k1)=>{
  563. v1.decRef()
  564. })
  565. gameManager.cache.set(`${level}_${_categoryid}`,null);
  566. }
  567. }
  568. }
  569. })
  570. }
  571. public addCoinNumber(obj:Component,addnum:number,lab_number:Label,cur_num:number,call_back,Spacer=""){
  572. let _num = 0;
  573. let multiple = (addnum/100)<1?1:addnum/100;
  574. let schedule_num = 0.01/multiple;
  575. obj.schedule( ()=>{
  576. _num+=(1*multiple);
  577. _num = Math.floor(_num);
  578. if(_num>=addnum){
  579. lab_number.string = Spacer+ (cur_num+_num);
  580. obj.unscheduleAllCallbacks()
  581. call_back();
  582. return
  583. }
  584. lab_number.string = Spacer + (cur_num+_num);
  585. },schedule_num)
  586. }
  587. public static get_reward_number():number{
  588. let list = gameManager.g_ads_config.reward.split(",");
  589. let start = parseInt(list[0]);
  590. let end = parseInt(list[1]);
  591. let reward = Util.getRandomInt(start,end);
  592. return reward;
  593. }
  594. public static get_deouble_reward_number():number{
  595. let list = gameManager.g_ads_config.reward.split(",");
  596. let start = parseInt(list[0]);
  597. let end = parseInt(list[1]);
  598. let reward = Util.getRandomInt(start,end);
  599. list = gameManager.g_ads_config.deouble_reward.split(",");
  600. start = parseInt(list[0]);
  601. end = parseInt(list[1]);
  602. reward *= Util.getRandomInt(start,end);
  603. return reward;
  604. }
  605. // public static set_server_han_zi_zhao_bu_tong_data(data){
  606. // gameManager.g_server_han_zi_zhao_bu_tong_data.list = data;
  607. // console.log("set_server_han_zi_zhao_bu_tong_data::",data);
  608. // }
  609. // public static set_server_mei_nv_zhao_xi_jie_data(data){
  610. // gameManager.g_server_mei_nv_zhao_xi_jie_data.list = data;
  611. // console.log("set_server_mei_nv_zhao_xi_jie_data::",data);
  612. // }
  613. public static getUserId(){
  614. let user_id ="";
  615. try{
  616. if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME){
  617. user_id = tt.getStorageSync(config.USER_ID)
  618. }else{
  619. user_id = sys.localStorage.getItem(config.USER_ID)
  620. }
  621. }catch(e){
  622. console.log("sss")
  623. }
  624. return user_id;
  625. }
  626. public static setUserId(userid:string){
  627. if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME){
  628. tt.setStorageSync(config.USER_ID,userid)
  629. }else{
  630. sys.localStorage.setItem(config.USER_ID,userid)
  631. }
  632. }
  633. }