gameManager.ts 29 KB

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